Читаем “Проектирование и конструирование компиляторов” Хантера

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Всем привет! На связи ваша любимая библиотека HWdTech LLC:)

Сегодня библиотечную рубрику начинаем с вопроса. Как вы думаете, сколько строчек кода вам понадобится, чтобы написать синтаксический анализатор языка С? А сколько строчек будет занимать синтаксический анализатор языка Kotlin? А любого другого языка - на ваш выбор?

На все эти вопросы есть очень простой ответ: это будет одна и та же программа - и занимать она будет не более 100 строк кода.

А вот как ее разработать вы узнаете из книги, которую мы обсуждаем в этом обзоре: “Проектирование и конструирование компиляторов” авторства Робина Хантера.

Почему стоит прочитать?

Поразительно то, что изданная в 1984 году книга актуальна на сегодняшний день. Несмотря на то, что в ней нет современных методов семантического анализа кода, лексический и синтаксический анализ описаны на очень высоком уровне. При этом автор не загружает нам мозг тяжелой для понимания математикой, а, напротив, рассказывает как реализовать все примеры программно.

Эту книгу мы рекомендуем всем нашим подписчикам, а не только тем, кто собирается писать компиляторы - потому что технологии, о которых идет речь, можно использовать во многих других областях. Помимо того, что мы уже описали, создать свой DSL-язык, например! Круто? Несомненно!

Для кого эта книга?

Во-первых, для тех, кто хочет знать, как пишутся компиляторы, но при этом не хочет разбираться в математической стороне вопроса. Здесь описано простое введение в область разработки компиляторов, без особых теоретических изысков, в минимально необходимом наборе, который нужен для написания кода. Это не самая популярная книга по компиляторам, но зато наиболее удобоваримая для чтения.

Важно! Эта книга абсолютно точно, на сто процентов, НЕ ТОЛЬКО для тех, кого интересуют компиляторы. Кому же еще мы ее рекомендуем?

Да всем, кто интересуется программированием! Кто хочет понять, как происходит синтаксический разбор в структурах данных, научиться писать DSL-языки в конфигурационных файлах, разобраться с детерминированными конечными автоматами.

Студентам эта книга тоже очень зайдет, потому что можно читать ее и про компиляторы, а можно - про детерминированные конечные автоматы и их применение в отношении различных задач. Здесь на примере компиляторов показываются интереснейшие примеры решений.

Также в этой книге приведены практические приемы построения LL(1)- и LR(1)-анализаторов, которые являются наиболее удобными и простыми, рассматриваются контекстно-свободные грамматики.

Личные впечатления

Тюменцев Евгений Александрович, CEO Hello World! Technologies (HWdTech):

“На меня эта книга серьезно повлияла. Первое впечатление: “я узнал как делается магия”. Потому что компиляторы всегда были для меня некими “магическими штуками”, которые “догадывались”, как читать и воплощать наш код. А тут я узнал, как вообще эти программы устроены и работают - и это было круто, сравнимо с уроками волшебства.

Когда в университете надо было писать лабораторные работы по парсингу, я также пользовался знаниями из этой книги. То есть, даже если компиляторы не интересуют читателя, он может, например, научиться разбирать более сложные синтаксические конструкции при вводе данных.

Еще книга пригодилась для подготовки доклада “DSL на коленке: или как писать языки программирования своими руками” (ссылка: https://www.youtube.com/watch?v=dhktPF6NeEI) Здесь идет речь об алгоритме для разбора языка, основной цикл которого вообще занимает три строчки. Эти знания актуальны именно сейчас, как пример Data-Driven подхода, который используется в машинном обучении.

И те, кто хочет увидеть хотя бы одну программу, отвечающую SOLID-принципам - читайте эту книгу. В ней мы видим практический ответ на вопрос “Что такое программа, устойчивая от изменений?”. Нам фактически удается написать одно приложение, которое построит синтаксический анализатор для любого языка программирования. Это и есть пример реализации SOLID-принципов, причем, неважно на каком языке вы реализуете - не от языка программирования зависит, удовлетворяете она SOLID-принципам или нет. В данном случае представлена архитектура, которая заведомо будет им соответствовать”.

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

Где добыть

https://www.ozon.ru/product/proektirovanie-i-konstruirovanie-kompilyatorov-32424388/?sh=voiepL521w - на "Озоне" книга есть в каталоге, но отсутствует в наличии. Возможно, вам удастся найти и приобрести электронное издание или же дождаться, когда она вернется в ассортимент. Ну и, конечно, велкам в нашу библиотеку!

Читайте подробнее тут:

https://hwdtech.ru/blog/books_hunter


Источник: hwdtech.ru

Комментарии: