0063 - Системное программное обеспечение - Если исходная программа неправильная . В этом смысле ...

Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. 2003

Гордеев А.В., Молчанов А.Ю.
. Системное программное обеспечение
. 2003
. 5-272-00341-1
. "Питер"
. 
. Учебник создан в соответствии с Государственным образовательным стандартом в дисциплине "Системное программное обеспечение". Его основой стал учебный мат
Название: 
Системное программное обеспечение
Автор: 
Гордеев А.В., Молчанов А.Ю.
Год: 
2003
Издательство: 
"Питер"
Описание: 

Учебник создан в соответствии с Государственным образовательным стандартом в дисциплине "Системное программное обеспечение". Его основой стал учебный материал, в течение нескольких лет преподаваемый студентам Санкт-Петербургского государственного университета аэрокосмического приборостроения.

Если исходная программа неправильная . В этом смысле транслятор сродни переводчику, например, с английского, которому подсунули неверный текст. . Автору встречались такого рода разработки, однако широкое практическое применение их пе известно. В таком случае и вес составные части транслятора могут быть реализованы в шие аппаратных средств н их фрагментом — нот тогда схема распознавателя может получить вполне практическое воплощение. Отличие компилятора от транслятора Кроме понятия . Компилятор — это транслятор, который осуществляет перевод исходной программы в эквивалентную ей объектную программу на языке машинных команд или на языке ассемблера. Таким образом, компилятор отличается от транслятора лишь тем, что его результирующая программа всегда должна быть написана на языке машинных кодов или на языке ассемблера. Результирующая программа транслятора, в общем случае, может быть написана на любом языке — возможен, например, транслятор программ с языка . Соответственно, всякий компилятор является транслятором, но не наоборот — пе всякий транслятор будет компилятором. Например, упомянутый выше транслятор с языка . Само слово . Видимо, термин обязан своему происхождению способности компиляторов составлять объектные программы на основе исходных программ. Результирующая программа компилятора называется . Файл, в который она записана, обычно называется . Даже в том случае, когда результирующая программа порождается на языке машинных команд, между объектной программой . Порожденная компилятором программа не может непосредственно выполняться на компьютере, так как она не привязана к конкретной области памяти, где должны располагаться се код и данные . Компиляторы, безусловно, самым распространенный вид трансляторов . Они имеют самое широкое практическое применение, которым обязаны широкому распространению всевозможных языков программирования. Далее всегда будем говорить о компиляторах, подразумевая, что выходная программа написана на . Первоначально с ними не было связано никаких проблем. Однако сейчас появилось понятие . . Основные принципы построения трансляторов языке машинных кодов или языке ассемблера . Естественно, трансляторы и компиляторы, как и вес прочие программы, разрабатывает человек . В принципе они могли бы создавать его непосредственно на языке машинных команд, однако объем кода и данных современных компиляторов таков, что их создание па языке машинных команд практически невозможно в разумные сроки при разумных трудозатратах. Поэтому практически все современные компиляторы также создаются с помощью компиляторов . И в этом качестве компилятор является уже выходной программой для другого компилятора, которая ничем не лучше и не хуже всех прочих порождаемых выходных программ . Определение интерпретатора. Разница между интерпретаторами и трансляторами Кроме схожих между собой понятий . Интерпретатор — это программа, которая воспринимает входную программу на исходном языке и выполняет ее. В отличие от трансляторов интерпретаторы не порождают результирующую программу . Интерпретатор, так же как . Однако он пе порождает результирующей программы, а сразу же выполняет исходную в соответствии с ее смыслом, заданным семантикой входного языка. Таким образом, результатом работы интерпретатора будет результат, заданный смыслом исходной программы, в том случае, если эта программа правильная, или сообщение об ошибке, если исходная программа неверпа. Конечно, чтобы исполнить исходную программу, интерпретатор так или иначе должен преобразовать ее в язык машинных кодов, поскольку иначе выполнение программ на компьютере невозможно. Он и делает это, однако полученные машинные коды не являются доступными — их пе видит пользователь интерпретатора. Эти машинные коды порождаются интерпретатором, исполняются и унич . Сам но себе этот промежуточный язык не может непосредственно исполняться на компьютере, а требует специального промежуточного интерпретатора для выполнения написанных на нем программ. Хотя в данном случае термин . Конечно, в первом поколении самые первые компиляторы писались непосредственно па машинных командах, но потом, с появлением компиляторов, от этой практики отошли. Даже самые ответственные части компиляторов создаются, как минимум, с применением языка ассемблера — а он тоже обрабатывается компилятором. . Пользователь же видит результат выполнения этих кодов — то есгь результат выполнения исходной программы . Более подробно вопросы, связанные с реализацией интерпретаторов и их отличием от компиляторов, рассмотрены далее в соответствующем разделе. Назначение трансляторов, компиляторов и интерпретаторов. Примеры реализации Первые программы, которые создавались еще для ЭВМ первого поколения, писались непосредственно на языке машинных кодов. Это была поистине адская работа. Сразу стало ясно, что человек не должен и не может говорить на языке машинных команд, даже если он специалист по вычислительной технике. Однако и все попытки научить компьютер говорить на языках людей успехом не увенчались и вряд ли когда. С тех пор все развитие программного обеспечения компьютеров неразрывно связано с возникновением и развитием компиляторов. Первыми компиляторами были компиляторы с языков ассемблера пли, как они назывались, мнемокодов. Создавать программы уже стало значительно проще, но исполнять сам мнемокод . Эти компиляторы элементарно просты, но они продолжают играть существенную роль в системах программирования по сей день. Более подробно о языке ассемблера и компиляторах с него рассказано далее в соответствующем разделе. Следующим этапом стало создание языков высокого уровня. От первых им досталась строгая формализация синтаксических структуру предложений языка, от вторых — значительная часть словарного запаса, семантика основных конструкций и выражений .