/cltl2-doc

Attempt to translate "Common Lisp The Language Second Edition" into russian language

Primary LanguageC

Common Lisp The Laguage Second Edition by Guy Steel

with some corrections from: http://bc.tech.coop/cltl2-ansi.htm

Read online

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

Download pdf

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

Bug reports, questions, wishes

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

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.pdffirefox en/index.html
Russian./rumakepdf.sh./rumakehtml.sh
xpdf rupdf/cltl2.pdffirefox 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.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.shpdf (pdflatex)html (tex4ht)
Русский./rumakepdf.sh./rumakehtml.sh
xpdf rupdf/cltl2.pdffirefox ru/index.html
Английский./makepdf.sh./makehtml.sh
xpdf rupdf/cltl2.pdffirefox 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 формате.