ilammy / lisp

Lisp In Small Pieces на русском языке
https://ilammy.github.io/lisp
Other
191 stars 23 forks source link

Интерпретация Лиспа и Scheme

Это перевод на русский язык «широко известной в узких кругах» книги Кристиана Кеннека «Les Langages Lisp» (aka Lisp in Small Pieces). Книга затрагивает основы построения интерпретаторов и компиляторов Лиспа (в первую очередь его диалекта Scheme), а также разнообразие вариантов понимания семантики его конструкций и возможностей вроде окружений, замыканий, исключений, продолжений, рефлексии и макросов.

Готовые сборки

В гитхабовских релизах доступны предварительно собранные варианты:

На Github Pages хостится web-based версия.

Что где валяется

Файл Содержимое
build.* билд-скрипты
makeindex.py скрипт, формирующий предметный указатель
book-src/ исходный текст книги; содержимое файлов самоочевидно
epub/ исходный текст книги, структура EPUB-контейнера, шрифты
epub/fontconfig CSS с настройками для разных базовых размеров шрифта
scm-src/ копия исходных текстов программ, прилагаемых к книге

Сборка

Для сборки необходимы pdfLaTeX и Python 2.7. Запускаете из корневой директории простенький скрипт build.sh или build.bat и ждёте, пока LaTeX сделает три прохода по тексту. Забираете lisp.pdf из корневой директории.

Python необходим для генерации предметного указателя. Обеспечьте, пожалуйста, запускаемость интерпретатора по команде python.

Скрипты не устанавливают необходимые LaTeX-пакеты. Ожидается, что они или уже доступны, или что ваш дистрибутив LaTeX автоматически их выкачает из CTAN при сборке документа.

Сборка проверена в Debian 7.0 (TeX Live) и Windows (MiKTeX 2.9). Для Windows необходимо установить MiKTeX, установить для него CM-Super и PSCyr (0.4d-beta9), остальное выкачивается автоматически. Для Debian достаточно сделать

sudo aptitude install cm-super texlive-lang-english texlive-lang-french \
    texlive-lang-cyrillic texlive-latex-base texlive-latex-recommended  \
    texlive-latex-extra texlive-pictures

И установить PSCyr вручную.

Шрифты из пакета PSCyr используются только для буквиц и титульной страницы, так что при желании от этой зависимости можно легко избавиться без значительного ущерба для качества. Если желания нет, то удачи с установкой:

Сборка EPUB

Для этого дополнительно потребуются Imagemagick и Ghostscript (для конвертации иллюстраций в PNG), и Info-ZIP (для упаковки результата в EPUB-контейнер). Для сборки вызывайте скрипты с опцией epub. Забираете пачечку lisp-*pt.epub из корневой директории.

Конвертилка Imagemagick должна быть доступна по команде convert. Info-ZIP — по команде zip.

Сборка проверена в Debian 7.0 (Imagemagick 6.7.7, Ghostscript 9.05, Info-ZIP 3.0) и Windows (Imagemagick 6.8.7, Ghostscript 9.10, Info-ZIP 3.0).


Контакты

Домашняя страница профессора Кеннека (клац), его электронный адрес: Christian.Queinnec@lip6.fr

Оригинал исходных кодов из scm-src можно скачать одним архивом отсюда.

Если вас смущает GitHub или вы не способны отыскать в Гугле мой личный имейл и домашний адрес, то можете слать жалобы, угрозы и предложения сюда: lisp.in.small.pieces@gmail.com

Лицензирование и прочая шушера

По соглашению с автором книги, данный перевод распространяется под лицензией CC BY-ND 3.0 (см. файл LICENSE с копией).

Таким образом, вы можете свободно:

При обязательном соблюдении следующих условий:

Пользуясь правом уточнения лицензии, лично я не считаю производными работами форки с целью исправления орфографических, пунктуационных ошибок, факапов в формулах и исходных кодах, а также иных внешних недочётов, не влияющих на смысловое наполнение. И этим даю своё разрешение (и даже поощряю их создание) при условии оформления соответствующих пулл-реквестов.

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

За разрешением на всё прочее (сокращение, перевод, создание комиксов по мотивам и т. п.), пожалуйста, обращайтесь к автору книги; он не кусается, его имейл чуть выше. Лично я не против любого использования, но я не вправе это решать самостоятельно.

Также CC BY-ND распространяется исключительно на содержимое книги: текст и иллюстрации, а также на файлик с текстом лицензии. LaTeX-макросы сами по себе, makeindex.py и всё остальное, не имеющее непосредственного отношения к контенту книги, распространяется на условиях WTFPL (читай: находится в общественном достоянии).

Исходные коды программ, находящихся в scm-src и приведённых в тексте книги, распространяются на условиях, описанных в scm-src/README. Директория scm-src является зеркалом оригинальных исходников, сделанныи исключительно ради удобства. Никаких изменений в него не вносилось.