Подборка книг о компиляторах и обо всем, что с ними связано
Вы читаете свежую версию подборки. Мы обновили и дополнили материал, изначально опубликованный 23 февраля 2016 года.
23К открытий24К показов
Для любого программиста понимание принципа работы используемых им инструментов — залог успеха. Особенно сильно в изучении программирования способно помочь знание того, как устроен и пишется компилятор, пусть даже совсем простой. Мы собрали подборку лучших книг по принципам работы компиляторов и их написанию, которые научат вас грамотному проектированию и низкоуровневому программированию этих мощнейших инструментов.
Всеобъемлющая книга о самых насущных проблемах проектирования и написания компиляторов под современные процессоры. Написанная как для студентов, так и уже состоявшихся разработчиков, она расскажет вам о множестве способов оптимизации кода и наиболее эффективных из них, а также расскажет о создании компилятора для современных актуальных языков.
Курсы по компиляторам в учебных заведениях далеко не всегда хорошо освещают эту тему. Книга «Создаем оптимизированный компилятор» призвана восполнить этот пробел. Здесь описывается принцип построения оптимизатора, генедатора кода, планировщика и распределения регистров на современных RISC процессорах. Выделяет книгу подход к вопросам с практической точки зрения: теория добавляется там, где интуитивное понимание невозможно.
Данная книга — официальное руководство от Free Software Foundation по «изнанке» компиляторов GNU. В нем содержатся следующие материалы: как поучаствовать в разработке компилятора GCC, разбор необходимых характеристик для хоста и целевой машины, поддерживаемых GCC, а также описание древовидной структуры исходного кода GCC и системы сборки. Сами авторы этой книги преподносят ее как справочник, в котором можно найти множество информации по внутренней структуре GCC.
Книга полна материала, охватывающего последние разработки технологии компиляции. Здесь описаны важные темы, без которых не обойтись в процессе построения современного компилятора, а именно принцип работы императивных и объектно-ориентированных языков, планирование инструкций и распределение регистров.
Данная книга является одной из серии книг, различающихся по используемым языкам программирования. В каждой из них изложены все этапы создания современного компилятора: лексический анализ, синтаксический анализ, абстрактные синтаксические и семантические действия, анализ потоков данных, распределение регистров. Также описывается покрытие текущих методов генерации кода и функциональные и объектно-ориентированные языки.
Вторая книга из серии «Modern Compiler Implementation», содержащая в себе примеры кода на языке Си. Рассматриваются те же темы, что и в предыдущей книге.
Третья книга из серии «Modern Compiler Implementation», проиллюстрированная частями кода, написанного на языке Java.
Цель книги «Introduction to Compiler Design» — обучить читателя создавать компиляторы для простых языков программирования. Хоть материал руководства и не охватывает методы оптимизации компилируемого кода, зато в книге даются некоторые наработки, которые используются в реальных компиляторах и помогут лучше разобраться в самой их концепции. В руководстве освещаются все этапы, необходимые для компиляции кода, написанного на языке высокого уровня, в машинный язык: разделение кода на лексические составляющие, его разбор, создание промежуточного кода, генерация машинного кода и использование регистров. Примеры кода представлены на псевдоязыке.
Широко известная книга, своего рода классика жанра, рекомендуемая многими профессорами и разработчиками. Не так давно она была переиздана, и теперь каждая глава содержит только самые актуальные сведения по разработке компиляторов. Авторы помнят, что некоторые читатели могут использовать эту книгу как полное пособие, и поэтому обращают внимание на широчайший круг проблем, с которыми можно столкнуться в процессе разработки программного обеспечения.
Фокусируясь на фундаментальных техниках, общих для всех языковых парадигм, эта книга расскажет вам все, что необходимо для создания современного компилятора. Тема рассмотрена с позиции всех наиболее популярных парадигм программирования – императивной, объектно-ориентированной, функциональной и некоторых других. Акцент сделан на техниках автоматизации, в том числе на инструментах для автоматизации проектирования компилятора.
Цель данной книги — познакомить читателя с основами компиляторов. Основное внимание в ней уделяется императивным и функциональным языкам программирования: подмножествам языков C++ и Haskell, на которых часто пишут компиляторы. Материал, представленный в руководстве, переносим на разные языки программирования. В книге используется инструмент BNF Converter, с помощью которого в автоматическом режиме генерируется большая часть кода компилятора.
По мнению автора, каждый программист должен знать, как работают компиляторы и интерпретаторы, чтобы легче понимать, как работают другие языки, и, возможно, создавать новые. В последней главе рассказывается о различных концепциях языков: от минималистичных полных по Тьюрингу языков до полноценного взаимодействия человека и компьютера на естественном языке.
Книга создана для того, чтобы помочь каждому исследователю и программисту обновить свои знания, усовершенствовать навыки и подготовиться к созданию прогрессивных качественных продуктов. 14 глав этого справочника посвящены таким вопросам, как сборка мусора, уменьшение времени выполнения компиляции и оптимизация процесса. Особое внимание уделено работе со встраиваемыми устройствами, а также способам отладки кода с ошибками. Книга обеспечит вам глубокое понимание принципа распределения регистров, программной конвейеризации, планировании инструкций и системы типизации.
Данная книга разработана вики-сообществом, поэтому постоянно дорабатывается. Ее основная цель — дать читателю понять, что написать самому компилятор вполне реально. Помимо компиляторов, в книге рассматривается создание интерпретаторов кода. Материал содержит минимум теоретической информации. Хорошо подходит для новичков, не знающих ничего о написании компиляторов и интерпретаторов.
Книга станет бесценной находкой для всех, кто начинает изучение семантики и логики языков программирования. Эта информация позволит вывести и систематизировать правила, которыми можно описать любой из существующих языков программирования. В книге использованы данные прогрессивных исследований, в том числе по такой животрепещущей теме, как параллелизм. Последняя глава посвящена параллельным языкам программирования, в том числе методам определения и проверки недетерминированных и параллельных программ.
Эта книга не о компиляторах и их проектировании, но она незаменима для всех, кто имеет дело с низкоуровневым программированием (а без него в создании компилятора не обойтись). Здесь вы найдете информацию о CRC, научитесь таким трюкам, как целочисленное деление, в том числе с помощью сдвигов, вычисление остатка без подсчета частного, новые алгоритмы сжатия и расширения, деление с плавающей точкой, алгоритм LRU, а также оцените галерею графиков дискретных функций.
Если вы знаете еще пару-тройку интересных книг, которые наглядно и понятным языком поясняют устройство и написание компиляторов, то поделитесь вашим мнением в комментариях. Лучшие книги добавим в эту подборку.
23К открытий24К показов