LINUX.ORG.RU

Опубликован перевод книги «Lisp in Small Pieces»

 , , , ,


17

5

Это достаточно известная книга Кристиана Кеннека, рассматривающая семантику Лиспа и основы его реализации на примере диалекта Scheme. В процессе повествования разбирается множество аспектов семантики языка, начиная разнообразными вариантами окружений, проходя через продолжения и исключения, заканчивая рефлексией, сутью макросов, компилятором в Си и объектной системой.

Книга содержит 11 интерпретаторов, 2 компилятора, стопку упражнений в каждой главе, уйму интересного материала об истории Лиспа и причинах принятия тех или иных решений в дизайне языка, некоторое количество аллюзий на современные языки программирования, а также небольшой вагончик литературы впридачу.

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

Книга (пока) существует только в электронном виде. По соглашению с автором, она распространяется под CC BY-ND (с небольшими оговорками). Репозиторий с исходниками книги, исходниками программ, уточнённой лицензией и контактными данными располагается здесь.

На данный момент есть только версия, свёрстанная под A4. Варианты под читалки и прочие айпады ожидаются в скором времени. (Это муторное дело.)

>>> Скачать PDF

★★★

Проверено: maxcom ()

Ответ на: комментарий от unsigned

Я думал Вы наоборот поправить решили, извините :)

A-234 ★★★★★ ()
Ответ на: комментарий от ilammy

Слово «уже» тут лишнее и является гнусным передергиванием. Типа намек, что когда-то якобы было «нужно».

anonymous ()

Отлично. Большое спасибо!

ssh2 ★★ ()
Ответ на: комментарий от dave

Что за атрибуты? Я что-то пропустил последние 20 лет? :)

В общем, да. ФП с типизованными и разнообразно структурированными данными сильно отличается от ФП на лиспе. Например, вдумчиво прорешать задачки из SICP на скале весьма поучительно.

anonymous ()
Ответ на: комментарий от ilammy

Ну ты ж знаешь, что Дисп и динамически типизированные языки это уже не нужно и не модно ;)

Мамкин борщ перестал на ЛОРе появляться? Или что?

mv ★★★★★ ()

Lisp невероятно хорош, но, имхо, Perl лучше (в достойных руках).

anonymous ()
Ответ на: комментарий от anonymous

Ну ты ж сравнил ножницы с бананом!

Я хоть и поклонник Perl'а, но для какой-нибудь распознавалки капч на нейросети взял бы лиспик.

kamyrros ()

Вы молодец!

anonymous ()
Ответ на: комментарий от anonymous

Attention! Лиспотред внезапно кишит поборниками статической типизации.

dukzcry ()

купил бы в бумажном виде.

rsync ★★ ()

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

Шрифты предпочитаю пожирнее, но это личное. Порадовало форматирование абзацев: только в паре мест заметил коридоры на три строки, ни разу - на четыре, что во всяких вордах - обычное дело. Для несведущих: коридорами называют расположение пробелов один над другим. Сработала магия TeX?

Bagrov ★★★★ ()
Ответ на: комментарий от Bagrov

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

Шрифты предпочитаю пожирнее, но это личное. Порадовало форматирование абзацев: только в паре мест заметил коридоры на три строки, ни разу - на четыре, что во всяких вордах - обычное дело. Для несведущих: коридорами называют расположение пробелов один над другим. Сработала магия TeX?

Стиль, шрифты, форматирование, коридоры.... УБЕЙСЯ!!

anonymous ()
Ответ на: комментарий от Bagrov

Сработала магия TeX?

Отчасти да. Отчасти — просмотр на 50% зуме и правка всех замеченных ляпов. Под конец уже просто больше пролистывал и махал рукой: «и так сойдёт».

ТеХ лучше Ворда разбивает абзацы на строки, так что у него переносы и пробелы распределяются равномернее, что косвенно понижает вероятность получить коридор. Прямо для избегания коридоров в его алгоритме ничего нет.

ilammy ★★★ ()
Ответ на: комментарий от rikardoac

Спасибо! Надо будет постараться всё же кого-то уговорить...

ilammy ★★★ ()
Ответ на: комментарий от dukzcry

Лиспотред внезапно кишит поборниками статической типизации.

Статическая типизация это не только повод для священных войн, но и инструмент, который хорош для одних задач, умеренно применим к другим и плохо годится для третьих. Например, Дж. Маккарти хорошо знал теорию типов данных, кое-то писал на эту тему и вполне обсуждал применимость сильной типизации к решению некоторых задач ИИ. А один из немногих русских теоретиков, серьезно вложившихся в теорию типов, читал во времена оны в вузе спецкурс по Схеме.

anonymous ()
Ответ на: комментарий от Bioreactor

Сам-то что нищебродишь за жалкие 150к, если такой «умный»?

anonymous ()
Ответ на: комментарий от Bioreactor

а почему ты считаешь что программирование нужно только программистам работающим именно по найму?

ты уподобляешься профессиональному писцу для которого открыли что существует пишущая машинка, и который издаёт вопли что машинисткам платят меньше чем стенографисткам :)

масса людей пишут программы для своей повседневной деятельности, и им важны не денегодобывательные перспективы того или иного языка программирования, а производительность рабочего инструмента в их руках, решающего именно их прикладные задачи здесь и сейчас. и нет, им не нужно очередное «блоатваре»... и фотожоп с аутокадом не нужны, им нужны их программы автоматизирующие их профессиональную деятельность.

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

anonymous ()
Ответ на: комментарий от anonymous

А для таких, как ты, Visual Basic существует. На кой тебе скобкота?

anonymous ()
Ответ на: комментарий от mentalmenza

ну вообще то я тоже считаю что питон не так популярен :)

все профессиональные прикладные системы это репл + недоперехаченный интерпретатор (иногда еще гуй для неофитов висит). grass, R, j(k, apl), матматика символьная, khoros, CADы... да практически всё профи это репл (схемы, лиспа, питона + dsl) и стандартная библиотека прикладная.

anonymous ()
Ответ на: комментарий от anonymous

А для таких, как ты, Visual Basic существует. На кой тебе скобкота?

узнаю программатора :)

это для таких как ты лишенцев-стяжателей твой бейсик существует :)

мне за код растянутый на 5 страниц вместо одной строки не платят в отличии от тебя. этот код нужен только _мне_, поскольку экономит _моё_ время и даёт лично _мне_ преимущество.

и не думай что я не пробовал это говнобейсик использовать...

то что в «скобках» заняло две строчки кода, в этом «расширении пакета» вылилось в страницу кода и при этом было настолько горбато и не переносимо на другие случаи, что мне никак не помогло сэкономить ни время, ни силы... короче пусть индусы на этом бейсике пишут свои for :)

anonymous ()
Ответ на: комментарий от unsigned

Я думаю, правильно «об истории».

а, ну извини

anonymous ()
Ответ на: комментарий от anonymous

денегодобывательные перспективы того или иного языка

Да в общем, в CAD/CAM всегда можно было деньги функциональным программированием зарабатывать в любом разумном количестве. Другое дело, что сама эта сфера не всем интересна.

anonymous ()
Ответ на: комментарий от Bioreactor

Для гнущих дешёвые понты студиоузов из Усть-Мухобалалайских радиотехнических университетов.

Гнущим более дорогие и столичные понты, сообщу, что хороший программист обязан знать более одного языка программирования. А очень хороший - как минимум один язык из каждой парадигмы - ОО, скриптовый, функциональный, императивный, низкоуровневый и язык для написания DSL. А знать разные парадигмы необходимо, хотябы чтобы понимать область применения инструментов.

alt-x ★★★★★ ()
Ответ на: комментарий от kamyrros

Что пользуете для перевода — омегуТ или что-нибудь проприетарное?

Orlusha ★★★★ ()
Ответ на: комментарий от unsigned

Ты один перевел 600 страниц о_О Выглядит интересно, спасибо.

Текст недурно бы отдать на редакторскую правку.

Orlusha ★★★★ ()
Ответ на: комментарий от Orlusha

Что пользуете для перевода — омегуТ или что-нибудь проприетарное?

Веб-интерфейс Transifex.com (свободно).

kamyrros ()

Можно попросить опубликовать ее в .info формате, чтобы можно было в Emacs читать? Спасибо.

anonymous ()
Ответ на: комментарий от Orlusha

Текст недурно бы отдать на редакторскую правку.

Наверное, но на первый взгляд перевод сделан на профессиональном уровне.

unsigned ★★★ ()

ilammy, покажи это Отту обязательно, он и насчет издания может подсказать.

unsigned ★★★ ()

есть отличное твёрдое введение

страшно подумать, что это там можно ввести!

matumba ★★★★★ ()

Пыщь! EPUB-вариант почти доделан.

Есть только одна проблема: у меня нет iДевайсов; eInk-читалка у меня древняя и тупо крешится, если главы не резать на четыре-пять частей (а если резать, то она клала прибор на 70% CSS); вменяемых десктоп-просмотрщиков EPUB я так и не нашёл. Поэтому всё делалось в браузере и нужны бета-тестеры, чтобы посмотреть, реальны ли мои влажные фантазии о возможности переноса вёрстки в этот ваш EPUB, или этот формат подходит только для неизвращённой художественной литературы, потому что производители девайсов не заморачиваются нормальной поддержкой.

( Lothlorien, windofchange)

ilammy ★★★ ()
Ответ на: комментарий от ilammy

могу затестить на еинке и андроиде, где взять epub?

вменяемых десктоп-просмотрщиков EPUB я так и не нашёл.

fbreader?

PaulCarroty ★★★★ ()
Ответ на: комментарий от Lothlorien

http://rghost.net/50442156

Собрал на коленке. В репозиторий ещё не закоммичены бинари со шрифтами, да и дома ещё пара коммитов не запушены. Но должно хотя бы открываться нормально. Внимание, пожалуйста, на картинки (1, 6, 7, 8, 9 главы) и математику в 5 главе. И вообще на общее соответствие тому, что отображается в браузере (epub это тупо zip, можно распаковать и посмотреть).

ilammy ★★★ ()
Ответ на: комментарий от PaulCarroty

http://rghost.ru/50450922

Обновил. Починил факап с названием файла пятой главы. В предыдущем архивчике она названа не так, как надо, и в результате не открывается.

fbreader?

http://i.imgur.com/YmMBHQN.png Это далеко от вменяемости.

Вот какого хрена надо лепить свои стили? Понятно, что какую-то стилизацию надо сделать, но зачем ей выдавать приоритет над явно прописанным CSS?

И я вот боюсь, что большинство хардварных eInk-читалок делают точно так же. То ли от лени сделать нормальный браузер, то ли от NIH-синдрома, запрещающего использовать готовый нормальный браузер, то ли от слабых аппаратных ресурсов, то ли не знаю от чего. Одна только надежда на большую адекватность разработчиков под планшеты.

ilammy ★★★ ()
Ответ на: комментарий от ilammy

стандартный нуковский ридер вообще отказался читать твой файл :) пишет, что неподдерживаемый формат. с coolreader та самая жесть, что и на твоем скрине.

PaulCarroty ★★★★ ()

Больше жалоб не поступало, так что я чуть причесал внешний вид, закоммитил в репозиторий бинарники со шрифтами, добавил адов костыль для кегля шрифта в EPUB (нормально перевести всё на относительные единицы у меня не получилось, вините CSS2, где нет rem), обновил скрипты. Всё собирается и т. д. Итого, EPUB-вариант можно считать оффициально™ готовым.

Пересобранный PDF с исправленными опечатками тут. EPUB-архивчики собраны здесь.

По итогам, я думаю, EPUB убог. Вернее, его поддержка читалками. Для художественной литературы, где запросы вёрстки покрываются чуть ли не Markdown, он подходит (ещё бы). Но для технической литературы я вижу только один вариант: костылить файлы специально под возможности каждого девайса. Мне стыдно за то, что вы увидите на своих экранах. Радует только то, что можно будет сделать web-версию.

ilammy ★★★ ()
Ответ на: комментарий от ilammy

Огромное спасибо за отличный перевод и версию в формате epub!

В epub версии в разделе «К читателю» сразу наткнулся на пропуск слова в первом абзаце:

Программирование требует понимания фундаментальных основ языка; для Лиспа и Scheme

В pdf версии все нормально.

qaqa ()
Ответ на: комментарий от ilammy

Под конец уже просто больше пролистывал и махал рукой: «и так сойдёт».

Под конец это со второй страницы? :). с. 17 в примере два раза flip. Один должен быть flop. Резануло глаз.

ziemin ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.