Краткое объяснение двух последних глав SICP - PullRequest
7 голосов
/ 24 ноября 2010

Может ли кто-нибудь дать мне четкое и краткое объяснение последних 2 глав SICP (структура и интерпретация компьютерных программ), мета-лингвистической абстракции ch4 и вычислений ch5 с помощью машин регистра?

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

1 Ответ

17 голосов
/ 26 ноября 2010

Отказ от ответственности, фактический ответ ниже

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

Если вы хотите создать чистый язык программирования с нуля с использованием переводчика, я бы порекомендовал книгу EPL Фридмана.

Если то, что вы ищете в своей бакалаврской работе, является более глубоким пониманием всех фундаментальных вопросов в обеих предыдущих книгах, тогда читайте мой ответ ниже. SICP - это образовательная работа, она пытается донести основные понятия на понятном языке, насколько это возможно. Он не будет вдаваться в подробности о леворекурсивных синтаксических анализаторах, исключении общих подвыражений, расширениях SSE x86 и т. Д.

SICP CH4-5

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

Глава 4 начинается с создания мета-циклического интерпретатора Схемы: небольшого интерпретатора Схемы, написанного на самой Схеме. Это даст вам основы рекурсивного интерпретатора и послужит основой для построения серии мини-языков в оставшейся части главы 4-5. Он отвечает на вопрос о том, как представить ваш проанализированный код, какие структуры данных задействованы, как отделить хост от базового языка и т. Д. Важно отметить, что языковой переводчик сам по себе является еще одной компьютерной программой. В оставшейся части главы 4 показано, как можно изменить вкус вашего языка, изменив предыдущий переводчик. Два больших из них - ленивый анализ и логическое программирование.

Глава 5 создает приблизительную модель «регистрационных машин», чтобы представить ваш текущий компьютер на абстрактном уровне. Они создают небольшой машинный язык регистров, который действует как язык ассемблера для любых целей и задач. Они вводят все структуры данных и конструкции потока управления, необходимые для следующего этапа: создание интерпретатора схемы на этом машинном языке. Чем-то все еще похож на мета-круговой интерпретатор. После этого они спрыгивают с глубокого конца и создают компилятор схем на своем машинном языке регистров; в комплекте с этапом сборки, оптимизацией хвостовой рекурсии, сборкой мусора, лексической адресацией, трассировкой и т. д.

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

...