ansi common lisp

О проекте.

Пару – тройку месяцев назад я заинтересовался языком Common Lisp. Как это произошло – уж и не помню. То ли статью какую – то прочитал, то ли еще как – то. Не суть.

Начал искать литературу, и с огорчением обнаружил, что вся мало – мальски стоящая литература о Common Lisp на английском. Сейчас правда ребята перевели Practical Common Lisp, за что честь им и хвала. В общем после ознакомления со всей доступной в сети литературой остановился на книге “Ansi Common Lisp” Пола Грэма.

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

В общем, если хотя бы один человек заинтересуется Common Lisp благодаря этому ресурсу, значит время потрачено не зря.

Кстати, просьба. Когда встретите ошибки(синтаксические или в терминологии и т.д) оставляйте пожалуйста комментарии, чтобы можно было их исправить. Некоторые термины я и вовсе не переводил.

О языке.

Хотелось написать что – нибудь такое, что бы сразу всех поразило. Но таких вещей в Common Lisp очень много. И об этом собственно книга. Так что приведу в пример одну вещь, которая меня потрясла при первом знакомстве.

Должен сказать, что Common Lisp совершенно незаслуженно многие считают эзотерическим языком. По мне так скорее С++ или C# более эзотеричные, чем Common Lisp. Но это уже отдельная тема. Один из доводов утверждения, что Common Lisp эзотерический язык: «Слишком много скобок!» Вот попыткой объяснить, почему и будет мой пример.
Что это?

(A  B  (C)  (D  C) )

Нетрудно догадаться, что это вложенный список с элементами A, B, (C), (D C), где последние два элемента – в свою очередь списки. Ничего удивительного, не правда – ли?
А вот еще пример:

(DEFUN B (C) (PRINT C))

Если вы не в курсе - это объявление простенькой функции, по имени "B" печатающей свой аргумент(она делает еще кое - что, но сейчас это не важно).
Ну так что? Ничего не замечаете?
Правильно!
Во втором примере, если заменить слово «DEFUN» на «A» и «PRINT» на «D» мы увидим такой – же список, как и в первом примере. Дошло? Если нет: Любая программа на Common Lisp – это еще и структура данных, с которой можно работать, как и с обычным списком!
Так зачем так много скобок в Common Lisp?

ansi common lisp

О книге.

Убежден, что на сегодняшний день – это лучшая книга для тех, кто хочет познакомиться с удивительнейшим языком программирования - Common Lisp.

Об Авторе.

Пол Грэм (Paul Graham) один из талантливейших программистов. Автор книг: «Ansi Common Lisp», «On Lisp» и «Hackers & Painters».