Об авторе: Романов Евгений Леонидович, к.т.н., доц. каф. Вычислительной техники НГТУ, работает в НГТУ с 1980 года, преподает с 1987. Курс ТЯПиМТ в подобном виде и объеме читается около 10 лет.

Афтар жжот:...когда я в 1978 году по заданию моего научного руководителя  прочитал первую в своей жизни книгу по трансляторам  (Д. Грис "Конструирование компиляторов для цифровых вычислительных машин"), мне казалось, что я всё понял. Когда я стал читать учебный курс (лет 15 назад - вечерникам), я понял, что ничего не понимаю в этом деле. Мораль: лучший способ понять что-либо - попытаться объяснить другому (лет эдак за 5-7).

Учебная дисциплина читается студентам 3-го курса факультета Автоматики и вычислительной техники (АВТФ) Новосибирского государственного технического университета (НГТУ) направления "Информатика и вычислительная техника" дневное отделение. А также на заочном отделении и в системе дистанционного образования.

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

Полученные представления и знания  будут полезны в других случаях:

 

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


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

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