Лекции по построению компилятора на Pascal
15. Назад в будущее
ВВЕДЕНИЕ
Могло ли действительно пройти четыре года с тех пор, как я написал четырнадцатую главу
этой серии? Действительно ли возможно, что шесть долгих лет прошли с тех пор как я начал
ее? Забавно, как летит время когда вы весело его проводите, не так ли?
Я не буду тратить много времени на извинения; просто подчеркну, что это случилось, и
приоритеты меняются. За четыре года, начиная с четырнадцатой главы, я сумел стать
уволенным, развестись, получить нервный срыв, начал новую карьеру как писатель, начал
другую как консультант, двигался, работал на две системы реального времени и вырастил
четырнадцать птенцов, трех голубей, шесть опоссумов и утку. Некоторое время
синтаксический анализ исходного кода был не слишком высоко в моем списке приоритетов.
Не написал ни одной вещи бесплатно, только за деньги. Но я пытаюсь быть верным и
понимаю и чувствую свою ответственность перед вами, читателями, закончить то, что начал.
Как сказала черепаха в одной из старых историй моего сына, я возможно медленная, но я
надежная. Я уверен, что есть люди, стремящиеся увидеть последнюю катушку этого фильма,
и я собираюсь дать им ее. Так что, если вы один из тех, кто ждал более или менее терпеливо,
что из этого получится, благодарю за ваше терпение. Я приношу извинения за задержку.
Давайте продолжим.
НОВОЕ НАЧАЛО, СТАРОЕ НАПРАВЛЕНИЕ
Подобно многим другим вещам, языки программирования и стили программирования
изменяются со временем. В 1994 году кажется немного анахроничным программировать на
Turbo Pascal, когда остальной мир кажется сходит с ума по C++. Также кажется немного
странным программировать в классическом стиле, когда остальной мир переключился на
объектно-ориентированные методы. Однако, несмотря на четырехлетнюю паузу, было бы
слишком тяжело сейчас переключиться, скажем, на C++ с объектной ориентацией. Во всяком
случае, Pascal все еще не только мощный язык программирования (фактически больше, чем
когда либо), но это и замечательная среда для обучения. Си - известно трудный для чтения
язык... он часто был обвиняем, наряду с Forth, как "язык только для записи". Когда я
программирую на C++ я трачу по крайней мере 50% своего времени на борьбу с синтаксисом
языка а не с концепциями. Сбивающие с толку "&" или "*" могут не только изменить
функционирование программы, но также и ее правильность. Наоборот, код Паскаля обычно
совершенно ясен и прост для чтения даже если вы не знаете языка. Что вы видите, то вы
почти всегда и получите, и мы можем сконцентрироваться на концепциях, а не тонкостях
реализации. Я сказал в начале, что целью этой обучающей серии была не генерация самого
быстрого в мире компилятора, а изучение основ технологии компиляции, с наименьшими
затратами времени на борьбу с синтаксисом языка или другими аспектами реализации
программного обеспечения. Наконец, так как многое из того, что мы делаем в этом курсе,
составляет программное экспериментирование, важно иметь компилятор и связанную с ним
среду, который компилирует быстро и без суеты. По моему мнению наиболее значимым
мерилом времени при разработке программного обеспечения является скорость цикла
редактирование/компиляция/тестирование. В этом отделе Turbo Pascal - король. Скорость
компиляции блестяще быстрая, и продолжает становиться быстрее с каждым выпуском (как
им это удается?). Несмотря на крупные усовершенствования в быстродействии компиляции
C за последние годы, даже Borland-овский самый быстрый компилятор C/C++ все еще не
сравним с Turbo Pascal. Далее, редактор, встроенный в его IDE, средство make, и даже их
превосходный умный компоновщик, все дополняют друг друга чтобы получить
замечательную среду для быстрой разработки. По всем этим причинам, я собираюсь
придерживаться Паскаля в продолжение этой серии. Мы будем использовать Turbo Pascal for
Windows, один из компиляторов, предоставляемый Borland Pascal with Objects, версия 7.0.
Если у вас нет этого компилятора не волнуйтесь... ничего из того, что мы делаем здесь не
будет рассчитано на то, что вы имеете последнюю версию. Использование Windows версии