Lisp MacLispInterLisp ZetaLisp Scheme NewLisp Common Lisp Clojure Arc NuLisp Emacs Lisp Dylan. - презентация

Содержание

Слайд 2

Характеристики Common Lisp среди Lisp'ов Lisp N Лексический и динамический диапазон

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

Lisp N
Лексический и динамический диапазон
s-выражения

Динамическая типизация с
опциональным объявлением типов
Мультипарадигменность
Слайд 3

Стандарт 25 особых операторов: block catch declare eval flet function go

Стандарт

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

Проблемы стандарта Нет разделения на подпакеты Работа с файлами оторвана от

Проблемы стандарта

Нет разделения на подпакеты
Работа с файлами оторвана от

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

Реализации На cl-user.net перечисленно 26 реализаций из них минимум 8 значительных:

Реализации

На cl-user.net перечисленно 26 реализаций
из них минимум 8 значительных:
SBCL, CMUCL

Allegro CL
LispWorks
CLISP
Clozure CL
ABCL
Corman CL
ECL
Слайд 6

IDE Emacs SLIME ABLE (http://phil.nullable.eu/)‏ Cusp Plugin for Eclipse LispBox Luke

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

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

"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

Описание систем и
дистрибутивов

ASDF и ASDF-INSTALL
недостатки: over-engineered & underdocumented

XCVB

clbuild

MUDBALLS

Слайд 9

RE CL-PPCRE (быстрее, чем Perl)‏ Edi Weitz Ediware (http://weitz.de)‏ Hunchentoot &

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

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

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

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

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

Concurrency

Implememntation specific
(sb-ext:compare-and-swap)‏
PCALL
CL-MUPROC
CL-STM
FSet

Слайд 15

Functional Pattern Matching: CL-UNIFICATION CLAZY CL-CONT

Functional

Pattern Matching: CL-UNIFICATION
CLAZY
CL-CONT

Слайд 16

Парсинг данных ClosureXML (CXML), S-XML, CL-LIBXML2 CL-JSON DSV SQL, Persistance CLSQL, Postmodern Elephant, AllegroCache

Парсинг данных

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

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

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

Книги

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

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

Еще

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 21st Century
A Bipolar Lisp Programmer

Rich Hickey
Clojure
Values and Change