"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Система программирования — набор инструментов, с помощью которых создают, проверяют и запускают программы. Она включает редактор кода, транслятор, средства отладки, запуска и справочную систему. Исходный текст должен быть преобразован в форму, понятную процессору: это делает компилятор или интерпретатор. При работе с компилятором могут понадобиться объектный код и компоновщик, соединяющий программу с библиотеками. Выбор системы зависит от языка и способа выполнения программы.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Система программирования — совокупность программных средств для создания, отладки и выполнения программ. Она помогает написать исходный код, обнаружить ошибки, преобразовать код и запустить результат. Благодаря этому программисту не приходится отдельно искать инструменты для каждого этапа.
Транслятор — программа, которая переводит исходный текст с языка программирования в другую форму. Такой перевод нужен потому, что процессор понимает машинные команды, а не записи вроде условий и циклов. Результатом может быть машинный, объектный или иной целевой код.
Компилятор — транслятор, заранее переводящий программу целиком в машинный или другой целевой код. После этого подготовленный код можно запускать без нового перевода исходного текста. Компиляция удобна, когда программу планируют многократно использовать.
Интерпретатор — программа, которая во время работы анализирует команды исходной программы и сразу выполняет их. Такой способ позволяет быстрее проверять отдельные изменения и получать результат по ходу запуска. Отдельный исполняемый файл при этом обычно не создаётся.
Исходный текст нельзя непосредственно выполнить процессору, потому что он записан с помощью слов, символов и правил языка программирования. Процессор работает с машинными командами, представленными в форме, которую понимает конкретная вычислительная система. Поэтому между текстом программы и её выполнением нужен транслятор, преобразующий записи в подходящий код.
При компиляции транслятор обрабатывает программу до запуска, проверяет её и создаёт объектный либо другой целевой код. Если исходный текст состоит из нескольких модулей или обращается к библиотекам, одного перевода недостаточно. Компоновщик соединяет полученные части и нужные библиотечные модули, формируя программу, которую можно запустить.
При интерпретации команды анализируются и выполняются во время запуска, поэтому отдельный исполняемый файл обычно не появляется. Такой подход удобен для обучения и быстрой проверки изменений: не нужно каждый раз ждать полного перевода. Однако повторное выполнение может требовать нового анализа исходного текста.
Редактор кода, средства запуска, отладки и справочная система объединяются в среде разработки. Это уменьшает число отдельных действий: код можно написать, запустить, остановить и проверить в одном приложении. Отладчик помогает выполнять программу по шагам и наблюдать значения переменных, когда простой просмотр текста не даёт ответа.
Системы программирования различаются поддерживаемыми языками, способом выполнения программ и набором средств разработки. Одни ориентированы на получение быстрого машинного кода, другие — на удобство экспериментов и интерактивной работы. Поэтому при выборе учитывают задачу, используемый язык, библиотеки и доступные инструменты проверки.
| Свойство | Компилятор | Интерпретатор |
|---|---|---|
| Когда выполняется перевод | До запуска программы, обычно целиком | Во время запуска, по мере обработки команд |
| Что получается после перевода | Объектный, машинный или другой целевой код | Обычно отдельный исполняемый файл не создаётся |
| Как запускается программа | Запускается подготовленный код, иногда после компоновки | Интерпретатор читает и выполняет исходный текст |
| Когда обнаруживаются ошибки | Многие ошибки — до запуска, остальные во время работы | При достижении соответствующей команды во время работы |
| Особенности повторного запуска | Перевод обычно не нужен, если исходный код не изменился | Анализ команд обычно повторяется при новом запуске |
Таблицу удобно использовать, если нужно быстро определить способ выполнения программы по нескольким признакам. Сначала сравните момент перевода и результат, а затем проверьте особенности запуска и поиска ошибок. Нельзя делать вывод только по скорости: на неё влияют язык, реализация и особенности самой программы.
Ученик написал программу и хочет узнать, почему она не запускается. Нужно определить, какие средства системы программирования помогут найти ошибку. Здесь важно отличить сообщение транслятора от самостоятельного поиска причины в отладчике.
Ответ: сообщение транслятора помогает найти ошибки записи и перевода, а отладчик — ошибки выполнения и логики уже запускаемой программы.
Для двух языков указано, что один переводится в исполняемый файл до запуска, а другой выполняется команду за командой. Требуется определить способы выполнения. Признаки прямо указывают, когда происходит перевод и что используется при запуске.
Ответ: первый язык выполняется скомпилированным способом, второй — интерпретируемым.
Программа использует библиотечные модули, поэтому нужно описать путь от исходного текста до запуска. Простого перевода текста может быть недостаточно: отдельные функции находятся в подключаемых компонентах. Последовательность действий показывает, где появляется готовая программа.
Ответ: исходный текст проходит трансляцию, затем объектный код компонуется с библиотеками, после чего готовая программа запускается.
Ошибка: считать компилятор и интерпретатор языками программирования. Так думают, потому что названия часто употребляют рядом с названиями языков. Проверьте себя: язык задаёт правила записи, а компилятор или интерпретатор обрабатывает текст по этим правилам.
Ошибка: полагать, что компиляция всегда сразу создаёт готовый исполняемый файл. Такое представление не учитывает объектный код, библиотеки и работу компоновщика. Уточните, какой результат получен после перевода и потребовалась ли ещё сборка.
Ошибка: утверждать, что интерпретатор заранее переводит всю программу. Обычно он анализирует и выполняет команды во время запуска, поэтому ошибка может проявиться только при достижении конкретной команды. Проверьте, создаётся ли отдельный исполняемый файл до старта.
Ошибка: считать среду разработки языком программирования. Путаница возникает потому, что в ней пишут код и запускают программы. Проверьте себя: среда разработки — набор инструментов, а язык — система правил и конструкций исходного текста.
Чем система программирования отличается от языка программирования?
Язык программирования задаёт правила записи команд и конструкций программы. Система программирования — это набор инструментов, которые позволяют писать, переводить, отлаживать и запускать код на этом языке.
Обязательно ли компилятор создаёт исполняемый файл?
Нет. Компилятор может создать объектный или другой целевой код, а готовый исполняемый файл появится после компоновки с библиотеками и другими модулями.
Почему интерпретируемая программа может запускаться медленнее?
При запуске интерпретатор обычно анализирует команды и выполняет их во время работы программы. Повторный анализ добавляет затраты времени, тогда как заранее скомпилированный код уже подготовлен для выполнения.
Когда удобнее использовать отладчик?
Отладчик полезен, когда программа запускается, но работает неправильно. Он позволяет выполнять код по шагам, наблюдать значения переменных и находить место, где возникает ошибка.
Зачем программе нужны библиотеки и компоновщик?
Библиотека содержит готовые модули и функции, которые не нужно писать заново. Компоновщик соединяет объектный код программы с нужными библиотеками, чтобы получилась целостная программа.
§ 41. Системы программирования