А.Ахо, Дж. Ульман

«Теория синтаксического анализа,

перевода и компиляции», т.1.

 

(М.: Мир, 1978 г.)

 

 

 

ОТ РЕДАКТОРА ПЕРЕВОДА

 

Перед читателями — перевод фундаментального труда амери­канских учёных А. Ахо и Дж. Ульмана, трактующего широкий круг проблем, связанных с языками программирования и мето­дами их реализации на вычислительных машинах. Основой для него до известной степени послужила большая серия статей по теории языков и перевода, обнародованная авторами в различных научных  журналах   в   течение 4-5 предшествующих   лет.

Первый том посвящён теории языков, общим вопросам теории перевода и (главным образом) методам синтаксического анализа контекстно-свободных языков. Во втором томе рассматриваются вопросы, более тесно связанные с реализацией языков, в частности вопросы оптимизации анализаторов и объектного кода. На русском языке уже имеется ряд изданий, касающихся этих тем или даже целиком посвящённых им, но книга А. Ахо и Дж. Ульмана сравнительно мало пересекается с ними. Причин этому две. Во-первых, здесь собран и систематизирован очень большой по объёму материал — по широте охвата вопросов син­таксического анализа контекстно-свободных языков книга, по-видимому, не имеет себе равных ни в нашей, ни в зарубежной литературе. Во-вторых, авторы сосредоточили основное внимание лишь на тех вопросах, которые уже нашли или могут найти приложения на практике при создании компиляторов и других связанных с языками частей математического обеспечения.

Приятен стиль авторов, значительно облегчающий чтение книги. Введение новых более или менее сложных понятий и концепций начинается, как правило, с неформального их изложения и примеров. При этом делаются намёки, которые позволяют лучше понять следующее затем строгое, аккуратное и формальное построение. Описание многочисленных алгоритмов построено по аналогичной схеме: сначала даётся неформальное разъяснение сути их работы, затем чёткая формулировка алгоритма, иллюстрируемая часто на примере, и, наконец, доказательство правильности алгоритма. Каждый раздел заканчивается солидным списком задач различной трудности — от чисто техни­ческих и учебных упражнений до нерешённых научных проблем. Благодаря такому характеру изложения эту книгу, содержащую большой и трудный материал, легко читать на любом уровне: поверхностного чтения (только по неформальным и общим описаниям), знакомства с фактическим материалом (определения, теоремы, алгоритмы), глубокого изучения (разбор или воспроизведение доказательств, решение трудных задач). Для свободного владения излагаемым материалом полезен разбор примеров и решение большинства приводимых задач.

В целом книга будет интересной для широкого круга читателей: от студентов, изучающих основы теории языков программирования, до специалистов — разработчиков систем математического обеспечения и научных работников. Вместе с авторами можно надеяться, „что алгоритмы и понятия, изложенные в этой книге, переживут следующее поколение вычислительных машин и языков программирования и что хотя бы некоторые из них найдут применение не только при построении компиляторов, но и в других областях".

 

В. М. Курочкин