Для удобной разработки программ существуют специальные средства их создания, — системы (среды) программирования, которые обеспечивают весь цикл работы с программой — от ее разработки до выполнения и получения необходимых результатов.
Система программирования — это комплекс программных средств, предназначенных для автоматизации процесса подготовки и выполнения программ пользователя.
Назначение и состав систем программирования
Рассмотрим основные составляющие системы программирования:
- Редактор текста
- Язык программирования
- Библиотека подпрограмм
- Редактор связей (компоновщик)
- Транслятор
- Отладчик
Для сознательного понимания назначения составляющих системы программирования опишем этапы процесса разработки программы, связанные с использованием компьютера.
Редактор исходного кода
Вводим текст разработанной программы, которую называют исходным кодом, в компьютер и храним в памяти. Для этого система программирования имеет редактор текста, который обеспечивает ввод и редактирование исходного кода.
Компиляция и интерпретация
После введения программы и исправления ошибок, которые могли произойти во время ввода, осуществляется преобразование программы с языка программирования высокого уровня в двоичный код.
Такое преобразование осуществляется с помощью транслятора программ.
Различают два типа трансляторов: компиляторы и интерпретаторы.
В процессе интерпретации исходных текстов программ каждая команда (инструкция) последовательно превращается в двоичный код и сразу выполняется — на экране высвечивается результат ее выполнения. После завершения одной команды выполняется следующая и так далее до последней команды. Но результат преобразования не сохраняется, и каждый запуск программы начинается сначала.
В процессе компиляции осуществляется преобразование всего текста программного кода в двоичный код. Полученную после компиляции программу называют объектным модулем. Такая программа еще не готова к выполнению.
Исходный код обычно содержит ссылки на другие модули (подпрограммы), которые содержатся в библиотеке подпрограмм (например, модуль вычисления квадратного корня). Таким образом, к программному модуля нужно добавить коды необходимых подпрограмм, чтобы подготовить программу для исполнения.
Компилируемая программы выполняются быстрее интерпретируемых. Режим интерпретации нуждается в дополнительной основной памяти, поскольку интерпретатор должен все время храниться вместе с кодом. Но интерпретация в работе удобнее. Особенно для программистов, которые только начинают работать с системами программирования, так контролируется результат каждой команды.
Компоновка
После компиляции компоновщик (редактор связей) «склеивает» отдельные двоичные модули в единую программу, которая называется исполняемой программой. Этот процесс представлены на схеме:
Исходный код программы -> компилятор -> объектный модуль -> библиотека подпрограмм -> редактор связей -> выполняемая программа
Для дальнейшего выполнения программного кода, компилятор не нужен. Итак, после компиляции программа представлена двоичными символами 1 и 0 и готова к исполнению на компьютере.
Отладка и тестирование
Полученная программа, даже если она выполняется, не гарантирует, что нет логических ошибок. Она может выполняться, но результат исполнения может быть неправильным. Поэтому нужно провести тестирование (испытания) программы на предмет выявления и устранения в ней логических ошибок.
Тестирование — достаточно ответственный этап. В крупных IT-компаниях над разработкой программ, которые называют проектами, работают десятки и даже сотни программистов разных направлений. Одни из них разрабатывают проекты, другие занимаются тестированием программ, экономическим обоснованием и тому подобное.
На этом этапе применяется отладчик программ, который позволяет пошагово анализировать программу. Отладчик позволяет выполнять трассировку программы, устанавливать и удалять контрольные точки в программах, условия приостановления выполнения программы и тому подобное.
Создание переносимых программ
Описанный выше процесс разработки программ является классическим для процедурных языков программирования. Для программ, разработанных языком ООП, есть отличия. Их сущность заключается в том, что после компиляции создается не машинный, а промежуточный код, так называемый байт-код. С помощью специального программного обеспечения он затем превращается в машинный.
Такой подход обусловлен тем, что в Интернете свободно перемещаются данные и программы (апплеты — небольшие программы, предназначенные для передачи через Интернет и выполнения в браузере, совместимом с языком программирования). Их нужно защитить от вирусов и других вредоносных программ, а также реализовать переносимость программ.
Под переносимостью понимают возможность загрузки и выполнения апплета на компьютерах с любым типом процессора, любой операционной системой и браузером, подключен к Интернету. Именно эти проблемы и позволяет решить байт-код.
Понятно, что использование любого промежуточного кода, в том числе и байт-кода, снижает скорость выполнения программ и требует дополнительных аппаратных средств. Впрочем, эти потери незначительны по сравнению с полученным выигрышем. Если бы ООП-программа сразу компилировалась в машинный код, то для каждого компьютера со своим типом процессора необходимо было бы иметь отдельную версию той самой программы, что экономически крайне невыгодно.
Иногда используются так называемые динамические компиляторы. Их сущность заключается в том, что байт-код компилируется в машинный код не весь сразу, а отдельными фрагментами, по мере необходимости. Другие части кода могут выполняться в режиме интерпретации. Тем самым достигается высокая эффективность работы с кодом.
Примеры систем программирования
Системы (среды) программирования часто именуются по названию языка, например среда Pascal, среда Delphi. Иногда название системы содержит префикс, указывающий на разработчика среды: название системы Turbo-C означает, что ее разработчиком является фирма Borland.
Сегодня все чаще используются интегрированные среды программирования, которые обеспечивают работу с несколькими языками. Такими системами являются, например, IntelliJ IDEA, Eclipse. Вариант Ultimate Edition системы IDEA обеспечивает работу с языками программирования Java, PHP, Python.
Некоторые системы программирования поддерживают как режим интерпретации, так и режим компиляции программ.
Далее, в процессе описания языка программирования Python, мы будем применять среду IDLE.