Информация о книге

978-5-907114-28-9

Главная  » Тематика определяется » Компиляторы. Принципы, технологии и инструментарий | Лам Моника С., Сети Рави

Ахо А., Лам М.С., Сети Р., Ульман Д., Компиляторы. Принципы, технологии и инструментарий | Лам Моника С., Сети Рави

2017 г., 1184 стр., 978-5-907114-28-9


Описание книги

Каждый, кто интересовался разработкой компиляторов, не мог не слышать о знаменитой \"Книге Дракона\", классическом труде Ахо и Ульмана \"Принципы разработки компиляторов\". Развитие технологий компиляции привело к рождению очередного \"дракона\" — книги \"Компиляторы. Принципы, технологии, инструментарий\", — у которой теперь уже четыре автора, и каждый из них является высококлассным специалистом в данной области.
Книга, как и предыдущее издание, начинается с изложения основных принципов разработки компиляторов, включая детальное рассмотрение лексического и синтаксического анализа и генерации кода. Особенностью данного издания является широкое освещение вопросов оптимизации кода, в том числе для работы в многопроцессорных системах.
Строгость изложения материала смягчается большим количеством практических примеров. Написание компиляторов охватывает такие области знаний, как
-языки программирования,
-архитектура вычислительных систем,
-теория языков,
-алгоритмы и технология создания программного обеспечения.
Помочь в освоении этих технологий и соответствующего инструментария и призвана данная книга. Несмотря на ее учебную ориентацию — в первую очередь, она предназначена для студентов и преподавателей соответствующих специальностей — книга будет полезна всем, кто просто работает над созданием компиляторов. Рекомендуем!

Поделиться ссылкой на книгу



Дополнительно о книге

Со времени написания первого издания книги в 1986 году в мире разработки компиляторов произошли значительные изменения. Языки программирования эволюционировали и перед разработчиками возникли новые проблемы. Архитектура компьютеров предлагает массу различных вычислительных ресурсов, которые для получения наивысших результатов должен использовать разработчик компилятора. Пожалуй, наиболее интересно то, что методы оптимизации кода нашли применение не только в компиляторах. В настоящее время они используются в инструментарии для поиска ошибок в программном обеспечении и, что особенно важно, при проверке безопасности существующего кода. Большинство других методов — грамматика, регулярные выражения, синтаксические анализаторы и синтаксически управляемые трансляторы — также широко используются не только при разработке компиляторов. Таким образом, наш подход остался тем же, что и в предыдущих версиях книги. Мы отдаем себе отчет в том, что лишь малая доля наших читателей будет заниматься разработкой или хотя бы поддержкой компилятора для какого-то из основных языков программирования. Однако модели, теория и алгоритмы, связанные с компиляторами, могут применяться для решения широкого диапазона задач проектирования и разработки программного обеспечения. Таким образом, мы уделяем особое внимание задачам, которые обычно встречаются при разработке языковых процессоров, независимо от исходного языка или целевой машины. Требуется примерно два семестра, чтобы охватить весь (или, по крайней мере, большую часть) материал данной книги. Обычно первая половина книги служит предметом изучения студентов на первых курсах, в то время как вторая, посвященная оптимизации кода, изучается на старших курсах. Вот краткое содержание глав книги.
В главе 1 содержится, в основном, мотивационный материал, и при этом раскрываются некоторые базовые вопросы архитектуры компьютера и принципов языков программирования.
В главе 2 разрабатывается миниатюрный компилятор и вводится множество новых концепций, которые будут затем детально рассмотрены в последующих главах. Сам компилятор вы найдете в приложении А.
Глава 3 посвящена лексическому анализу, регулярным выражениям, конечным автоматам и инструментарию для создания сканеров входного потока. Материал этой главы может быть широко использован при разработке текстовых редакторов.
В главе 4 приведены различные методы синтаксического анализа, нисходящие (рекурсивного спуска, LL) и восходящие (LR и его варианты).
В главе 5 вы познакомитесь с принципиальными идеями синтаксически управляемых определений и трансляции.
В главе 6 показано, как теория из главы 5 применяется для генерации промежуточного кода в типичном языке программирования.
В главе 7 обсуждаются вопросы сред времени выполнения, в частности управление стеком и сборка мусора.
Глава 8 посвящена генерации объектного кода. В ней рассматриваются построение базовых блоков, генерация кода из выражений и базовых блоков и методы распределения регистров.
Глава 9 служит введением в методы оптимизации кода, включая потоковые графы, структуры потоков данных и итеративные алгоритмы для их разрешения.
В главе 10 рассматривается оптимизация на уровне команд. Основной упор делается на поиск возможностей параллельного вычисления в небольших последовательностях команд и их диспетчеризация для процессоров, способных выполнять несколько команд одновременно.
Глава 11 посвящена поиску крупномасштабной параллельности вычислений и ее использованию. Здесь упор делается на числовой код, который содержит связанные циклы, работающие с многомерными массивами. В главе 12 речь идет о межпроцедурном анализе: анализе указателей, использовании псевдонимов и анализе потоков данных, которые принимают во внимание последовательность вызовов процедур, достигающих данной точки кода. Материал данной книги изучался в нескольких университетах — Колумбии, Гарварде и Стенфорде. В Колумбии в учебных курсах для первокурсников по языкам программирования и трансляторам регулярно использовался материал глав 1–8. Основным заданием данного курса являлось написание курсовой работы, выполняющейся небольшими группами студентов и состоящей в реализации небольшого языка программирования, спроектированного ими самостоятельно. Разработанные таким образом языки ориентированы на применение в различных областях, включая квантовые вычисления, генерацию музыки, компьютерную графику, игры, операции с матрицами и многое другое. В своей работе студенты использовали генераторы компонентов компиляторов, такие как ANTLR, Lex и Yacc, и методы синтаксически управляемой трансляции, рассматривающиеся в главах 2 и 5. Курс для старшекурсников основывался на материале глав 9–12, и основ-ной упор делался на генерацию кода и оптимизацию для современных машин, включая сетевую и многопроцессорную архитектуры. В Стенфорде краткий вводный курс охватывал материал приблизительно глав 1–8, хотя в нем было и введение в вопросы глобальной оптимизации, основанное на материале главы 9. Второй курс, посвященный компиляторам, охватывал главы 9–12, а также материал по сборке мусора из главы 7. Студенты использовали местную систему Joeq на основе Java для реализации алгоритмов анализа потоков данных.

Содержание книги

Глава 1. Введение в компиляцию
Глава 2. Простой синтаксически управляемый транслятор
Глава 3. Лексический анализ
Глава 4. Синтаксический анализ
Глава 5. Синтаксически управляемая трансляция
Глава 6. Генерация промежуточного кода
Глава 7. Среды времени выполнения
Глава 8. Генерация кода
Глава 9. Машинно-независимые оптимизации
Глава 10. Параллелизм на уровне команд
Глава 11. Оптимизация параллелизма и локальности
Глава 12. Межпроцедурный анализ
Приложение А. Завершенный пример начальной стадии компилятора
Приложение Б. Поиск линейно независимых решений
Предметный указатель


Об авторе


Отзывы

Доставка  [ 6 May 2015]
По содержанию говорить нечего, т.к. Книга Дракона очень известна и для нее написано достаточно рецензий.

Что касается работы магазина, то в этот раз заказ пришел быстро, книга в хорошем состоянии, не считая пыли на корешке и пары длинных (не глубоких) царапин на обложке. Жаль, что книги не оборачиваются защитной пленкой, а помещаются прямо в картонную коробку.
Отличная книга  [ 9 December 2014]
По содержанию - ничего лучше по компиляторам пока что не написано.

По оформлению - когда я получил переиздание 2014 года, "отпечатанное способом ролевой струйной печати" в чеховском филиале ОАО "Первая Образцовая типография", негодованию моему не было предела: такое ощущение, что книга напечатана на струйном принтере, да и еще и на бумаге не самого лучшего качества.

Разумеется, содержание важнее, но все равно - читать серые (а не четкие черные) буквы на страницах, где текст с обратной стороны хорошо просвечивает - поначалу требует некоторого привыкания. Учитывая внушительный объем (и, как следствие вес) - с удовольствием купил бы электронное издание в качестве альтернативы.
Прекрасно для начала  [26 February 2013]
В свое время эта замечательная книга помогла разобраться мне во многих аспектах разработки компиляторов. И хотя терпения хватило только на то, чтобы прочесть меньше половины книги, прочитанного оказалось достаточно мне для написания собственного интерпретатора (несложного, конечно) языка, когда это потребовалось.
Книга очень вдохновляет, и во время чтения часто одолевает желание сесть и попробовать реализовать что-то из описанного в ней.
Отдельным плюсом книги является большой раздел, посвященный регулярным выражениям. Если вы не сталкивались с ними прежде, то после его прочтения сможете составлять регулярные выражения, и даже написать собственную их реализацию.
Уже после первых нескольких глав вам станет понятно, как написать собственный калькулятор математических выражений. Или синтаксически управляемый генератор лабиринтов для вашей игры:)
Кстати, эта книга просто вынудит вас научиться работать с деревьями, если вы еще не умеете этого делать достаточно хорошо.

Сейчас существует огромное количество готовых языков, и вряд ли вы решите разработать свой полноценный компилятор для практических нужд. Но это нисколько не уменьшает удовольствия от изучения соответствущих вопросов и от творческого процесса разработки. Если же вы амбициозный студент, и ваш дипломный проект - компилятор, транслятор или интерпретатор кода, то это просто идеальная книга для вас!

От людей, профессионально занимающихся компиляторами, слышал, что книга устарела и содержит много очевидного. Возможно, это действиетльно так. Но для первого знакомства с интереснейшей темой разработки компиляторов лучшей замены этой книге наверное не найти!
цена  [18 October 2009]
Книга конечно отличная, по компиляторам мало подобной литературы(если есть вообще), но цена кусается, не просто кусается, а полруки отрывает.
fgsfds  [19 July 2009]
> Книга потрясающая, по сравнениею с прошлым изданием - огромный качественный шаг вперед

Целиком и полностью поддерживаю. Был приятно удивлен изменениями во 2 издании.
+1  [12 June 2009]
Книга потрясающая, по сравнениею с прошлым изданием - огромный качественный шаг вперед.
+  [22 April 2008]
Отличная книга.
Не для всех программеров, конечно - из-за тематики.

Последние поступления в рубрике "Тематика определяется"



Математика. Подготовка к ЕГЭ. Задачи с параметрами.10-11 классы 

В предлагаемом пособии представлен обширный материал, посвященный двум заключительным и сложным темам ЕГЭ профильного уровня: задачам с параметрами и числам и их свойствам. На многочисленных примерах с подробными решениями и обоснованиями (как и требуется на экзамене) показаны различные методы и решения задач....

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

Читателю предлагается самая последняя редакция Плана счетов бухгалтерского учета финансово-хозяйственной деятельности организаций и инструкции по его применению с учетом последних приказов Минфина РФ. План счетов - это важнейший инструмент бухгалтерского учета, настольная книга для каждого практического бухгалтера....

На ферме. Книжка с наклейками 

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

Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Ахо А., Лам М.С., Сети Р., Ульман Д., Компиляторы. Принципы, технологии и инструментарий | Лам Моника С., Сети Рави в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.