SlideShare a Scribd company logo
1 of 22
Lisp MacLisp InterLisp ZetaLisp Scheme NewLisp Common Lisp Clojure Arc NuLisp Emacs Lisp Dylan
Характеристики Common Lisp среди Lisp'ов ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Стандарт 25 особых операторов: block  catch  declare  eval  flet  function  go if  labels  let  let*  load-time-value  locally macrolet  multiple-value-call  multiple-value-prog1 progn  progv  quote  return-from  setq  symbol-macrolet tagbody  the  throw  unwind-protect Всё остальное – пакет COMMON-LISP – фактически стандартная библиотека, которая через механизм импорта может быть переопределена поэлементно или вообще не подключена
Проблемы стандарта ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Реализации ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IDE Emacs SLIME ABLE ( http://phil.nullable.eu/ )‏ Cusp Plugin for Eclipse LispBox Luke Gorrie Erlang: ICFPC '01 winner with Joe Armstrong SLIME clbuild Smalltalk & Forth for OLPC
Де-факто стандартные библиотеки "APL is like a diamond. It has a beautiful crystal structure; all of its parts are related in a uniform and elegant way. But if you try to extend this structure in any way — even by adding another diamond — you get an ugly kludge. LISP, on the other hand, is like a  ball of mud . You can add any amount of mud to it and it still looks like a ball of mud." --Joel Moses Решают проблему несовершенства стандарта Как и любой медали – 2 стороны. Пример:  ITERATE
Описание систем и дистрибутивов ASDF   и  ASDF-INSTALL недостатки: over-engineered & underdocumented XCVB   clbuild   MUDBALLS
RE CL-PPCRE  (быстрее, чем Perl)‏ Edi Weitz Ediware ( http://weitz.de )‏ Hunchentoot & Drakma Cl-WHO & HTML-TEMPLATE European Lisp Meetup
Files & OS CL-FAD  &  CL-POSIX GUI LispWorks CAPI LTK Cells CL-QT4 ... McCLIM
FFI CFFI  vs  UFFI CL+J (cffi:defcallback passwd-cb-name :int   ((buf :pointer) (size :int) (rwflag :int) (unused :pointer))‏ (let ((tmp (cffi:foreign-string-alloc password-str)))‏   (cffi:foreign-funcall "strncpy"   :pointer buf     :pointer tmp     :int size)‏   (cffi:foreign-string-free tmp)‏   (setf (cffi:mem-ref buf :char (1- size)) 0)‏   (cffi:foreign-funcall "strlen" :pointer buf :int)))‏ (ssl-ctx-set-default-passwd-cb *ssl-global-context* (cffi:callback passwd-cb-name))))))‏
MOP CLOSER-MOP ContextL AspectL Pascal Costanza Highly Opinionated Guide to Lisp Reflection for the Masses CDR European Lisp Symposium
Sockets USOCKET Streams Gray Streams   ( TRIVIAL-GRAY-STREAMS )‏ Threading BORDEAUX-THREADS
Concurrency Implememntation specific (sb-ext:compare-and-swap)‏ PCALL CL-MUPROC CL-STM FSet
Functional Pattern Matching:  CL-UNIFICATION CLAZY CL-CONT
Парсинг данных ClosureXML (CXML), S-XML, CL-LIBXML2 CL-JSON DSV SQL, Persistance CLSQL, Postmodern Elephant, AllegroCache
Community cliki.net common-lisp.net paste.lisp.org cl-user.net #lisp @ freenode lisp.catap.ru Bill Clementson http://bc.tech.coop
comp.lang.lisp Rainer Joswig, Kenny Tilton, Pascal Bourguignon, Kaz Kylheku Erik Naggum Kent M. Pitman HyperSpec Condition Handling in the Lisp Language Family EQUAL Rights – and Wrongs – in Lisp
Книги Practical Common Lisp ( http://pcl.catap.ru/doku.php )‏ Let over Lambda On Lisp A Gentle Introduction to Symbolic Computation Successful Lisp ANSI Common Lisp Konrad Barksi's ( http://www.lisperati.com/ )‏ Art of Meta-Object Protocol Sketchy Lisp Lisp in Small Pieces Peter Siebel
Output Guy Steele Jr. Scheme CLtL Java Fortress Growing a Language Dick Gabriel Lucid Patterns of Software Worse is Better David Moon MacLisp Symbolics Plot Dan Weinreib Symbolics ObjectStore ITA Software http://weinreib.com
Еще Paul Graham ViaWeb YCombinator Arc Nature of Lisp Beating the Averages Peter Norvig PAIP, AIMA NASA Google Design Patterns in Dynamic Programming Mark Tarver Qi Lisp for the 21 st  Century A Bipolar Lisp Programmer Rich Hickey Clojure Values and Change
Будущее ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vw2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vw
Илья Трофимов
 
Erlang мгновенное просветление
Erlang  мгновенное просветлениеErlang  мгновенное просветление
Erlang мгновенное просветление
Maxim Sokhatsky
 
Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условиях
OpenVZ
 
Node.js (Андрей Костенко)
Node.js   (Андрей Костенко)Node.js   (Андрей Костенко)
Node.js (Андрей Костенко)
Ontico
 
инструменты параллельного программирования
инструменты параллельного программированияинструменты параллельного программирования
инструменты параллельного программирования
Alexander Petrov
 

What's hot (19)

Ровная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластереРовная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластере
 
2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vw2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vw
 
Apache Kafka and stream processing peculiarities [ru]
Apache Kafka and stream processing peculiarities [ru]Apache Kafka and stream processing peculiarities [ru]
Apache Kafka and stream processing peculiarities [ru]
 
Erlang мгновенное просветление
Erlang  мгновенное просветлениеErlang  мгновенное просветление
Erlang мгновенное просветление
 
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
 
Трансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScript
Трансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScriptТрансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScript
Трансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScript
 
Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?
 
Переход на Php 7 и итоги
Переход на Php 7 и итогиПереход на Php 7 и итоги
Переход на Php 7 и итоги
 
jPoint2014
jPoint2014jPoint2014
jPoint2014
 
Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условиях
 
Лев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про ErlangЛев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про Erlang
 
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
 
По ту сторону ООП: PEAK-Rules и PyProtocols
По ту сторону ООП: PEAK-Rules и PyProtocolsПо ту сторону ООП: PEAK-Rules и PyProtocols
По ту сторону ООП: PEAK-Rules и PyProtocols
 
Graphite@Scale: Как сохранять миллионы точек в секунду
Graphite@Scale: Как сохранять миллионы точек в секундуGraphite@Scale: Как сохранять миллионы точек в секунду
Graphite@Scale: Как сохранять миллионы точек в секунду
 
Node.js (Андрей Костенко)
Node.js   (Андрей Костенко)Node.js   (Андрей Костенко)
Node.js (Андрей Костенко)
 
Rails for dummies
Rails for dummiesRails for dummies
Rails for dummies
 
Движок LMDB - особенный чемпион
Движок LMDB - особенный чемпионДвижок LMDB - особенный чемпион
Движок LMDB - особенный чемпион
 
ToroDB (highload++2015)
ToroDB (highload++2015)ToroDB (highload++2015)
ToroDB (highload++2015)
 
инструменты параллельного программирования
инструменты параллельного программированияинструменты параллельного программирования
инструменты параллельного программирования
 

Viewers also liked

Lisp как универсальная обертка
Lisp как универсальная оберткаLisp как универсальная обертка
Lisp как универсальная обертка
Vsevolod Dyomkin
 
Новые нереляционные системы хранения данных
Новые нереляционные системы хранения данныхНовые нереляционные системы хранения данных
Новые нереляционные системы хранения данных
Vsevolod Dyomkin
 
Tedxkyiv communication guidelines
Tedxkyiv communication guidelinesTedxkyiv communication guidelines
Tedxkyiv communication guidelines
Vsevolod Dyomkin
 
Lisp for Python Programmers
Lisp for Python ProgrammersLisp for Python Programmers
Lisp for Python Programmers
Vsevolod Dyomkin
 

Viewers also liked (20)

What is Bitcoin? And what's going on?
What is Bitcoin? And what's going on?What is Bitcoin? And what's going on?
What is Bitcoin? And what's going on?
 
Lisp как универсальная обертка
Lisp как универсальная оберткаLisp как универсальная обертка
Lisp как универсальная обертка
 
Новые нереляционные системы хранения данных
Новые нереляционные системы хранения данныхНовые нереляционные системы хранения данных
Новые нереляционные системы хранения данных
 
Tedxkyiv communication guidelines
Tedxkyiv communication guidelinesTedxkyiv communication guidelines
Tedxkyiv communication guidelines
 
Aspects of NLP Practice
Aspects of NLP PracticeAspects of NLP Practice
Aspects of NLP Practice
 
Lisp Machine Prunciples
Lisp Machine PrunciplesLisp Machine Prunciples
Lisp Machine Prunciples
 
Can functional programming be liberated from static typing?
Can functional programming be liberated from static typing?Can functional programming be liberated from static typing?
Can functional programming be liberated from static typing?
 
CL-NLP
CL-NLPCL-NLP
CL-NLP
 
NLP in the WILD or Building a System for Text Language Identification
NLP in the WILD or Building a System for Text Language IdentificationNLP in the WILD or Building a System for Text Language Identification
NLP in the WILD or Building a System for Text Language Identification
 
Practical NLP with Lisp
Practical NLP with LispPractical NLP with Lisp
Practical NLP with Lisp
 
Lisp for Python Programmers
Lisp for Python ProgrammersLisp for Python Programmers
Lisp for Python Programmers
 
NPR Simile Timeline
NPR Simile TimelineNPR Simile Timeline
NPR Simile Timeline
 
ICT: mennyttä, olevaa ja tulevaa
ICT: mennyttä, olevaa ja tulevaaICT: mennyttä, olevaa ja tulevaa
ICT: mennyttä, olevaa ja tulevaa
 
Workshop Magento
Workshop MagentoWorkshop Magento
Workshop Magento
 
NLP Project Full Cycle
NLP Project Full CycleNLP Project Full Cycle
NLP Project Full Cycle
 
Overview of Bitcoin - Sweden
Overview of Bitcoin - SwedenOverview of Bitcoin - Sweden
Overview of Bitcoin - Sweden
 
Sugaring Lisp for the 21st Century
Sugaring Lisp for the 21st CenturySugaring Lisp for the 21st Century
Sugaring Lisp for the 21st Century
 
Crash-course in Natural Language Processing
Crash-course in Natural Language ProcessingCrash-course in Natural Language Processing
Crash-course in Natural Language Processing
 
Crash Course in Natural Language Processing (2016)
Crash Course in Natural Language Processing (2016)Crash Course in Natural Language Processing (2016)
Crash Course in Natural Language Processing (2016)
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 

Similar to Экосистема Common Lisp

Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский) Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Ontico
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
drupalconf
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
Ontico
 
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Ontico
 
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
Омские ИТ-субботники
 
Доклад на Highload-2012
Доклад на Highload-2012Доклад на Highload-2012
Доклад на Highload-2012
Alex Tutubalin
 

Similar to Экосистема Common Lisp (20)

Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...
 
Haskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell languageHaskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell language
 
Haskell
HaskellHaskell
Haskell
 
Функциональные сети на основе библиотеки SynapseGrid
Функциональные сети на основе библиотеки SynapseGridФункциональные сети на основе библиотеки SynapseGrid
Функциональные сети на основе библиотеки SynapseGrid
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
Lisp4web
Lisp4webLisp4web
Lisp4web
 
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
 
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский) Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
 
Intel DPDK в решениях для противодействия DDoS-атакам
Intel DPDK в решениях для противодействия DDoS-атакамIntel DPDK в решениях для противодействия DDoS-атакам
Intel DPDK в решениях для противодействия DDoS-атакам
 
OSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAPOSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAP
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
 
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
 
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
 
Доклад на Highload-2012
Доклад на Highload-2012Доклад на Highload-2012
Доклад на Highload-2012
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XC
 
LinuxConf-2014
LinuxConf-2014LinuxConf-2014
LinuxConf-2014
 
Multimaster2
Multimaster2Multimaster2
Multimaster2
 

Экосистема Common Lisp

  • 1. Lisp MacLisp InterLisp ZetaLisp Scheme NewLisp Common Lisp Clojure Arc NuLisp Emacs Lisp Dylan
  • 2.
  • 3. Стандарт 25 особых операторов: block catch declare eval flet function go if labels let let* load-time-value locally macrolet multiple-value-call multiple-value-prog1 progn progv quote return-from setq symbol-macrolet tagbody the throw unwind-protect Всё остальное – пакет COMMON-LISP – фактически стандартная библиотека, которая через механизм импорта может быть переопределена поэлементно или вообще не подключена
  • 4.
  • 5.
  • 6. IDE Emacs SLIME ABLE ( http://phil.nullable.eu/ )‏ Cusp Plugin for Eclipse LispBox Luke Gorrie Erlang: ICFPC '01 winner with Joe Armstrong SLIME clbuild Smalltalk & Forth for OLPC
  • 7. Де-факто стандартные библиотеки "APL is like a diamond. It has a beautiful crystal structure; all of its parts are related in a uniform and elegant way. But if you try to extend this structure in any way — even by adding another diamond — you get an ugly kludge. LISP, on the other hand, is like a ball of mud . You can add any amount of mud to it and it still looks like a ball of mud." --Joel Moses Решают проблему несовершенства стандарта Как и любой медали – 2 стороны. Пример: ITERATE
  • 8. Описание систем и дистрибутивов ASDF и ASDF-INSTALL недостатки: over-engineered & underdocumented XCVB clbuild MUDBALLS
  • 9. RE CL-PPCRE (быстрее, чем Perl)‏ Edi Weitz Ediware ( http://weitz.de )‏ Hunchentoot & Drakma Cl-WHO & HTML-TEMPLATE European Lisp Meetup
  • 10. Files & OS CL-FAD & CL-POSIX GUI LispWorks CAPI LTK Cells CL-QT4 ... McCLIM
  • 11. FFI CFFI vs UFFI CL+J (cffi:defcallback passwd-cb-name :int ((buf :pointer) (size :int) (rwflag :int) (unused :pointer))‏ (let ((tmp (cffi:foreign-string-alloc password-str)))‏ (cffi:foreign-funcall "strncpy" :pointer buf :pointer tmp :int size)‏ (cffi:foreign-string-free tmp)‏ (setf (cffi:mem-ref buf :char (1- size)) 0)‏ (cffi:foreign-funcall "strlen" :pointer buf :int)))‏ (ssl-ctx-set-default-passwd-cb *ssl-global-context* (cffi:callback passwd-cb-name))))))‏
  • 12. MOP CLOSER-MOP ContextL AspectL Pascal Costanza Highly Opinionated Guide to Lisp Reflection for the Masses CDR European Lisp Symposium
  • 13. Sockets USOCKET Streams Gray Streams ( TRIVIAL-GRAY-STREAMS )‏ Threading BORDEAUX-THREADS
  • 14. Concurrency Implememntation specific (sb-ext:compare-and-swap)‏ PCALL CL-MUPROC CL-STM FSet
  • 15. Functional Pattern Matching: CL-UNIFICATION CLAZY CL-CONT
  • 16. Парсинг данных ClosureXML (CXML), S-XML, CL-LIBXML2 CL-JSON DSV SQL, Persistance CLSQL, Postmodern Elephant, AllegroCache
  • 17. Community cliki.net common-lisp.net paste.lisp.org cl-user.net #lisp @ freenode lisp.catap.ru Bill Clementson http://bc.tech.coop
  • 18. comp.lang.lisp Rainer Joswig, Kenny Tilton, Pascal Bourguignon, Kaz Kylheku Erik Naggum Kent M. Pitman HyperSpec Condition Handling in the Lisp Language Family EQUAL Rights – and Wrongs – in Lisp
  • 19. Книги Practical Common Lisp ( http://pcl.catap.ru/doku.php )‏ Let over Lambda On Lisp A Gentle Introduction to Symbolic Computation Successful Lisp ANSI Common Lisp Konrad Barksi's ( http://www.lisperati.com/ )‏ Art of Meta-Object Protocol Sketchy Lisp Lisp in Small Pieces Peter Siebel
  • 20. Output Guy Steele Jr. Scheme CLtL Java Fortress Growing a Language Dick Gabriel Lucid Patterns of Software Worse is Better David Moon MacLisp Symbolics Plot Dan Weinreib Symbolics ObjectStore ITA Software http://weinreib.com
  • 21. Еще Paul Graham ViaWeb YCombinator Arc Nature of Lisp Beating the Averages Peter Norvig PAIP, AIMA NASA Google Design Patterns in Dynamic Programming Mark Tarver Qi Lisp for the 21 st Century A Bipolar Lisp Programmer Rich Hickey Clojure Values and Change
  • 22.