22
Lis p MacLisp InterLi sp ZetaLis p Scheme NewLisp Common Lisp Clojure Arc NuLisp Emacs Lisp Dylan

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

Embed Size (px)

DESCRIPTION

Презентация была представлена на Киевской встрече пользователей Lisp 2009-05-30

Citation preview

Page 1: Экосистема Common Lisp

LispMacLisp InterLisp

ZetaLispSchemeNewLispCommon Lisp

ClojureArcNuLisp

Emacs Lisp

Dylan

Page 2: Экосистема Common Lisp

Характеристики Common Lispсреди Lisp'ов

Lisp N Лексический и динамический диапазон s-выражения Динамическая типизация с опциональным объявлением типов Мультипарадигменность

Page 3: Экосистема Common Lisp

Стандарт

25 особых операторов:

block catch declare eval flet function goif labels let let* load-time-value locallymacrolet multiple-value-call multiple-value-prog1progn progv quote return-from setq symbol-macrolettagbody the throw unwind-protect

Всё остальное – пакет COMMON-LISP – фактически стандартная библиотека, которая через механизм импорта может быть переопределена поэлементно или вообще не подключена

Page 4: Экосистема Common Lisp

Проблемы стандарта Нет разделения на подпакеты Работа с файлами оторвана от реального мира В стандарте нет multithreading Нет sockets Нет streams Нет environment Нет RE CLOS не интегрирован до основания (нельзя наследовать от core data types), а MOP не стандартизирован вообще

Page 5: Экосистема Common Lisp

РеализацииНа cl-user.net перечисленно 26 реализацийиз них минимум 8 значительных: SBCL, CMUCL Allegro CL LispWorks CLISP Clozure CL ABCL Corman CL ECL

Page 6: Экосистема Common Lisp

IDEEmacs SLIMEABLE (http://phil.nullable.eu/)Cusp Plugin for EclipseLispBox

Luke GorrieErlang: ICFPC '01 winner with Joe ArmstrongSLIMEclbuildSmalltalk & Forth for OLPC

Page 7: Экосистема Common Lisp

Де-факто стандартныебиблиотеки

"APL is like a diamond. It has a beautiful crystal structure; all of its parts are relatedin 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 itand it still looks like a ball of mud." --Joel Moses

Решают проблему несовершенствастандарта

Как и любой медали – 2 стороны.Пример: ITERATE

Page 8: Экосистема Common Lisp

Описание систем идистрибутивовASDF и ASDF-INSTALLнедостатки: over-engineered & underdocumented

XCVB clbuild

MUDBALLS

Page 9: Экосистема Common Lisp

RE

CL-PPCRE (быстрее, чем Perl)

Edi WeitzEdiware (http://weitz.de)Hunchentoot & DrakmaCl-WHO & HTML-TEMPLATE

European Lisp Meetup

Page 10: Экосистема Common Lisp

Files & OS

CL-FAD & CL-POSIX

GUI

LispWorks CAPILTKCellsCL-QT4...McCLIM

Page 11: Экосистема Common Lisp

FFI

CFFI vs UFFICL+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))))))

Page 12: Экосистема Common Lisp

MOP

CLOSER-MOPContextLAspectL

Pascal CostanzaHighly Opinionated Guide to LispReflection for the Masses

CDR

European Lisp Symposium

Page 13: Экосистема Common Lisp

SocketsUSOCKET

StreamsGray Streams (TRIVIAL-GRAY-STREAMS)

ThreadingBORDEAUX-THREADS

Page 14: Экосистема Common Lisp

Concurrency

Implememntation specific(sb-ext:compare-and-swap)

PCALLCL-MUPROCCL-STMFSet

Page 15: Экосистема Common Lisp

Functional

Pattern Matching: CL-UNIFICATIONCLAZYCL-CONT

Page 16: Экосистема Common Lisp

Парсинг данныхClosureXML (CXML), S-XML, CL-LIBXML2CL-JSONDSV

SQL, PersistanceCLSQL, PostmodernElephant, AllegroCache

Page 17: Экосистема Common Lisp

Community

cliki.netcommon-lisp.netpaste.lisp.orgcl-user.net#lisp @ freenodelisp.catap.ru

Bill Clementsonhttp://bc.tech.coop

Page 18: Экосистема Common Lisp

comp.lang.lisp

Rainer Joswig, Kenny Tilton,Pascal Bourguignon, Kaz KylhekuErik Naggum

Kent M. PitmanHyperSpec

Condition Handling in the Lisp Language FamilyEQUAL Rights – and Wrongs – in Lisp

Page 19: Экосистема Common Lisp

КнигиPractical Common Lisp(http://pcl.catap.ru/doku.php)Let over LambdaOn Lisp

A Gentle Introduction to Symbolic ComputationSuccessful LispANSI Common LispKonrad Barksi's (http://www.lisperati.com/)

Art of Meta-Object ProtocolSketchy LispLisp in Small Pieces

Peter Siebel

Page 20: Экосистема Common Lisp

OutputGuy Steele Jr.SchemeCLtLJavaFortress

Growing a Language

Dick GabrielLucidPatterns of Software

Worse is Better

David MoonMacLispSymbolicsPlot

Dan WeinreibSymbolicsObjectStoreITA Software

http://weinreib.com

Page 21: Экосистема Common Lisp

ЕщеPaul GrahamViaWebYCombinatorArc

Nature of LispBeating the Averages

Peter NorvigPAIP, AIMANASAGoogle

Design Patterns in Dynamic Programming

Mark TarverQi

Lisp for the 21st CenturyA Bipolar Lisp Programmer

Rich HickeyClojure

Values and Change

Page 22: Экосистема Common Lisp

Будущее

Lisp reneissance (<= programming languages proliferation)

industry? нет (в смысле вебсайты на сток хостинге, бухгалтерские программы, десктопные или мобильные приложения) да (NASA, Aerospace, сложные вычисления, Интернет-стартапы, экспертные системы и т.д.)

CLtL3