13 марта 2012

Статус перевода cltl2ed.

Обновлено 19.06
23 главы переведена и требуют вычитки. У меня глаз замылен, поэтому если видите английский стиль изложения в русском переводе, всячески информируйте меня об этом: почтой, или багтрекером, или комментариями, или форком.

Книга оформлена для онлайн чтения в браузере. Очень удобно, например, параллельно repl-у открыть буфер с текстом в emacs-w3m.

1 Вступление
2 Типы данных
3 Область и продолжительность видимости
4 Спецификаторы типов
5 Структура программы
6 Предикаты
7 Управляющие конструкции
8 Макросы
9 Декларации
10 Символы
11 Пакеты
13 Строковые символы
14 Последовательности
15 Списки
16 Хеш-таблицы
17 Массивы
18 Строки
19 Структуры
20 Вычислитель
21 Потоки
27 Объектная система Common Lisp'а
28 Условия

Напомню, что почитать онлайн можно здесь: http://filonenko-mikhail.github.com/cltl2-doc/

А можно и pdf'ку скачать, правда качества вёрстки я не гарантирую.

С радостью приму любую критику.

8 комментариев:

  1. Круто! Предсказываю лисп-революшен во втором полугодии:)

    ОтветитьУдалить
  2. Спасибо тебе, добрый человек:)

    ОтветитьУдалить
  3. Анонимный14 июня 2012 г., 20:06

    Со всем уважением к проделанной работе, выглядит достаточно вольно.

    Глава 20 - ИМХО слишком английским осталось вступление. Предлагаемые исправления:

    Механизм, который выполняет программы на Лиспе, называется вычислитель. Более подробно, вычислитель принимает форму и выполняет расчёты определённые формой. Этот механизм доступен пользователю через функцию eval.

    Вычислитель, как правило, реализован как интерпретатор, который рекурсивно проходит по данной форме, выполняя каждый шаг вычисления по мере прохода. Однако, интерпретирующая реализация не обязательна. Допустимым альтернативным подходом для вычислителя является вначале полностью скомпилировать форму в выполняемый машиной код, и затем вызывать результат. Эта техника практически исключает несовместимости между интерпретируемым и компилируемым кодом, но также делает механизм evalhook относительно бесполезным. Допустимы также различные смешанные стратегии. Все эти подходы должны обеспечивать одинаковые результаты при выполнении корректной программы, но могут возвращать различные результаты для неправильных программ. Например, поведение может отличаться в том, когда раскрывается вызов макроса, определения макросов не должны зависеть от времени, когда они раскрываются. Разработчики должны документировать стратегию вычисления для каждой реализации.

    ОтветитьУдалить
  4. Анонимный14 июня 2012 г., 20:09

    Disclaimer - пример выше не эталон, разумеется, его использование для внесения изменений всецело в руках хозяина блога

    ОтветитьУдалить
  5. Анонимный14 июня 2012 г., 20:22

    Часть 20-1 Вычисление форм во время выполнения программы
    routines - наверное, лучше "процедуры"
    ...
    Любое вычисленное значение/что бы ни было вычислено ... возвращается в качестве результата eval

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

    ОтветитьУдалить
  6. Спасибо. На следующей неделе поправлю.

    ОтветитьУдалить