Главная » Просмотр файлов » А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий

А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947), страница 4

Файл №1114947 А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий) 4 страницаА.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947) страница 42019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

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

В настоящее время они используются в инструментарии для поиска ошибок в программном обеспечении и, что особенно важно, при проверке безопасности существующего кода. Большинство других методов — грамматика, регулярные выражения, синтаксические анализаторы и синтаксически управляемые трансляторы — также широко используются не только прн разработке компиляторов. Таким образом, наш подход остался тем же, что и в предыдущих версиях книги. Мы отдаем себе отчет в том, что лишь малая доля наших читателей будет заниматься разработкой или хотя бы поддержкой компилятора для какого-то из основных языков программирования.

Однако модели, теория и алгоритмы, связанные с компиляторами, могут применяться для решения широкого диапазона задач проектирования и разработки программного обеспечения. Таким образом, мы уделяем особое внимание задачам, которые обычно встречаются при разработке языковых процессоров, независимо от исходного языка или целевой машины. Использование данной книги Требуется примерно два семестра, чтобы охватить весь (или, по крайней мере, ббльшую часть) материал данной книги.

Обычно первая половина книги служит предметом изучения студентов на первых курсах, в то время как вторая, посвященная оптимизации кода, изучается на старших курсах. Вот краткое содержание глав книги. В главе 1 содержится, в основном, мотивационный материал, и при этом раскрываются некоторые базовые вопросы архитектуры компьютера и принципов языков программирования. Предисловие 25 В главе 2 разрабатывается миниатюрный компилятор и вводится множество новых концепций, которые будут затем детально рассмотрены в последующих главах. Сам компилятор вы найдете в приложении А.

Глава 3 посвящена лексическому анализу, регулярным выражениям, конечным автоматам и инструментарию для создания сканеров входного потока. Материал зтой главы может быть широко использован при разработке текстовых редакторов. В главе 4 приведены различные методы синтаксического анализа, нисходящие (рекурсивного спуска, 1.Ь) и восходящие (ЬК и его варианты). В главе 5 вы познакомитесь с принципиальными идеями синтаксически управляемых определений и трансляции. В главе 6 показано, как теория из главы 5 применяется для генерации промежуточного кода в типичном языке программирования.

В главе 7 обсуждаются вопросы сред времени выполнения, в частности управление стеком и сборка мусора. Глава 8 посвящена генерации объектного кода. В ней рассматриваются построение базовых блоков, генерация кода из выражений и базовых блоков и методы распределения регистров. Глава 9 служит введением в методы оптимизации кода, включая потоковые графы, структуры потоков данных и итеративные алгоритмы для их разрешения. В главе 10 рассматривается оптимизация на уровне команд. Основной упор делается на поиск возможностей параллельного вычисления в небольших последовательностях команд и их диспетчеризация для процессоров, способных выполнять несколько команд одновременно.

Глава 11 посвящена поиску крупномасштабной параллельности вычислений н ее использованию. Здесь упор делается на числовой код, который содержит связанные циклы, работающие с многомерными массивами. В главе 12 речь идет о межпроцедурном анализе: анализе указателей, использовании псевдонимов и анализе потоков данных, которые принимают во внимание последовательность вызовов процедур, достигающих данной точки кода. Материал данной книги изучался в нескольких университетах — Колумбии, Гарварде и Стенфорде. В Колумбии в учебных курсах для первокурсников по языкам программирования н трансляторам регулярно использовался материал глав 1 — 8.

Основным заданием данного курса являлось написание курсовой работы, выполняющейся небольшими группами студентов и состоящей в реализации небольшого языка программирования, спроектированного ими самостоятельно. Разработанные таким образом языки ориентированы на применение в различных областях, включая квантовые вычисления, генерацию музыки, компьютерную графику, игры, операции с матрицами и многое другое.

В своей работе студенты использовали генераторы компонентов компиляторов, такие как АИТЬК, 1.ех и Тасс, и методы синтаксически управляемой трансляции, рассматривающнеся в главах 2 и 5. Курс для старшекурсников основывался на материале глав 9 — 12, и основ- 2б Предисловие ной упор делался на генерацию кода и оптимизацию для современных машин, включая сетевую и многопроцессорную архитектуры. В Стенфорде краткий вводный курс охватывал материал приблизительно глав 1 — 8, хотя в нем было и введение в вопросы глобальной оптимизации, основанное на материале главы 9.

Второй курс, посвященный компиляторам, охватывал главы 9 — 12, а также материал по сборке мусора из главы 7. Студенты использовали местную систему ЮоеЧ на основе Зача для реализации алгоритмов анализа потоков данных. Необходимые требования Читатель должен владеть определенными знаниями в области информатики, включая, по меньшей мере, курс по программированию и курсы по структурам данных и дискретной математике.

Полезно также знать несколько различных языков программирования, Упражнения Практически в каждом разделе книги содержится большое количество упражнений. Более сложные упражнения отмечены одним восклицательным знаком, а самые сложные — двумя. Поддержка в Интернете Начальная страница книги находится по адресу с1гадопЬоо)с.асапйогс).ес)ц Здесь вы можете найти список обнаруженных ошибок и исправлений (!тггр: //ими-с1Ь. всапйогс).ес!ц/-ц11вап/с)галоп/еггага.!тГт1) и дополнительные материалы к книге. Мы надеемся сделать общедоступной информацию по всем курсам, посвященным компиляторам, которые мы ведем, включая домашние задания, решения задач и экзаменационные вопросы.

Мы также планируем сделать доступной информацию о важных компиляторах, предоставленную нх разработчиками. Благодарности Благодарим дизайнера обложки — С.Д. Ульман (Б.П. 1)!!шип) из Ягалхе Тол!с Ргойисг/опз. Джон Бентли ()оп Веп1!еу) основательно помог своими комментариями ряда глав книги, когда она находилась еще на стадии черновика.

Полезные комментарии и исправления ошибок были сделаны следующими людьми. Предисловие 27 Доменико Бьянкулли (Остен!со В!апсп!!!), Питер Бош (РеГег ВозсЬ), Марцио Басс (Магсю Впзз), Марк Идди (Маге ЕагЫу), Стефен Эдвардс (БгерЬеп Ебччагбз), Вибхав Гарг (Ч!ЬЬач Оагй), Ким Хазельвуд (Кпп Нале!ччоод), Гурав Кц (Оацгач Кс), Вей Ли (чче! 1л), Майк Смит (Мйге Бш!!Ь), Арт Стамнесс (Агг Бгапшезз), Криста Свор (Кгузга Бчоге), Оливер Тардью (01!ч!ег Тагббец) и Джия Зенг (Ла Уепй).

Мы благодарим всех их за помощь. Все оставшиеся в книге ошибки остаются на нашей совести. Кроме того, Моника благодарит своих коллег по работе над компилятором ЯЛР за 18-летнее обучение. Это Джеральд Айнер (ОегаЫ А!йпег), Дзинтарс Авотс (Оьйп!агз Ачогз), Саман Амарасингх (шатап Атагаз!пйЬе), Дженнифер Андерсон (депп!Тег Апдегзоп), Майкл Карбин (М!сЬае! СагЬ!п), Джеральд Чинг (ОегаЫ СЬеопй), Амер Диван (Атег О!ччап), Роберт Френч (КоЬегГ РгепсЬ), Анвар Гулом (Апиаг ОЬц!ошп), Мери Холл (Магу Най), Джон Хеннеси (УоЬп Неппеззу), Девид Гейне (ОачЫ Неше), Ших-Вей Лао (БЫЬ-'чче! 1лао), Ами Лим (Ату 1.цп), Бенджамин Лившиц (Веп)агп!п 1лчзЬ!Гв), Майкл Мартин (М!сЬае! Магбп), Дрор Майдан (Огог Маубап), Тодд Моури (ТогЫ Моччгу), Брайан Мерфи (Впап МцгрЬу), Джеффри Оплингер (ЮеГТгеу Ор!!пйег), Карен Пипер (Кагеп Р!ерег), Мартин Ринард (Магбп К!пагд), Олатунджи Рувасе (О!ашп)! Кпччазе), Константине Сапунцакис (Сопзгапбпе ЯарцпгхаЫз), Патрик Сатьянатан (Рацзсй БагЬуапагЬап), Майкл Смит (М!сЬае! Бш!1Ь), Стивен Тжианг (8!ечеп Т1!апй), Чау-Вен Ценг (СЬап-'ччеп Тзепй), Кристофер Анкель (СЬзззГорЬег 1)пйе1), Джон Воли (зоЬп 'ччЬа!еу), Роберт Вильсон (КоЬегГ 1!(г!!зоп), Кристофер Вильсон (СЬ6зГорЬег чч!!зоп) и Майкл Вольф (МЫЬае1 'ччо!!).

А. Ъ'. А., Чатмен, Нью-Джерси М. Я. 1., Менло-Парк, Калифорния К. Б., Фар-Хилле, Нью-Джерси 1. П. (!., Стенфорд, Калифорния Июнь, 2006 28 Предисловие От издательства Вы, читатель этой книги, и есть главный ее критик и комментатор.

Мы ценим ваше мнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересно услышать и любые другие замечания, которые вам хотелось бы высказать в наш адрес. Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бумажное или электронное письмо, либо просто посетить наш %еЬ-сервер и оставить свои замечания там. Одним словом, любым удобным для вас способом дайте нам знать, нравится или нет вам эта книга, а также выскажите свое мнение о том, как сделать наши книги более интересными для вас. Посылая письмо или сообщение, не забудьте указать название книги и ее авторов, а также ваш обратный адрес. Мы внимательно ознакомимся с вашим мнением и обязательно учтем его при отборе и подготовке к изданию последующих книг. Наши координаты: Е-ща11: хпйойиз11хатври!э1ьвЬхпд.сов %%%: Ьсгр://ими.их11хаыри!э1хаЬхпд.сов Информация для писем из России: !!5419, Москва, а/я 783 из Украины: 03150, Киев, а/я 152 ГЛАВА 1 Введение в компиляцию Языки программирования представляют собой средство описания вычислений для людей и машин.

Современный мир зависит от языков программирования, поскольку все программное обеспечение на всех компьютерах мира написано на том или ином языке программирования. Однако, прежде чем запустить программу, ее необходимо преобразовать в форму, которая может выполняться иа компьютере. Программные системы, выполняющие такое преобразование, называются комн иляя орами. Эта книга о том, как разрабатывать и реализовывать компиляторы. Вы узнаете, что для построения трансляторов для широкого диапазона языков и машин могут использоваться всего несколько базовых идей.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее