Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
trpp.doc
Скачиваний:
1
Добавлен:
22.09.2019
Размер:
414.72 Кб
Скачать

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

Язык программирования – инструмент, облегчающий работу программиста и улучшающий качество программ.

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

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

Программирование на Ассемблерах характерно и на современных ПК. Использование Ассемблера ограничивается областью системного программирования, т.е. программных микропроцессоров, разработка ОС и драйверов, так же правилами обмена информацией между центральным и периферийным устройством.

Машинно-независимые языки не требуют полного значения спецификаций на ЭВМ. Инструментальные средства этих языков позволяют записывать программу в виде, допускающем её реализацию на ЭВМ с различными типами машинных операторов, привязка к которым целиком возлагается на составной транслятор. Решение задач описывается в наглядном легко воспринимающемся виде, производительность труда программ на языке этих программ в 10-15 раз выше, чем на языке Ассемблер.

Однако, получаемые в результате трансляции машинные программы в 2-5 раз объёмнее по сравнению с такоё же программой, написанной на Ассемблере, и работает в 2-5 раз медленнее.

Но быстрый рост производительности ЭВМ и нехватка программистов послужило причиной развития применения высокоуровневых языков программирования.

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

  1. в плане максимального использования возможностей компьютерной аппаратуры.

  2. в плане максимального использования мощных возможностей современных языков высокого уровня.

Языки СИ используются в основном для создания системных и прикладных продуктов, в которых решающее значение отводиться факторам быстродействия и минимизация объёмов памяти.

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

Интерпретация подразумевает по операторную трансляцию и последующее выполнение оттранслированного оператора исходной программы.

Недостатки:

  1. интерпретирующая программа должна находиться в памяти ЭВМ в течение всего процесса выполнения исходной программы, т.е. занимать определённый объём памяти.

  2. процесс трансляции одного и того же оператора повторяется столько раз сколько должна выполнятся эта команда, что снижает производительность работы программы.

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

Большая сложность в разработке компилятора объясняется тем, что компиляция программы выполняет два действия:

  • анализ, т.е. определение правильности записи исходной программы в соответствии с правилами построения языковых конструкций входного языка.

  • синтез – генерирование эквивалентной программы в машинные коды.

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

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]