Ахо А., Лам М.С., Сети Р., Ульман Д., Компиляторы. Принципы, технологии и инструментарий | Лам Моника С., Сети Рави
2017 г., 1184 стр., 978-5-907114-28-9
Описание книги
Книга, как и предыдущее издание, начинается с изложения основных принципов разработки компиляторов, включая детальное рассмотрение лексического и синтаксического анализа и генерации кода. Особенностью данного издания является широкое освещение вопросов оптимизации кода, в том числе для работы в многопроцессорных системах.
Строгость изложения материала смягчается большим количеством практических примеров. Написание компиляторов охватывает такие области знаний, как
-языки программирования,
-архитектура вычислительных систем,
-теория языков,
-алгоритмы и технология создания программного обеспечения.
Помочь в освоении этих технологий и соответствующего инструментария и призвана данная книга. Несмотря на ее учебную ориентацию — в первую очередь, она предназначена для студентов и преподавателей соответствующих специальностей — книга будет полезна всем, кто просто работает над созданием компиляторов. Рекомендуем!
Поделиться ссылкой на книгу
Дополнительно о книге
В главе 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 для реализации алгоритмов анализа потоков данных.
Содержание книги
Глава 2. Простой синтаксически управляемый транслятор
Глава 3. Лексический анализ
Глава 4. Синтаксический анализ
Глава 5. Синтаксически управляемая трансляция
Глава 6. Генерация промежуточного кода
Глава 7. Среды времени выполнения
Глава 8. Генерация кода
Глава 9. Машинно-независимые оптимизации
Глава 10. Параллелизм на уровне команд
Глава 11. Оптимизация параллелизма и локальности
Глава 12. Межпроцедурный анализ
Приложение А. Завершенный пример начальной стадии компилятора
Приложение Б. Поиск линейно независимых решений
Предметный указатель
Об авторе
Отзывы
Что касается работы магазина, то в этот раз заказ пришел быстро, книга в хорошем состоянии, не считая пыли на корешке и пары длинных (не глубоких) царапин на обложке. Жаль, что книги не оборачиваются защитной пленкой, а помещаются прямо в картонную коробку.
По оформлению - когда я получил переиздание 2014 года, "отпечатанное способом ролевой струйной печати" в чеховском филиале ОАО "Первая Образцовая типография", негодованию моему не было предела: такое ощущение, что книга напечатана на струйном принтере, да и еще и на бумаге не самого лучшего качества.
Разумеется, содержание важнее, но все равно - читать серые (а не четкие черные) буквы на страницах, где текст с обратной стороны хорошо просвечивает - поначалу требует некоторого привыкания. Учитывая внушительный объем (и, как следствие вес) - с удовольствием купил бы электронное издание в качестве альтернативы.
Книга очень вдохновляет, и во время чтения часто одолевает желание сесть и попробовать реализовать что-то из описанного в ней.
Отдельным плюсом книги является большой раздел, посвященный регулярным выражениям. Если вы не сталкивались с ними прежде, то после его прочтения сможете составлять регулярные выражения, и даже написать собственную их реализацию.
Уже после первых нескольких глав вам станет понятно, как написать собственный калькулятор математических выражений. Или синтаксически управляемый генератор лабиринтов для вашей игры:)
Кстати, эта книга просто вынудит вас научиться работать с деревьями, если вы еще не умеете этого делать достаточно хорошо.
Сейчас существует огромное количество готовых языков, и вряд ли вы решите разработать свой полноценный компилятор для практических нужд. Но это нисколько не уменьшает удовольствия от изучения соответствущих вопросов и от творческого процесса разработки. Если же вы амбициозный студент, и ваш дипломный проект - компилятор, транслятор или интерпретатор кода, то это просто идеальная книга для вас!
От людей, профессионально занимающихся компиляторами, слышал, что книга устарела и содержит много очевидного. Возможно, это действиетльно так. Но для первого знакомства с интереснейшей темой разработки компиляторов лучшей замены этой книге наверное не найти!
Целиком и полностью поддерживаю. Был приятно удивлен изменениями во 2 издании.
Не для всех программеров, конечно - из-за тематики.
Последние поступления в рубрике "Тематика определяется"
Математика. Подготовка к ЕГЭ. Задачи с параметрами.10-11 классы
В предлагаемом пособии представлен обширный материал, посвященный двум заключительным и сложным темам ЕГЭ профильного уровня: задачам с параметрами и числам и их свойствам. На многочисленных примерах с подробными решениями и обоснованиями (как и требуется на экзамене) показаны различные методы и решения задач.... | |
План счетов бухгалтерского учета с последними изменениями
Читателю предлагается самая последняя редакция Плана счетов бухгалтерского учета финансово-хозяйственной деятельности организаций и инструкции по его применению с учетом последних приказов Минфина РФ. План счетов - это важнейший инструмент бухгалтерского учета, настольная книга для каждого практического бухгалтера.... | |
На ферме. Книжка с наклейками
Игры с наклейками - занятие не только интересное, но и полезное. С этой книгой малыш познакомится с различными видами транспорта, потренируется решать простые логические задачки и находить соответствия.... |
Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Ахо А., Лам М.С., Сети Р., Ульман Д., Компиляторы. Принципы, технологии и инструментарий | Лам Моника С., Сети Рави в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.