Книга: Lisp in Small Pieces

Как и обещал, начинаю по-немногу переводить личный блог на околотехнические рельсы. И начну с впечатлений от книги Lisp in Small Pieces за авторством Кристиана Кеннека (англ. Christian Queinnec):

/images/book-lisp-in-small-pieces.jpg

Первый заход на книгу у меня случился несколько лет назад, и толку с этого не было: после поверхностного ознакомления книга мне не понравилась. Изначально она была опубликована на французском, английский же перевод ощущался грубоватым; сам материал показался если не очевидным, то не оригинальным точно. Тот экземпляр, помнится, я быстро перепродал на Амазоне, после чего благополучно забыл.

Через какое-то время по работе мне пришло в голову разработать ограниченный предметно-ориентированный язык (англ. domain-specific language, или DSL). Заморачиваться богатым синтаксисом не хотелось; наоборот, надо было быстро и дешево экспериментировать, для чего хорошо подходят S-выражения.

Неделей позже оказалось, что декларативность декларативностью, а под рукой должна и императивность иметься. Так — строчка за строчкой, скобка за скобкой — на свет появился очередной Лисп. По дороге выяснилось, что даже в этих нехитрых языках существует множество тонкостей: динамические или лексические области видимости, расширяемое или нерасширяемое глобальное пространство имен, различные подходы к интерпретации, компиляции и интерпретации с предварительной компиляцией…

Где-то тут захотелось и полистать еще разок на «Лисп по кусочкам». Дело в том, что книга Кристиана посвящена этим многочисленным деталям: как работают области видимости? как избежать тяжеловесных поисков определений переменных? компиляция? а если в C? Несмотря на некоторую спутанность подачи, в которой я виню перевод, «Лисп по кусочкам» подробно и педантично разбирает все эти важнейшие детали, не забывая ссылаться на релевантные научные работы и приводя примеры из реальных языков.

Через несколько дней книга снова была у меня. И в следующие недели с ней не расставался. Язык мой, конечно, все еще в разработке, но я уже с трудом сдерживаюсь, что не начать делать из него полноценную Схему.

Должен предупредить, что LiSP — литература нишевая. Но программистами, знакомым с традициями Лиспов и Схем, в ней все покажется логичным. Например, все интерпретаторы-примеры написаны на Схеме (как это принято в окололисповой среде); подразумевается уверенное знакомство с Лиспами и желание прорабатывать материал в коде.

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

Ну и, разумеется, вы должны хотеть сделать уже, наконец, свой собственный Лисп, которого так не хватает этому миру.

Кстати, русский перевод книги доступен свободно, английский же вариант при желании очень даже можно разыскать на просторах…

Комментарии

Comments powered by Disqus