Цель данной книги - быстро и основательно научить вас языку Common Lisp. В первой части книги на множестве примеров объясняются основные концепции программирования на Common Lisp, вторая часть - это современное описание стандарта ANSI Common Lisp, содержащее каждый оператор языка.
В этой книге автор постарался показать уникальные особенности, которые выделяют Лисп из множества других языков программирования, а также предоставляемые им новые возможности, например макросы,...
Цель данной книги - быстро и основательно научить вас языку Common Lisp. В первой части книги на множестве примеров объясняются основные концепции программирования на Common Lisp, вторая часть - это современное описание стандарта ANSI Common Lisp, содержащее каждый оператор языка.
В этой книге автор постарался показать уникальные особенности, которые выделяют Лисп из множества других языков программирования, а также предоставляемые им новые возможности, например макросы, которые позволяют разработчику писать программы, которые будут писать другие программы. Лисп - единственный язык, который позволяет с легкостью осуществлять это, потому что только он предлагает необходимые для этого абстракции.
Книга "ANSI Common Lisp" предназначена как для студентов, изучающих этот язык, так и для профессиональных программистов. Ее чтение не требует предварительного знания Лиспа. Опыт написания программ на других языках, безусловно, полезен, но не обязателен. Повествование начинается с основных понятий, что позволяет уделить особое внимание тем моментам, которые обычно приводят в замешательство человека, впервые знакомящегося с Лиспом. Профессиональные разработчики, желающие изучить Лисп, оценят простой, практический подход. Те, кто уже знаком с языком, найдут в книге множество полезных примеров и оценят ее удобство в качестве справочника по стандарту ANSI Common Lisp.
Лучший способ выучить Лисп - начать писать на нем программы. После небольшого введения в главе 2 объясняется все, что понадобится для создания первых Лисп-программ. В главах 3-9 рассматриваются ключевые элементы программирования на Лиспе. Особое внимание уделяется таким понятиям, как роль указателей в Лиспе, использование рекурсии и значимость функций как полноценных объектов языка.
Следующие материалы предназначены для читателей, которые хотят более тщательно разобраться с техникой программирования на Lisp. Главы 10-14 охватывают макросы, CLOS (объектная система Common Lisp'а), операции со списками, оптимизацию, а также более сложные темы, такие как пакеты и макросы чтения.
Главы 15-17 подводят итог предыдущих глав на трех примерах реальных приложений: программы для создания логических интерфейсов, HTML-генератора и встроенного объектно-ориентированного языка программирования.
Последняя часть книги состоит из четырех приложений, которые включают руководство по отладке, исходные коды для 58 операторов языка, описание основных различий между ANSI Common Lisp и предыдущими версиями языка, а также справочник по каждому оператору в Common Lisp.
Несмотря на то, что эта книга посвящена ANSI Common Lisp, вы можете изучать по ней любую разновидность Common Lisp. Примеры, демонстрирующие новые возможности обычно сопровождаются комментариями, поясняющими, как они могут быть адаптированы к более ранним реализациям.
Данное издание было написано 15 лет назад, но несмотря на это, книга и на настоящий момент представляет большую практическую ценность. Она соответствует стандарту языка, который не менялся с момента ее написания, и, похоже, не будет меняться в течение ощутимого времени. Кроме того, в ней описаны модели и методы, пришедшие в программирование из Лиспа и в той или иной мере актуальные в современном программировании.
В числе уникальных особенностей Лиспа Грэм выделяет интерактивность, автоматическое управление памятью, динамическую типизацию и замыкания. На момент написания книги Лисп конкурировал с такими языками, как С, C++, Паскаль, Фортран (на протяжении книги автор сравнивает Лисп именно с ними). Эти языки "старой закалки" действительно представляют полную противоположность Лиспу. На настоящий момент разработано множество языков, в которых в той или иной степени заимствованы преимущества Лиспа. Таким, например, является Perl, который вытесняется более продвинутым языком Python, а последний, несмотря на популярность, сам испытывает конкуренцию со стороны языка Ruby, известного как "Лисп с человеческим синтаксисом". Такие языки благодаря гибкости быстро находят свою нишу, при этом оставаясь средствами общего назначения. Так, Perl прочно занял нишу скриптового языка в Unix-подобных системах. Однако, механизм макросов, лежащий в основе Лиспа, пока не был заимствован ни одним из языков, так как прочно связан с его синтаксисом. Кроме того, Лисп выгодно отличается от своих "последователей". Согласитесь, искусственное добавление возможностей в язык с уже существующей структурой и идеологией существенно отличается от случая, когда язык изначально разрабатывался с учетом данных возможностей.
Зачем изучать Лисп? Потому что он позволяет делать то, чего не могут другие языки. Лисп предоставляет такие инструменты, которых нет в других языках. С макросами, замыканиями и динамической типизацией Лисп превосходит объектно-ориентированное программирование.
Помимо новых инструментов, Лисп предоставляет и новые приемы. Отдельно взятые технологии, впервые появившиеся в Лиспе, такие как автоматическое управление памятью, динамическая типизация, замыкания и другие, значительно упрощают программирование. Взятые вместе, они создают критическую массу, которая рождает новый подход к программированию.
Об авторе
Пол Грэм проживает в США. Предприниматель, независимый консультант, программист, эссеист, известен как специалист по языку программирования Lisp. Пол создал диалект Лиспа, названный им Arc. Он является автором книг "On Lisp" (1993), "ANSI Common Lisp" (1995) и "Hackers & Painters" (2004). Грэм получил степень бакалавра в Корнелльском университете, степени магистра и PhD в области информатики в Гарвардском университете, изучал живопись во Флоренции.
В 1995 году Грэм и Роберт Моррис основали Viaweb, первый application service provider (ASP). Программное обеспечение Viaweb, написанное на Common Lisp, позволяло пользователям создавать собственные интернет-магазины. Летом 1998 года Viaweb был продан Yahoo.
После продажи Viaweb Грэм начал писать очерки для своего сайта paulgraham.com. Они варьируются от "Побеждая посредственность" ("Beating the Averages"), в котором Лисп сравнивается с другими языками программирования и вводится слово Блаб, до размышлений на тему жизни нердов в старших классах ("Why Nerds are Unpopular"). Собрание его очерков было издано O'Reilly - "Hackers and Painters".
В 2005 году после произнесения речи в Harvard Computer Society, позднее опубликованной в виде очерка "Как начать стартап" ("How to Start a Startup"), Грэм с Тревором Блеквеллом, Джессикой Ливингстон и Робертом Моррисом основали компанию Y Combinator с целью помочь деньгами стартапам в самом начале их пути, особенно тем, которые основывались очень молодыми людьми, ориентированными на создание новых программных технологий. Y Combinator инвестировал во множество стартапов, включая reddit, Justin.tv, loopt, Heroku и Xobni.
Журнал BusinessWeek включил Пола Грэма в список 25 наиболее влиятельных людей в Сети (The 25 Most Influential People on the Web) за 2008 год.
Одним из успешных проектов Пола Грэма и компании Y Combinator стало создание социально-новостного сайта Hacker News.
Отзывы
Понятное, отлично написанное руководство и справочник по азам и продвинутым возможностям ANSI Common Lisp. Это больше чем просто введение в язык - с таким обширным справочным материалом для большинства читателей книга будет неплохой альтернативой дядюшке Стилу.
Ричард Фейтман, Калифорнийский университет в Беркли
Эта книга, соответствующая стандарту ANSI, будет идеальным учебным пособием.
Джон Фодераро, Franz. Inc.
Пол Грэм снова сделал это. Его первая книга, "On Lisp", содержала превосходное описание ряда продвинутых возможностей Лиспа, а эта предоставляет понятное и обстоятельное введение в язык, включая такие моменты, как оптимизация производительности кода.
Томас Читам, Гарвардский университет
Последняя глава книги восхитительна. В ней на фоне объектно-ориентированного программирования объясняются сразу несколько ключевых идей. Она проводит читателя через несколько реализаций объектно-ориентированной системы, постепенно усложняя ее.
Оставить комментарий