Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Философия программирования > «Книга Дракона 2»


Автор: powerfox 6.2.2008, 19:51


http://www.williamspublishing.com/Books/978-5-8459-1349-4.html


2-е издание, 2008 год
Альфред В. Ахо, Моника С. Лам, Рави Сети, Джеффри Д. Ульман 
Compilers: Principles, Techniques, and Tools, 2nd Edition
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman

http://www.williamspublishing.com/Books/978-5-8459-1349-4.html



"Издательский дом "Вильямс" выпускает 2-е издание знаменитой "Книги Дракона" ("Dragon Book") - "Компиляторы:принципы, технологии и инструменты" (Compilers: Principles, Techniques and Tools. 2nd Edition. Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, 2007).


Этим летом я поехал на книжную ярмарку с целью приобрести «Книгу Дракона». Правда, о ней я мало что знал, просто года три назад случайно увидел в магазине (заинтересовало название + не встречал ничего похожего на полках магазинов). Но тогда она вызвала только интерес (3 года назад компиляторы мне были не по зубам). И увы, этим летом в продаже её не было. Но всё что случается, случается к лучшему.

В этом году выходит новое издание! Значительно переработанное и дополненное. Ещё бы, ведь первое издание появилось в 1986 году. А с того времени произошли значительные изменения: появились новые языки программирования (С++,Java , С#...), значительно улучшились методы оптимизации, изменилась архитектура компьютеров, появились многоядерные процессоры. Конечно, ни в одной из областей не произошло революции, но современные компьютеры значительно отличаются от тех, что использовались в 1986 году. Кроме того, крупные проекты всегда нуждаются в оптимизации кода и быстрой компиляции (кто хоть раз собирал KDE, Mozilla или ядро Linux поймут). А оптимизация и быстрая компиляция практически взаимоисключающие вещи.

Само название книги говорит о её содержании. Поэтому я не стану особо распространяться на эту тему. Она рассчитана на людей, знакомых c С или С++/Java. Все алгоритмы приведены в виде "макетов" кода с комментариями (естественно, никто не стал использовать блоксхемы). Книга написана простым и понятным языком. Но думаю, что непосвящённому читателю стоит быть внимательным. Авторы уделили значительное внимание базовым понятиям: теории языков, архитектуре вычислительных систем, языкам программирования.

Наверное, любой начинающий программист хотел бы разработать свой компилятор: в списке todo это второй пункт после разработки своей операционной системы smile Но книга рассчитана не только на энтузиастов-мечтателей, но и на профессиональных разработчиков, далёких от создания компиляторов. Описанные в ней алгоритмы могут быть использованы и при создании языковых процессоров; трудно найти приложение, которое бы не использовало синтаксический/лексический анализатор. Кроме того, на мой взгляд, хорошее понимание процесса компиляции может помочь в работе над оптимизацией программы (если открыть man gcc , то многое обычным смертным непонятно). Иными словами, кроме того, что после прочтения книги у вас будет прекрасная база для создания своего собственного компилятора (как существующего языка, так и своего), вы получите отличное представление об архитектуре компьютера и о применении методов компиляции для широкого круга задач проектирования и разработки программного обеспечения.

В процессе удвоения номера издания, удвоилось и число авторов (в написании книги приняли участие так же Monica S. Lam и Ravi Sethi). Новый материал включает следующие главы:
  • Глава 7: Среды времени выполнения
  • Глава 10: Параллелизм на уровне команд
  • Глава 11: Оптимизация параллелизма и локальности
  • Глава 12: Межпроцессорный анализ
По сравнению с предыдущим изданием многие главы значительно переработаны. В приложении A можно найти завершённый пример начальной стадии компилятора (на Java). Примеры в книге преимущественно написаны на Си (в основном очень небольшие), но очень часто встречается и код на Java (все завершённые примеры написаны на нём, но благодаря пояснениям авторов мне, как человеку незнакомому с Java, всё было абсолютно понятно).
Так как я получил возможность ознакомиться только с частью книги, то привести статистику по языкам не могу - однозначно можно сказать, что Java потеснил Си. Особенностью нового издания является широкое освещение вопросов оптимизации кода, в том числе для работы в многопроцессорных системах.

Я уже знаю, что с удовольствием буду читать этим летом smile В моём списке эта книга помечена, как Must Read.

Автор: Exception 17.2.2008, 02:07
Надо.

Автор: s1lver 30.5.2008, 18:33
Где бы её достать-то? 

Автор: powerfox 30.5.2008, 22:26
Цитата(s1lver @  30.5.2008,  19:33 Найти цитируемый пост)
Где бы её достать-то?  

Я не думаю, чтобы весь тираж раскупили. В магазинах новое издание должно быть.

Автор: Krawler 20.11.2008, 16:24
А в электронном виде можно? А то лень в магазин идти smile

Автор: Rickert 15.4.2009, 05:21
За новость конечно спасибо smile 

Автор: ikoryakin 20.6.2009, 13:49
Модератор: Сообщение скрыто.

Автор: LPPL 24.1.2010, 21:22
привет всем

Автор: neutrino 29.11.2010, 14:39
Читал это и предыдущее издание. Использовал многие алгоритмы/идеи из 2, 3 и 4 глав. 
Число ошибок, хоть и сократилось, но еще есть, что исправлять. 
Книга - просто маст для программистов, т.к. позволяет не только понять как работает компиляция, но и каким образом сделать дизайн языку (что в нашу эру DSL очень полезный навык).

Рекомендую всем. Книга кросс-платформенная smile Т.е. если Джеффри Рихтер хорош для дотНета а Страуструп для С++, эта книга поможет любому. Кроме того, в последнем издании рассмотрены фичи новых ЯП таких как C#.

+++++++

Автор: Nostardamus 29.10.2017, 13:34
нужно прочекать книженцию

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)