Язык программирования. Программа транслятор
Опр. Язык программирования (ЯП) – язык написания инструкций для процессора ЭВМ, лексика которого максимально приближена к выразительным возможностям естественного языка.
Вместо числовых кодов базовых операций обработки и числовых адресов базовых информационных объектов обработки программист использует символьные (текстовые) имена. Вместо жесткого синтаксиса команд базового языка процессора (ГС, ГСС, ГССС и т.д.), позволяющем описывать в одном предложении только одну операцию, программист получает возможность описывать одним оператором несколько действий, причем структура (синтаксис) предложений практически соответствует общепринятой форме записи математических выражений.
И наконец, самое главное – определяющей характеристикой ЯП является возможность его саморазвития, т.е. ЯП (высокого и сверхвысокого уровня) позволяют программисту создавать (вводить в язык) новые информационные объекты (ИО) и новые операции обработки (ОО) информационных объектов.
Опр. Конструктивный метод языковых новообразований основан на объединении нескольких стандартных или ранее созданных ИО или ОО в единое целое, с наделением этого новообразования уникальным именем.
Примеры:
- упорядоченная последовательность чисел (базовых ИО) образует новый ИО – вектор,
- операция скалярного умножения векторов – это новая ОО, образованная упорядоченной последовательностью умножений с сложений чисел, т.е. базовых ОО.
Языки программирования, использующие сложные ИО и ОО существенно сокращают тексты программ, однако, требуют от программиста значительных усилий для изучения многочисленных свойств, особенностей и спецификаций, характеризующих сложные ИО и ОО. Описание же нововведенных ОО и ИО, обычно ориентированное на широкий круг пользователей, дается на естественном языке с использованием терминов и понятий, прагматика (смысл) которых допускает расширенное толкование, вплоть до противоположного... В результате: используя сложные ОО и ИО можно получить результат, который совершенно не соответствует ожиданиям или просто не понятен.
Опр. Транслятор – специальная программа ЭВМ, которая
а) реализует перевод инструкций с ЯП на базовый язык процессора,
б) обнаруживает и сообщает программисту о допущенных им всех синтаксических и некоторых прагматических ошибках.
Пример обнаруживаемой прагматической ошибки: a = b + 5 – 5 .
Автоматический перевод с ЯП на БЯЭ возможен, т.к. оба эти языка являются командными: их семантика (смысл для исполнителя) однозначно предопределяется синтаксисом (структурой предложений). Следовательно, для перевода смысла команды необходимо просто заменить, а точнее – пересчитать, одни стандартные последовательности символов на другие.
Механизм перевода (трансляции):
а) сложные ИО и ОО языка программирования разделяются на упорядоченные последовательности базовых ИО и ОО, понятных процессору,
б) символьные имена ИО языка программирования заменяются на числовые адреса оперативной памяти,
в) символьные имена ОО языка программирования заменяются на числовые коды базовых (элементарных) операций обработки.
Определяющей особенностью всех языков программирования является то, что они предназначены для общения программиста именно с программой-транслятором. Целью этого общения является создание инструкций (программы) для автомата – процессора. Поэтому, лексика ЯП включает не только возможность описания прямых инструкций процессору, т.е. команд требующих прямого (дословного) перевода на базовый язык процессора (БЯЭ), но и инструкций, предназначенных именно и только программе – транслятору. В таких инструкциях содержатся указания - как именно следует переводить те или иные выражения на БЯЭ.
Опр. Предложения (операторы, команды) ЯП «дословно переводимые» с ЯП на БЯЭ принято называть исполнимыми операторами программы.
Опр. Предложения (операторы, команды) ЯП, которые поясняют специфику перевода, принято называть операторами описания.
Очевидно, что операторы описания всегда должны предшествовать исполнимым операторам, иначе, смысл последних будет просто не понятен: сначала объясни «что это такое», а только потом командуй «что с этим делать».
Начинающий программист должен накрепко запомнить:
а) транслятор «знает» синтаксис языка программирования лучше любого прикладного программиста (разработчики трансляторов специалисты наивысшей квалификации!) поэтому указанная транслятором ошибка – именно твоя ошибка!
б) транслятор не контролирует прагматику (алгоритмическую целесообразность) переводимой им программы. Автоматизировать эти действия, на сегодняшнем уровне развития наук, не возможно. Поэтому: синтаксически грамотно написанная программа может быть абсолютно бессмысленной.
Дата добавления: 2021-12-14; просмотров: 285;