![]() Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
![]() Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
![]() |
Компиляторы и интерпретаторы
С помощью языка программирования создаётся не готовая программа, а только её текст, описывающий ранее разработанный алгоритм. Чтобы получить работающую программу, надо этот текст либо автоматически перевести в машинный код (для этого служат программы компиляторы) и затем использовать отдельно от исходного текста, либо сразу выполнять команды языка, указан-ные в тексте программы (этим занимаются программы-интерпретаторы). Интерпретатор берёт очередной оператор языка из текста программы, анализирует его структуру и сразу исполняет (обычно после анализа оператор транслируется в некоторое проме-жуточное представление или даже машинный код для более эффективного дальнейшего исполне-ния). После того как текущий оператор успешно выполнен, интерпретатор перейдёт к следующе-му. При этом если один и тот же оператор будет выполняться в программе многократно, интер-претатор будет выполнять его так, как будто встретил впервые. Вследствие этого программы,в ко-торых требуется осуществить большой объём вычислений, будут выполняться медленно. Кроме того, для выполнения программы на другом компьютере там тоже должен стоять интерпретатор – ведь без него текст является просто набором символов. Иначе говоря, интерпретатор моделирует некоторую вычислительную виртуальную машину, для которой базовыми инструкциями служат не элементарные команды процессора, а операторы языка программирования. Компиляторы полностью обрабатывают весь текст программы (исходный код). Они про-сматривают его в поиске синтаксических ошибок, производят определенный смысловой анализ, а затем автоматически переводят (транслируют) на машинный язык - генерируют машинный код. Нередко при этом выполняется оптимизация с помощью набора методов позволяющих повысить быстродействие программы (например, с помощью инструкций, ориентированных на конкретный процессор, путём исключения ненужных команд, промежуточных вычислений и т.д.). В результа-те программа получается законченной и эффективной, работает в сотни раз быстрее программы, выполняемой с помощью интерпретатора, может быть перенесена на другие компьютеры с про-цессором, поддерживающим соответствующий машинный код. Недостаток компилятора – трудоёмкость трансляции языков программирования, ориентиро-ванных на обработку данных сложных структур, часто заранее неизвестной или динамически ме- няющейся во время работы программы. Тогда в машинный код приходиться вставлять множество дополнительных проверок, анализировать наличие ресурсов операционной системы, динамиче-ски их захватывать и освобождать, формировать и обрабатывать в памяти компьютера сложные объекты, что на уровне жестко заданных машинных инструкций осуществить довольно трудно, а для задачи почти невозможно. С помощью интерпретатора, наоборот, допустимо в любой момент остановить программу, исследовать содержимое памяти, организовать диалог с пользователем, выполнить сколь угодно сложные преобразования и при этом постоянно контролировать состояние окружающей про-граммно - аппаратной среды, благодаря чему достигается высокая надёжность работы. Интерпре-татор при выполнении каждого оператора проверяет множество характеристик операционной системы и при необходимости максимально подробно информирует разработчика о возникаю-щих проблемах. Кроме того, интерпретатор очень удобен для использования в качестве инстру-мента изучения программирования, так как позволяет понять принципы работы любого отдель-ного оператора языка. В реальных системах программирования перемешаны технологии и компиляции, и интер-претации. В процессе отладки программа может выполняться по шагам, а результирующий код не обязательно будет машинным – он даже может быть исходным кодом, написанном на другом языке программирования (это существенно упрощает процесс трансляции, но требует компилято-ра для конкретного языка), или промежуточным машинно-независимым кодом абстрактного про-цессора, который в различных машинных архитектурах будет выполняться с помощью интерпре-татора или компилироваться в соответствующий машинный код.
Редакторы связей Редактор связей - системная обрабатывающая программа, редактирующая и объединяющая объектные модули, полученные в результате работы транслятора, в единые загрузочные, готовые к выполнению программные модули. Загрузочный модуль может быть помещен ОС в основную па-мять и выполнен. Загрузочный модуль компонуется из одной или нескольких программных сек-ций - перемещаемых частей программы. Каждый объектный модуль из входного потока редактора связей может иметь ссылки к программным секциям в других модулях. Такие ссылки называются внешними. Символ указываемой внешней ссылкой называется внешним именем. Установленное редактором связей соответствие между внешними ссылками и внешними именами называется раз-решением ссылки. Загрузчики Загрузчик - системная обрабатывающая программа, объединяющая основные функции ре-дактора связей и программы выборки в одном пункте задания. Загрузчик помещает находящиеся в его входном наборе данных объектные и загрузочные модули в оперативную память, объединяет их в единую программу, корректирует перемещаемые адресные константы с учетом фактического адреса загрузки и передает управление в точку входа созданной программы. Отладчики Отладчик позволяет управлять процессом исполнения программы и предоставляет инстру-ментарий для поиска и исправления ошибок в программе. Базовый набор функций отладчика включает: пошаговое выполнение программы, остановка в заранее определенных точках, возмож-ность остановки в некотором месте программы при выполнении некоторого условия; изображение и изменение значений переменных.
Date: 2015-09-05; view: 634; Нарушение авторских прав |