with some corrections from: http://bc.tech.coop/cltl2-ansi.htm
http://filonenko-mikhail.github.com/cltl2-doc/en/clm.html
http://github.com/filonenko-mikhail/cltl2-doc/enpdf/cltl2.pdf
If you find errors send me email to filonenko.mikhail<at>gmail.com, or post information here: https://github.com/filonenko-mikhail/cltl2-doc/issues
Also you can find me on
Tarball: https://github.com/filonenko-mikhail/cltl2-doc/tarball/master
git clone --depth 1 https://github.com/filonenko-mikhail/cltl2-doc cd cltl2-doc-ru
| pdf (pdflatex) | html (tex4ht) | |
|---|---|---|
| English | ./makepdf.sh | ./makehtml.sh |
| xpdf rupdf/cltl2.pdf | firefox en/index.html | |
| Russian | ./rumakepdf.sh | ./rumakehtml.sh |
| xpdf rupdf/cltl2.pdf | firefox ru/index.html |
http://filonenko-mikhail.github.com/cltl2-doc/ru/clm.html
http://github.com/filonenko-mikhail/cltl2-doc/rupdf/cltl2.pdf
Если вы нашли ошибку или желаете улучшить перевод, то пришлите мне письмо на filonenko.mikhail<at>gmail.com, или оставьте сообщение здесь: https://github.com/filonenko-mikhail/cltl2-doc/issues
Также меня можно найти здесь:
Участие приветствуется любое. Для этого можно склонировать репозитарий и править *.tex исходники.
Оригинал на английском языке: http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/lang/lisp/doc/cltl/cltl_src.tgz
Обновленный Даниелом Херрингом LaTeX код: http://git.androdna.com/?p=lisp/cltl2
Сжатый архив: https://github.com/filonenko-mikhail/cltl2-doc/tarball/master
Репозитарий: https://github.com/filonenko-mikhail/cltl2-doc
git clone --depth 1 https://github.com/filonenko-mikhail/cltl2-doc-ru cd cltl2-doc-ru
| ./makeall.sh | pdf (pdflatex) | html (tex4ht) |
|---|---|---|
| Русский | ./rumakepdf.sh | ./rumakehtml.sh |
| xpdf rupdf/cltl2.pdf | firefox ru/index.html | |
| Английский | ./makepdf.sh | ./makehtml.sh |
| xpdf rupdf/cltl2.pdf | firefox en/index.html |
Имена аргументов функций переводить не нужно.
Абзацы о несовместимости Common Lisp’а с другими диалектами переводить не нужно и желательно их удалять из оригинала. Они представлены так:
\begin{incompatibility}
...
\end{incompatibility}
Я думаю, что сейчас кроме историков больше никому не интересно знать о том, чем Common Lisp отличается от своих предшественников.
Устаревшие абзацы нужно переводить частично. Чаще всего после устаревшего абзаца идет информация о его обновлении, или же идет полностью новый абзац.
Устаревший абзац
\begin{obsolete}
...
\end{obsolete}
Обновление для устаревшего абзаца
\begin{newer}
...
\end{newer}
Имена, фамилии переводить не обязательно.
Названия языков переводить не нужно. Можно просто их склонять с помощью апострофа в конце и русского окончания. Например: “Пишу программу на Common Lisp’е”.
Пояснения о функционировании реализации переводить необязательно. Эти абазацы выделяются так:
\begin{implementation}
...
\end{implementation}
Главу 24 Errors переводить не нужно. Она полностью устарела и заменена главой Conditions.
Абзацы с отсылами к предыдущему изданию переводить не нужно. Такие абзацы выделены так:
\begin{new}%CORR
\emph{Notice of correction.}
...
\end{new}
Все остальные абзацы.
| Английский | Русский | Комментарий |
|---|---|---|
| character | строковый символ (иногда просто символ) | Тип данных, представляющий отображение символа строки. Переводится со словом строковый, чтобы не было путаницы с фирменными лисповыми символами. |
| integer | целое число, целочисленный | Тип данных, представляющий целое число. |
| ratios | дробный | Тип данных, представляющий дробное число. |
| rational | рациональные числа | |
| real | действительные числа | |
| floating-point numbers | числа с плавающей точкой | “с запятой” это более по русски, но технически будет сбивать с толку |
| single | одинарные | |
| short | короткие | |
| long | длинные | |
| double | двойные | |
| “true list” | “Ъ список” | Список с последним элементом равным nil (не dotted) |
| dotted list | список с точкой | Список с последним элементом не nil. |
| keywords | ключевые символы | Символы, которые вычисляются сами в себя. |
| keyword arguments (parameters) | именованные аргументы (параметры) | Аргументы, которые могут быть переданы с указанием имени в любой позиции при вызове функции. |
| self-evaluated | самовычисляемый | |
| macrocall | макровызов | Форма, вызывающая макрос. |
| pathname | имя файла, объект имени файла | Объект, который содержит в себе структуру описывающую имя файла в переносимом формате. |
| flow of control, control flow | порядок выполнения | |
| non-local exit | нелокальный выход | Это ситуация, “прерывания” выполнения функции. |
| are eq | равны eq | Равенство проверяется с помощью функции eq |
| are eql | равны eql | Равенство проверяется с помощью функции eql |
| are equal | равны equal | Равенство проверяется с помощью функции equal |
| are equalp | равны equalp | Равенство проверяется с помощью функции equalp |
| dispatching | диспетчеризация | |
| evaluator | вычислитель | Программа, которая вычисляет формы. По сути интерпретатор. |
| reader | считываеть | Программа, которая считывает формы. |
| printer | писатель | Программа, которая выводит объекты Common Lisp’а на некоторое устройство. |
| print name | имя символа (или выводимое имя) | Имя символа, которое выводится писателем. |
| printed representation | текстовое (строковое) представление | Каждый Common Lisp’овый объект может быть выведен в строку, но не каждый может быть получен из строки обратно |
| interned | пакетный (интернированный) | Символ, у которого есть домашний пакет. Либо символ, который доступен из данного пакета. |
| uninterned | беспакетный (дезинтернированный) | Символ, у которого нет домашнего пакета. Либо символ удаляемый из данного пакета. |
| intern | пакетировать (задать пакет) | Присваивание домашнего пакета символу. |
| unintern | депакетировать (лишить пакета) | Лишить символ домашнего пакета. |
| external symbol | внешний символ (экспортированный символ) | Символ, который “официально” доступен для пользователей пакета. |
| internal symbol | внутренний символ (неэкспортированный символ) | Символ, который служит только для внутренних нужд. |
| shadow | скрывать | Преимущество одного символа над другим, если у них одинаковые имена |
| hash table | хеш-таблица | Структура для хранения объектов ключ=>значение. |
| null environment | нулевое окружение | |
| the top-level-loop | цикл взаимодействия с пользователем | |
| synonym stream | поток-синоним | |
| bit sink | кусочек клоаки | |
| end-of-file | конец файла | |
| error signal | сигнал об ошибке | |
| to signal an error | сигнализировать ошибку | Перевод дословный и не совсем корректный, правильнее было бы сигнализировать об ошибке, но нынешний перевод более близок к техническому процессу. |
| to signal a correctable error | сигнализировать исправимую ошибку | Это значит, что при возникновении ошибки можно исправить некоторые переменные и перезапустить выполнение, для получения корректного результата |
| package cell | ячейка пакета | Это часть символа, для хранения ссылки на родительский пакет |
| nickname | псевдоним | Пакет имеет основное имя и один или несколько псевдонимов |
| keyword package | пакет ключевых симолов | В данном пакете хряняться ключевые символы |
| are presented in package | быть родственным пакету | Хитрое свойство символа |
| are available in package | быть доступным из пакета | Второе хитрое свойство, пересекающееся с предыдущим |
| generalized variable | обобщенная переменная | А точнее, это форма, в которую можно сохранять лисп объект с помощью setf |
| a correctable error is signaled | сигнализируется исправимая ошибка | Common Lisp’овая система условий и рестартов |
| place | место, форма обощенной переменной | |
| datum | значение | Значение, которое используется в ассоциативном списке (a-list) |
| literal atom | литеральный атом | Грубо говоря константный объект, записанный как есть в исходном коде |
| semi-standard | слегка стандартизирован | Некоторые строковые символы бывают такими |
| expander function | функция типа | Функция, которая определяется с помощью deftype. |
| stepping | пошаговое изменение | Изменение переменной в цикле |
CLOS, MOP
| Английский | Русский | Комментарий |
|---|---|---|
| class metaobject | классовый метаобъект | Метаобъект определяющий поведение класса |
| slot definition metaobject | слотовый метаобъект | Метаобъект содержащий информацию о слоте |
| generic function metaobject | функциональный метаобъект | Метаобъект содержащий информацию о обобщённой функции и связанными с ней методами |
| method metaobject | методовый метобъект | Метаобъект содержащий информацию о конкретном методе |
| specializer metaobject | специализаторский метаобъект | Метаобъект содержащий информацию о специализаторах метода |
| method combination metaobject | метаобъект комбинаций | Метаобъект содержащий информацию о кобминациях методов для обобщённой функции |
В процессе перевода LaTeX код преобразовывается и упрощается. Это сделано по нескольким причинам. Во-первых книга была сверстана давно в 1990 году и некоторые вещи сегодня просто отказались компилироваться. Во-вторых простой tex код гораздо лучше компилируется tex4ht и результат получается красивее.
Список преобразований:
Некоторые преобразования для более качественного вывода tex4ht:
| Было | Стало | Значение |
|---|---|---|
| {\it …} | \emph{…} | Выделение (обычно курсивом) |
| {\bf …} | \textbf{…} | Жирный |
| {\tt …} | \texttt{…} | Моноширинный |
| \(…\) | Скобки для математических формул | |
| \hbox{…} | … |
Простые математические формулы tex4ht может компилировать в текст без генерации картинки. Это очень удобно, так как online книга получается достаточно легковесной.
Основные команды для книги определены в файле commands_html.tex.
Данный файл содержит конфигурацию для генератора html tex4ht.
Данный файл содержит стили для книги в html формате.