Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Лисп - семейство языков программирования. Характерные особенности лиспов: динамичность, гомоиконность (код как данные), программируемость.
- [b]Основные диалекты[/b]
- — [u]Common Lisp[/u] - разрабатывался как промышленный язык, пригодный для широкого спектра применения, из-за чего имеет достаточно объемную спецификацию. Является мультипарадигменным (процедурщина, функциональщина, ооп (CLOS)), с сильной, динамической типизацией. Есть опциональная декларация типов и, в некоторых реализациях (sbcl, например), частичный их вывод.
- Описание особенностей: http://habrahabr.ru/post/143490
- Основные реализации:
- + свободные: SBCL (нативный код), Clozure CL (нативный код), ECL (через сишку), Clisp (байт-код; небольшой размер образа; похоже, заброшен), Clasp (llvm; ориентирован на интероп с c++), ABCL (байт-код JVM), gcl, cmucl
- + коммерческие: LispWorks, Allegro CL, Scieneer CL, mocl (для программирования под ведро и ios)
- — [u]Scheme[/u] - это минималистичный лисп, пригодный в основном для обучения, исследований. Тем не менее Racket, вполне практичен. Racket включает в себя много подъязыков (typed racket, lazy racket, frtime racket), включая схему стандартов r5rs и r6rs.
- — [u]Clojure[/u] - Стильный, модный, молодежный лисп с бóльшим уклоном в функциональщину, иммутабельными структурами данных, поддержкой параллельщины с транзакционной памятью, агентами. Ориентированность на JVM сильно отразилась на дизайне языка, что многим не нравится.
- — [u]Emacs Lisp[/u] - его область применения ограничивается емаксом. Является наследником ТОГО САМОГО MacLisp'а.
- — [u]Tcl[/u] - скриптовый язык, оче удобен для написания скриптиков с окошками или edsl
- — [u]Rebol[/u]
- — [u]PicoLisp[/u] - [s]Наркоманская хуита[/s]
- — newLISP - Скриптовый лисп с компактным и быстрым интерпретатором и батарейками на любой случай жизни. В первую очередь предназначен для скриптоты, которую обычно пишут на perl, python, tcl, sh: обработка текстов, работа с сетью, базами данных, взаимодействие с ОС, построение графиков и т.п.
- Список возможностей: http://www.newlisp.org/index.cgi?Features
- Отличия от других диалектов: http://www.newlisp.org/index.cgi?page=Differences_to_Other_LISPs
- [b]Что читать?[/b]
- — [u]Common Lisp[/u]
- + Practical Common Lisp http://www.gigamonkeys.com/book/ или русский перевод — http://lisper.ru/pcl/
- + On Lisp http://www.paulgraham.com/onlisp.html
- + Common Lisp HyperSpec http://www.lispworks.com/documentation/HyperSpec/Front/ — стандарт языка
- + Art of Metaobject Protocol — подробное описание MOP и CLOS
- Алсо, годная статья про проектирование eDSL'ей на CL http://swizard.info/articles/solitaire/article.html
- — [u]Scheme[/u]
- + http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html
- + Racket Guide
- + SICP (это скорее вводные лекции по программированию, а не учебник по схеме, но тоже пойдет)
- — [u]Clojure[/u]
- + Programming Clojure, 2nd edition (для новичков)
- + The Joy Of Clojure, 2nd edition (есть есть бэкграунд в Лиспе или ФП)
- — [u]Tcl/Tk[/u]
- + Официальный учебник http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html
- + Документация по tcl http://www.tcl.tk/man/tcl8.6/TclCmd/contents.htm и tk http://www.tcl.tk/man/tcl8.6/TkCmd/contents.htm
- + Статьи про Tcl и Tk на wikibooks с примерчиками https://en.wikibooks.org/wiki/Category:Tcl_Programming
- + TkDocs с примерами на tcl, perl, ruby http://www.tkdocs.com/tutorial/index.html
- [b]Среды разработки[/b]
- Одно из основных преимуществ лиспа в сравнении с языками с циклом разработки "написал → перекомпилировал → запустил в отладчике" - поддержка интерактивно-итеративного метода разработки. Но без инструментария, обеспечивающего полноценное взаимодействие с реплом, оно сводится на нет. Поэтому писать без использования нормальной среды - значит упустить важную особенность языка.
- — [u]Common Lisp[/u]
- + Emacs + SLIME - самый лучший вариант.
- + vim + SLIMV
- + LispWorks
- + [s]AllegroCL IDE[/s] упаси боже
- + Eclipse + cusp
- + [spoiler]<Что-нибудь для сублайма/атома уже запилили, наверное?>[/spoiler]
- — [u]Scheme[/u]
- + Emacs + geiser
- + drRacket
- — [u]Clojure[/u]
- + Emacs + CIDER
- + LightTable
- + Vim-fireplace
- + Cursive Clojure (IntelliJ plugin)
- + Counterclockwise (Eclipse plugin)
- — [u]Tcl[/u]
- + Emacs + tcl-mode (только подсветка синтаксиса и простенькое взаимодействие с реплом, но жить можно)
- Чтобы не пердолиться с емаксом, можно взять уже преднастроенный spacemacs ( https://github.com/syl20bnr/spacemacs ) или prelude ( https://github.com/bbatsov/prelude ).
- [b]Библиотеки[/b]
- — [u]Common Lisp[/u]
- + Quicklisp ( https://www.quicklisp.org/beta/ ) - CPAN из мира CL
- + Quickdocs ( http://quickdocs.org/ ) - документация по всем пакетам из quicklisp
- + Cliki ( http://cliki.net/ )
- + Обзор экосистемы общелиспа на швабре ( http://habrahabr.ru/post/265589/ )
- — [u]Scheme[/u]
- + Racket: http://pkgs.racket-lang.org/ и http://planet.racket-lang.org/
- + Chicken: http://wiki.call-cc.org/chicken-projects/egg-index-4.html
- + http://snow.iro.umontreal.ca/?tab=Packages
- + http://www.schemespheres.org/spheres
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement