4. Peter Norvig , PAIP, 1992 http://norvig.com/paip.html What makes Lisp different? - Built-in support for lists - Automatic storage management - Dynamic typing - First-class functions - Interactive environment - Uniform syntax - Extensibility - History
5. Phillip Greenspun's 10 th rule of programming Any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp.
6. Guy Steele, автор спецификации Common Lisp, со-автор спецификации Java C++ Java Python Ruby Lisp We were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp.
8. Kent Pitman http://www.nhplace.com/kent/Papers/ Condition-Handling-2001.html The establishment of protocols is a sort of before-the-fact hedge against the "prisoner's dilemma"; that is, it creates an obvious way for two people who are not directly communicating to structure independently developed code so that it works in a manner that remains coherent when such code is later combined.
10. Функциональная парадигма - краткий и ясный код протокол функций высших порядков (map, reduce, find, remove, funcall/apply,…) функция-объект + коллекция - но практично!
11. Действительно большие системы - ОО - скрипты не масштабируется! Fractal programming http://olabini.com/blog/2008/06/ fractal-programming/ Ola Bini , JRuby Team
13. Для скептиков — нет единственно-правилного пути Андрей Москвитин http://archimag-dev.blogspot.com/2009/11/closure-template-5.html 5 дней — парсер и Common Lisp backend, компилирующий шаблоны в машинный код (на платформах, умеющих это, например на SBCL). Поддерживаются все управляющие конструкции, все указанные в спецификации операторы и функции. Система уже достаточно неплохо отлажена и готова к использованию. Размер исходного код — менее 800 строк кода на Common Lisp (оригинальный Java backend — 15 000). Какие-либо "навороченные" библиотеки не используются, только регулярные выражения, да штатные средства символьных вычислений, плюс есть зависимость от моей же библиотеки wiki-parser, но в ней менее 200 строк значимого для данной задачи кода...
14. Language-oriented programming - code is data - data is code (data-driven design) Rainer Joswig http://bc.tech.coop/ blog/050711.html Writing DSL's in Lisp = putting parentheses around the specification and make it run
16. http://groups.google.com/group/comp.lang.lisp/browse_frm/thread/b25de73bbe5eb9ba/de4230026ed741c6 Pascal Costanza The only easy way to do metaprogramming in Java is by writing interpreters — which is quite widely used — or by hiring lots of programmers and give them a catalogue of patterns to instantiate. The easiest way to do metaprogramming in Lisp is by using macros, which can be easily compiled away, so you don't have the same overhead as that of an interpreter at runtime. So my guess is that there is some form of interpreter running in the Java program that slows everything down.
18. Что нам стоит сделать язык расширяемым? 1. Гомоиконность 2. Ортогональность в основе 3. Отдать контроль программисту - Read time - Eval time - Run time
19. Зачем? Joel Moses 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.