Помощь в написании студенческих работ
Антистрессовый сервис

Подготовка программы к выполнению

РефератПомощь в написанииУзнать стоимостьмоей работы

Текст программы на языке программирования (исходный программный код) подготавливается с помощью текстового редактора. Синтаксис большинства языков основан на ограниченном количестве англоязычных слов и выражений, кириллические символы применяются, в основном, в строковых значениях, поэтому подготовить исходный код можно практически в любом текстовом редакторе. Однако существуют специализированные… Читать ещё >

Подготовка программы к выполнению (реферат, курсовая, диплом, контрольная)

Исходный код программы, написанный на языке программирования и сохраненный в виде файла на внешнем носителе, не является исполняемым (см. параграф 12.4) и поэтому не может быть напрямую выполнен без специального программного обеспечения: требуется перевод на язык машинных кодов. Подобное преобразование осуществляют соответствующие программы — трансляторы.

Транслятор (от лат. translatio — перевод, передача) — программа, которая переводит (транслирует) алгоритм, записанный на одном из языков программирования высокого уровня в программу на машинном языке. Трансляция программы с языка ассемблера в машинные коды получила название ассемблирование.

Транслирование программного кода может быть выполнено в режимах интерпретации и компиляции. Соответствующие виды трансляторов получили названия интерпретатора и компилятора.

Интерпретатор (от англ, interpretation — толкование) последовательно выполняет все операторы программы. Очередной оператор анализируется, переводится в машинные коды и исполняется. Если нс возникло ошибок, происходит переход к следующему оператору. Последовательный анализ и исполнение языковых конструкций приводит к невозможности запуска программы на компьютере, на котором нс установлен соответствующий интерпретатор. При интерпретации не создается исполняемый файл, который представляет собой алгоритм, записанный в машинных командах. Интерпретация каждый раз выполняется заново.

В режиме интерпретации любой оператор, даже если он встречался ранее (такая ситуация может возникнуть, например, при выполнении циклических конструкций), анализируется и выполняется заново, как будто он встречается впервые. В результате исполнение программ, требующих большого количества однотипных вычислений (содержащих большое количество циклов), является медленным. Это является самым су- 11;естве1 тым недостатком интерпретаторов.

ДостойIютва интерпретатора:

  • 1. При трансляции возможно приостановить исполнение программы в любой момент. При этом программист может обратиться к содержимому памяти, в том числе и к значению отдельных переменных. Также имеется возможность изменить данные, постоянно контролируя состояние программных и аппаратных ресурсов. Все это приводит к повышению надежности разрабатываемого программного обеспечения.
  • 2. В ходе своей работы интерпретатор проверяет множество характеристик программной среды, выявляя не только синтаксические ошибки, но и некоторые логические, например, некорректное приведение типов данных. При обнаружении интерпретатор сразу сообщает программисту, который может исправить возникшие проблемы.
  • 3. При выполнении каждой команды интерпретатор проверяет доступные аппаратные и программные ресурсы. При возникновении проблем выдается соответствующее сообщение.
  • 4. Может использоваться для изучения работы как отдельных операторов языка, так и программы в целом, т. е. может выступать как инструмент обучения программированию.

Таким образом, интерпретатор удобен для интерактивного режима разработки, тестирования, отладки и исполнения программ. Под тестированием понимают процесс проверки соответствия между предполагаемыми и реальными результатами работы программы. Отладка это процесс обнаружения и устранения ошибок. Полностью отлаженная программа должна выдавать правильные результаты.

Компилятор (от англ, compilation собирать, составлять) обрабатывает файл с текстом программы и создает исполняемый файл (для ОС семейства Windows он обычно имеет расширение *.ехе). Этот файл впоследствии может быть запущен без наличия транслятора. В этом состоит одно из ключевых отличий компиляции от интерпретации: процессы трансляции программы и ее выполнения разделены.

При компиляции исходный текст программы несколько раз просматривается и анализируется на наличие синтаксических ошибок. Также может выполняться некоторый смысловой анализ программного кода. Если ошибок не выявлено, то код автоматически транслируется на машинный язык. Одновременно выполняется оптимизация, позволяющая увеличить быстродействие и повысить эффективность использования аппаратных ресурсов. Примерами подобной оптимизации могут служить исключение промежуточных вычислений, исключение ненужных команд и т. д.

В результате алгоритм в машинных кодах обычно выполняется быстрее, программа получается более компактной и эффективной. Исполняемый файл может быть запущен на других компьютерах, поддерживающих соответствующие машинные команды. Следует, однако, помнить, что различные версии компиляторов могут по-разному оптимизировать программный код, поэтому результаты могут получаться различными, особенно в случае небольших программ, например, утилит.

Компиляторы имеют один существенный недостаток: процесс обработки программ, в которых используются данные заранее неизвестной или динамической структуры, может быть достаточно трудоемким и не всегда корректным. При компиляции в этом случае приходится выполнять дополнительные проверки на доступность программных и аппаратных ресурсов, динамически выделять и освобождать память и ир., что в рамках жестко заданных машинных конструкций и структур данных сделать довольно сложно, а в некоторых случаях практически невозможно.

Итак, прежде чем программа, написанная на языке высокого уровня (или ассемблера), может быть выполнена, она проходит различные стадии преобразования. На каждой стадии программа воспринимается как данные некоторого определенного вида. Процесс подготовки программы к выполнению приведен на рис. 10.19.

Процесс подготовки программы к выполнению.

Рис. 10.19. Процесс подготовки программы к выполнению.

Текст программы на языке программирования (исходный программный код) подготавливается с помощью текстового редактора. Синтаксис большинства языков основан на ограниченном количестве англоязычных слов и выражений, кириллические символы применяются, в основном, в строковых значениях, поэтому подготовить исходный код можно практически в любом текстовом редакторе. Однако существуют специализированные редакторы, которые имеют дополнительные функциональные возможности, повышающие удобство работы с конкретными языками программирования. Примерами таких возможностей может служить подсветка синтаксиса, его проверка, наличие автоматических подсказок при наборе команд и нр.

В результате получается один или несколько текстовых файлов, содержащих программный код. Ниже приведены стандартные расширения для файлов с исходным кодом некоторых языков программирования:

  • — язык ассемблера (*.asm)
  • — язык С (*.с, *.h);
  • — язык C++ (*.срр, *.схх, *.h, *.hpp)
  • — язык Pascal, Delphi (*.pos, *.dpr):
  • — язык Java (*.java).

Процесс компиляции обычно сопровождается отображением на экране общей информации о ходе трансляции: количество откомпилированных строк, операторов, сообщения об ошибках. В зависимости от настроек программной среды разработки степень детализации отчета о компиляции может быть различной. В случае достаточно большого количества информации отчет сохраняют в файл с целью его последующего анализа.

В отчет обычно включаются как сообщения о синтаксических ошибках, так и об ошибках выполнения, например, когда обращаются к элементу массива с несуществующим индексом. Также могут выдаваться предупреждения о некритичных ошибках, например, об объявлении переменной, которая в дальнейшем не используется.

После того, как программист устранит ошибки и процесс компиляции завершится, будет сформирован файл с объектным кодом двоичным файлом со стандартным расширением *.obj, в котором хранятся машинные команды. Во многих случаях программный код содержится в различных файлах (состоит из нескольких модулей), поэтому для каждого такого модуля формируется отдельный файл с объектным кодом — объектный люду ль.

На стадии компоновки происходит формирование исполняемого кода (исполняемого файла), который создается специальной программой компоновщиком (редактором связей или сборщиком). В процессе компоновки происходит объединение всех объектных модулей, причем должен выполняться ряд дополнительных требований:

  • — необходимо обеспечить взаимодействие объектных модулей с другими программами, в том числе программами операционной системы, например, файловой системой;
  • — к объектным модулям необходимо добавить машинный код подпрограмм стандартных функций (например, вычисления математических функций), которые поставляются вместе с компилятором и имеют стандартные расширения файлов *.Ык
  • — формируемая программа (исполняемый код) должна иметь определенный формат, воспринимаемый операционной системой.

Реализацией этих требований и занимается компоновщик.

Результатом работы компоновщика является законченное приложение. Оно имеет расширение *ехе (от англ, executable — исполняемый) или *.сот (загрузочный модуль). Исполняемый файл сохраняется во внешней памяти и, как уже говорилось выше, может быть запущен на компьютере, имеющем совместимые программно-аппаратные характеристики. В случае необходимости внесения изменений в программу происходит правка исходного кода, который повторно компилируется и компонуется.

Рассмотренные технологии трансляции программ позволяют сделать важный вывод. Так как компилятор может обрабатывать нс только законченные программы, но и оформленные специальным образом модули (объекты), то имеется возможность компилировать отдельно и хранить во внешней памяти отдельные части прографим. При необходимости компоновщик соберет требуемые объектные коды из различных файлов, т.с. возможно получение исполняемого кода для всей программы.

Современные системы программирования используют смешанные технологии интерпретации и компиляции. Например, исходный код может быть переведен в промежуточный код, предназначенный для абстрактного процессора (байт-код), компиляция которого происходит непосредственно во время работы программы. Такая технология получила название JIT-компиляция (англ. Just-in-time вовремя).

Показать весь текст
Заполнить форму текущей работой