README.org

March 12, 2013 · View on GitHub

If you find errors send me email to filonenko.mikhailgmail.com, or post information here: https://github.com/filonenko-mikhail/cltl2-doc/issues

Also you can find me on #+BEGIN_VERSE
freenode.org #lisp asvil asvil@jabber.ru #+END_VERSE

  • Source code

Tarball: https://github.com/filonenko-mikhail/cltl2-doc/tarball/master

  • Compilation

: 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 | |---------+----------------------+-----------------------|


  • Перевод книги Common Lisp The Language Second Edition by Guy Steele на русский язык

  • Читать онлайн

http://filonenko-mikhail.github.com/cltl2-doc/ru/clm.html

  • Скачать pdf

http://github.com/filonenko-mikhail/cltl2-doc/rupdf/cltl2.pdf

  • Ошибки, вопросы, пожелания

Если вы нашли ошибку или желаете улучшить перевод, то пришлите мне письмо на filonenko.mikhailgmail.com, или оставьте сообщение здесь: https://github.com/filonenko-mikhail/cltl2-doc/issues

Также меня можно найти здесь: #+BEGIN_VERSE
freenode.org #lisp asvil asvil@jabber.ru #+END_VERSE

  • Участие в переводе Участие приветствуется любое. Для этого можно склонировать репозитарий и править *.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 код

В процессе перевода LaTeX код преобразовывается и упрощается. Это сделано по нескольким причинам. Во-первых книга была сверстана давно в 1990 году и некоторые вещи сегодня просто отказались компилироваться. Во-вторых простой tex код гораздо лучше компилируется tex4ht и результат получается красивее.

Список преобразований:

Некоторые преобразования для более качественного вывода tex4ht:

| Было | Стало | Значение | |------------+--------------+----------------------------------| | {\it ...} | \emph{...} | Выделение (обычно курсивом) | |------------+--------------+----------------------------------| | {\bf ...} | \textbf{...} | Жирный | |------------+--------------+----------------------------------| | {\tt ...} | \texttt{...} | Моноширинный | |------------+--------------+----------------------------------| | (...) | ...... | Скобки для математических формул | |------------+--------------+----------------------------------| | \hbox{...} | ... | | |------------+--------------+----------------------------------|

Простые математические формулы tex4ht может компилировать в текст без генерации картинки. Это очень удобно, так как online книга получается достаточно легковесной.

  • commands.tex

Основные команды для книги определены в файле commands_html.tex.

  • cltl.cfg

Данный файл содержит конфигурацию для генератора html tex4ht.

  • cltl2ed.css

Данный файл содержит стили для книги в html формате.