Книга: Essentials of Programming Languages
После прочтения Lisp in Small Pieces мне захотелось ознакомиться с другой классической книгой по языкам программирования: Essentials of Programming Languages от Даниэля Фридмана (англ. Daniel Friedman) и компании. Книга оказалась толковой, поэтому хочется хотя бы несколько слов о ней написать.

У Lisp in Small Pieces и Essentials of Programming Languages много общего: материал иллюстрирован кодом интерпретаторов, сами интерпретаторы традиционно написаны на Scheme, а вопросы синтаксиса почти не обсуждаются как скучные.
Но если LiSP концентрируется именно на Лиспах, почти сразу переходя к главному предмету книги, то авторы EoPL дают более широкую картину, начиная обсуждение с рекурсии, основ лямбда-исчисления и введения в язык Scheme.
После приветственных расшаркиваний EoPL переходит к традиционным для теории языков программирования темам: вариантам передачи параметров в функцию, области видимости переменных, связыванию переменных, продолжениям (англ. continuations) и их реализации в интерпретаторах, переходу к компилятору от интерпретатора языка и так далее.
Акцент в EoPL делается прежде всего на интерпретаторах, без отвлечения, например, на денотационную семантику. Сам текст читается намного лучше, чем LiSP, вероятно, из-за проблем в переводе последней, и сопровождается очень наглядными практичными примерами.
Думаю, что в роли первого учебника EoPL более удачна: в тему вводит плавнее, с разъяснением смежных тем, текст в книге читается легче. С другой стороны, LiSP - хорошая книга для продвинутого читателя, знакомого с интерпретаторами и Scheme, и которому хочется узнать не только о стандартных решениях, но и возможных альтернативах.