Я бачив багато навчальних програм CS та навчальних пропозицій для нових програмістів, які закликають програміста-початківця вивчити ліст-перекладача, який спеціально написаний на lisp. Всі ці сайти говорять про речі, схожі на "його інтелектуальне одкровення", "це досвід просвітництва, який повинен мати кожен серйозний програміст", або "він показує вам апаратні та програмні відносини" та інші неясні твердження, особливо з цієї статті, взяті з це поважне керівництво .
Загальне почуття мого питання полягає в тому, як ліс досягає вищезазначених цілей і чому ліс? Чому б не якась інша мова?
Я запитую це, тому що я щойно закінчив писати схему інтерпретатора схеми (взято з SICP http://mitpress.mit.edu/sicp/ ), і тепер я пишу інтерпретатора пітона за схемою, і я намагаюся мати цю легендарну епіфанію що має походити спеціально від колишнього. Я шукаю конкретні технічні деталі між двома мовами, якими можу скористатися у своїх інтерпретаторах схем, щоб зрозуміти, як працюють програми.
Більш конкретно:
Чому вивчення перекладача, яке написано мовою, яку він інтерпретує так, - це просто чудова розумова вправа зберігати оригінальну мову та побудовану мову прямо, чи є конкретні проблеми, рішення яких можна знайти лише в характері оригінальна мова?
Як інтерпретатори Lisp демонструють хороші архітектурні концепції для майбутнього дизайну програмного забезпечення?
Що б я пропустив, якби я зробив цю вправу іншою мовою, як C ++ або Java?
Що з цієї вправи найбільше використовується винос або «розумовий інструмент»? **
** Я вибрав відповідь, яку я зробив, тому що помітив, що я отримав завдяки цій вправі більше навичок проектування інструментів розбору в моїй голові, ніж будь-який інший інструмент, і я хотів би знайти різні методи синтаксичного аналізу, які можуть працювати краще для схеми перекладач, ніж інтерпретатор пітона.