Lisp MacLispInterLisp ZetaLisp Scheme NewLisp Common Lisp Clojure Arc NuLisp Emacs Lisp Dylan.

Презентация:



Advertisements
Похожие презентации
Structured Error Handling in the ABL Sarah Marshall QA Architect, OpenEdge Session 128.
Advertisements

1/27 Chapter 9: Template Functions And Template Classes.
Loader Design Options Linkage Editors Dynamic Linking Bootstrap Loaders.
© Luxoft Training 2013 Annotations. © Luxoft Training 2013 Java reflection / RTTI // given the name of a class, get a "Class" object that // has all info.
Sequences Sequences are patterns. Each pattern or number in a sequence is called a term. The number at the start is called the first term. The term-to-term.
Be The Most Productive Developer You Can Be! Kristen Howell OpenEdge Product Manager Matt Baker Principal Software Engineer Session 108.
Data Variable and Pointer Variable Pass by Reference Pointer Arithmetic Passing Array Using Pointers Dynamic Allocation.
Ecology and fashion. Project was done by Borodina Ludmila from 10 B.
Unit II Constructor Cont… Destructor Default constructor.
Object-Oriented Programming and Problem Solving Dr. Ramzi Saifan.
© 2005 Cisco Systems, Inc. All rights reserved. BGP v Route Selection Using Attributes Setting BGP Local Preferences.
© 2006 Cisco Systems, Inc. All rights reserved. HIPS v Configuring Groups and Policies Configuring Policies.
© 2006 Cisco Systems, Inc. All rights reserved. CVOICE v Configuring Voice Networks Configuring Dial Peers.
Work with server by XMLRPC – library in Java For students Author: Dudnik Oxana.
© 2006 Avaya Inc. All rights reserved. User privileges and user templates.
© 2005 Cisco Systems, Inc. All rights reserved. IPTX v Configuring Additional Cisco CallManager Express Features Configuring Cisco CallManager Express.
The Web The Internet. Level A2 Waystage Level A2 Waystage Listening (p.17) I can understand simple messages delivered at a relatively high speed (on every.
Benford Benford's law, also called the first-digit law, states that in lists of numbers from many (but not all) real-life sources of data, the leading.
Copyright 2003 CCNA 2 Chapter 17 TCP/IP Suite Error and Control Messages By Your Name.
Data Types in C. A Data Type A data type is –A set of values AND –A set of operations on those values A data type is used to –Identify the type of a variable.
Транксрипт:

Lisp MacLispInterLisp ZetaLisp Scheme NewLisp Common Lisp Clojure Arc NuLisp Emacs Lisp Dylan

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

Стандарт 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 – фактически стандартная библиотека, которая через механизм импорта может быть переопределена поэлементно или вообще не подключена

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

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

IDE Emacs SLIME ABLE ( 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 ( 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 freenode lisp.catap.ru Bill Clementson

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 ( Let over Lambda On Lisp A Gentle Introduction to Symbolic Computation Successful Lisp ANSI Common Lisp Konrad Barksi's ( 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

Еще 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

Будущее Lisp reneissance (