§1. Вводный. Программы, языки и среды

Программы = алгоритмы + структуры данныхНиклаус Вирт

Алгоритм

Жизнедеятельность ставит перед человеком необходимость решения задач совершенно различного уровня сложности. На бытовом уровне мы составляем несложные алгоритмы собственных действий (расписание урочной деятельности, планирование уроков, рецепты приготовления пищи, руководства по сборке мебели и проч.). В профессиональной или научной работе ставятся задачи иного масштаба. Сложность решения таких задач требует привлечения огромных ресурсов и командной работы, а следовательно, и нетривиальных алгоритмов для их решения. Что же такое алгоритм?
Классическое («школьное») определение звучит так:
«Алгоритм — это понятное и точное предписание исполнителю (алгоритма) выполнить конечный порядок действий, приводящий от исходных данных к искомому результату».
Исполнитель, выполняющий алгоритм, называется формальным исполнителем. Такие исполнители «не задумываются о смысле команд». Их назначение — выполнить команду алгоритма без рассуждений или отказаться от выполнения, в случае, когда это сделать невозможно. Выполнению алгоритма также способствует (или препятствует) среда, в которой находится исполнитель алгоритмов. Среда, в которой исполнитель может выполнить алгоритм, называется системными требованиями. Слово «алгоритм» восходит к (латинизированному) имени великого средневекового персидского мыслителя и ученого Абу́ Абдулла́х Муха́ммад ибн Муса́ аль-Хорезми́ (ум. в 850 г.).

Программирование

Слово программирование происходит от слова программа (от греч. προ — пред, греч. γράμμα — запись). Что такое программа? Программа — это алгоритм составленный на языке исполнителя. Мы говорим о программах применительно к алгоритмам составленным для электронно-вычислительных машин (ЭВМ) и, в частности, для компьютера.
Программирование как научная дисциплина сформировалась в недрах математики. Разнообразные теоретические проблемы математики и ускорение развития физики и техники в XX в. поставили на повестку дня точное определение понятия алгоритма. Но как оказалось впоследствии, не все гипотезы связанные с алгоритмами можно доказать исключительно методами математики. Это привело к появлению целого ряда направлений теоретической информатики среди которых теория алгоритмов, алгоритмы и структуры данных, теория языков программирования.
На основе результатов и достижений теоретической информатики образовались новые научные направления — программная инженерия (разработка и сопровождение ПО), вычислительная математика, вычислительная физика, вычислительная химия, биоинформатика.
В широком смысле под программированием понимают весь спектр деятельности, связанный с созданием программ и поддержанием их в рабочем состоянии. Цикл создания программы включает: анализ и постановка задачи, проектирование программы, построение алгоритмов, разработка структур данных, написание текстов программ, отладка и тестирование программ (испытания программ), документирование, настройка (конфигурирование), доработка и сопровождение.
Человек осуществляющий этот род деятельности называется программистом. Большая часть работы программистов связана с написанием исходного кода (текста программ на языке программирования), тестированием и отладкой программ в системах программирования (см. ниже).

Языки программирования

Бытует мнение, что язык программирования — это один из 4 языков (помимо языка общения, иностранного языка и языка математики), который обязан освоить каждый современный человек. Язык программирования — это формальный язык для составления программ. Назначение языка программирования — упростить ввод команд на машинном языке. Машинный язык — это система команд, которая интерпретируется непосредственно процессором и представлена в двоичном (бинарном) коде. Языки высокого уровня (абстракции) близки к естественным языкам и программист легко может прочитать последовательность команд алгоритма. Существует большое разнообразие языков программирования высокого уровня, которые развиваются не одно десятилетие. Все они испытали взаимное влияние друг на друга, тем не менее, их дизайн может существенно различаться.
Каждый язык имеет свой синтаксис (правила составления выражений языка) и семантику (смысл таких выражений). Язык программирования использует специальные инструкции и операции для определения и манипулирования данными и структурами данных, управления вычислительным процессом. Можно выделить три принципиально разных способа реализации языков программирования: компиляция, интерпретация и встраивание.
Компиляция означает, что исходный код (текст программы на языке программирования) сперва преобразуется в машинный код специальной программой, называемой компилятором — в результате получается исполнимый модуль, который затем может быть запущен на исполнение как отдельная программа.
Интерпретация означает, что исходный код компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Для выполнения байт-кода используется интерпретатор, хотя отдельные его части (для ускорения работы программы) могут быть транслированы в машинный код непосредственно во время выполнения программы. Таким образом, интерпретация требует наличия программы-интерпретатора без которого исходный код (в данных языках называется скриптом) не может быть выполнен.
Для компиляции и интерпретации присущи как достоинства, так и недостатки. Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем, при каждом изменении текста программы требуется её перекомпиляция, что замедляет процесс разработки. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.
Интерпретируемые языки позволяют запускать программы сразу же после изменения, причём на разных типах машин и операционных системах без дополнительных усилий. Но ценой этого является их низкое быстродействие.

Язык программирования Python

Язык программирования, который мы будем изучать в данном разделе — не просто язык высокого уровня. Абстракция этого языка доведена до высшей степени, что позволило создать язык с красивым, простым и лаконичным синтаксисом. Этим языком является — Python (Питон).
Дизайн языка Python построен на основе объектно-ориентированной модели программирования. Но в этом языке поддерживаются и многие другие стили (парадигмы) программирования. Python является интерпретируемым языком. Для запуска программ на языке python требуется компилятор языка для соответствующей платформы. Язык распространяется свободно, на применение языка не накладывается никаких ограничений.
Python имеет множество привлекательных сторон, прежде всего — это богатая стандартная библиотека. В ней имеются средства (модули) для работы с сетевыми протоколами, операционной системой, базами данных, мультимедийными форматами, архивами и проч.
Как и все интерпретируемые языки, Python не предназначен для вычислительных задач в которых важна скорость. Когда необходимо реализовать быстрые вычисления, то создаются модули на языках C/C++, например, с помощью инструмента Boost.Python. Причина такого подхода ясна — на Питоне можно быстро создавать сложные приложения. Помимо стандартных средств для работы с массивами, существует библиотека NumPy, позволяющая производить быстрые вычисления с массивами, не уступающие по скорости работы компилируемым языкам.

Сферы применения Python
  • В первую очередь python широко используется в системном программировании — на этом языке написано множество утилит для OC Linux. Питон удобно использовать и в системном администрировании.
  • В прикладном программировании python используется, прежде всего, как язык для написания сценариев (и плагинов). Примерами таких проектов являются такие популярные программы как GIMP, Blender и LibreOffice.
  • С Python поставляется библиотека tkinter на основе Tcl/Tk для создания кроссплатформенных программ с графическим интерфейсом. Существуют расширения, позволяющие использовать все основные библиотеки графических интерфейсов — wxPython, PyGTK, PyQt и другие, позволяющие писать программы с оконным интерфейсом.
  • Математический аппарат Питона очень широкий. Существует такой тип, как комплексное число, очень удобные типы для работы с действительными числами и дробями. А длина целого числа неограниченно большая. Это привело к тому, что язык приобрел большую популярность в научной среде, в экономике и бизнесе. Python с пакетами NumPy, SciPy и MatPlotLib активно используется как универсальная среда для научных расчётов в качестве замены распространённым специализированным коммерческим пакетам Matlab, IDL и другим. Библиотека Astropy — популярный инструмент для астрономических расчётов.
  • Простой и лаконичный синтаксис, естественно, сделал Питон первым языком программирования для учащихся школ и студентов.
  • Питон как скриптовый язык широко используется в Web-разработке. Питон используют такие гиганты Web-индустрии как Dropbox, Google, Facebook, Instagram и Yandex.

Первая программа

Исходный текст программы — это текстовый файл. Исходные тексты (“исходники”) программ на языке Python имеют расширение .py. Запустить такую программу на выполнение можно только из консоли. Выполним следующий алгоритм.

  1. Создайте в корне вашей домашней директории папку с именем, например, py_project. С помощью «не очень» простого текстового редактора Gedit создайте файл pro1.py. Это можно сделать в консоли выполнив следующие команды:
    [user@host ~]$ mkdir py_project
    [user@host ~]$ cd py_project
    [user@host py_project]$ gedit pro1.py
  2. Наберите в редакторе (поскольку вы задали расширение файла .py, то будет осуществляться подсветка синтаксиса python) следующий код:
    Программа 1.1

    #!/usr/bin/python3
    print("Привет, Мир!")
    

    и сохраните файл. Файл теперь можно закрыть.

  3. Для запуска программы необходимо выполнить следующую команду:
    [user@host py_project]$ python3 pro1.py
    Привет, Мир!

    Следующей строкой в консоли появится результат работы программы символьная строка «Привет, Мир!».
    Примечание. Если файл сделать исполнимым, то программу можно запустить по имени файла. Для этого выполните последовательность команд:

    [user@host py_project]$ chmod +x pro1.py
    [user@host py_project]$ ./pro1.py

Интегрированные среды разработки

Программировать в таком формате крайне неудобно, особенно если создается проект в котором несколько файлов, модулей или пакетов. Интегрированные среды разработки (Integrated development environment — IDE) предоставляют набор удобных инструментов для быстрого написания программного кода. Они включают в себя, помимо редактора кода, средства работы с компилятором и отладчиком, интеграцию с системами управления версиями, конструкторы GUI и многое другое. Встроенные редакторы обладают возможностью подсветки синтаксиса, автодополнения, навигации, контекстной помощи по коду и рефакторинга (проектирование и переработка кода). Python поставляется с интегрированной средой IDLE («айдл»). Это довольно простая среда с минимальным набором инструментов, созданная с помощью графической библиотеки TKinter. Эта среда обладает встроенной оболочкой для работы в интерактивном режиме (Python Shell), а также редактором программного кода, с упомянутыми ранее функциями, возможностью использования отладчика и запуска приложений (в режиме запуска модулей). Запустить IDLE можно следующей командой:

[user@host ~]$ idle3

Помимо IDLE вы можете использовать и другие среды, такие как Spyder, Geany и PyCharm Community Edition. IDE PyCharm и IDLE допускаются на Всероссийской олимпиаде школьников по программированию.
Для данного урока использовались, преимущественно, материалы википедии.

Ссылки
  1. Язык программирования
  2. Алгоритм
  3. Python
  4. Информатика
◄ Это первый урок раздела | ▲ Содержание | Следующий урок ►
Print Friendly, PDF & Email

Comments are closed