Я видел много учебных программ по CS и предложения для новых программистов, которые призывают начинающего программиста изучать интерпретатор lisp, который специально написан на lisp. Все эти сайты говорят что-то вроде «своего интеллектуального откровения», «это опыт просветления, который должен иметь каждый серьезный программист», или «он показывает вам аппаратные / программные отношения» и другие смутные утверждения, особенно из этой статьи, взятой из это уважаемое с практическими рекомендациями .
Общее мнение моего вопроса таково: как лисп достигает вышеуказанных целей и почему лисп? Почему не какой-то другой язык?
Я спрашиваю об этом, потому что я только что закончил писать интерпретатор схемы в схеме (взят из SICP http://mitpress.mit.edu/sicp/ ), и сейчас я пишу интерпретатор python в схеме, и я изо всех сил пытаюсь получить это легендарное прозрение это должно прийти конкретно от первого. Я ищу конкретные технические детали между двумя языками, которые я могу использовать в их интерпретаторах схем, чтобы понять, как работают программы.
Более конкретно:
Почему изучение переводчика, написанного на языке, который он интерпретирует, так подчеркнуто - это просто большое умственное упражнение, чтобы сохранить исходный язык и построенный язык прямо или есть конкретные проблемы, решения которых могут быть найдены только в природе оригинальный язык?
Как интерпретаторы LISP демонстрируют хорошие концепции архитектуры для будущего проектирования программного обеспечения?
Что бы мне не хватало, если бы я выполнил это упражнение на другом языке, таком как C ++ или Java?
Какой из этих упражнений чаще всего используется на вынос или «умственный инструмент»? **
** Я выбрал ответ, который сделал, потому что заметил, что благодаря этому упражнению я приобрел больше навыков в разработке инструментов синтаксического анализа в моей голове, чем любой другой инструмент, и я хотел бы найти другие методы синтаксического анализа, которые могут работать лучше для схемы. интерпретатор, чем интерпретатор Python.