lisp4web
DESCRIPTION
TRANSCRIPT
— — Почему бы и нет?Почему бы и нет?
— Почему Lisp?
ХарактеристикиCommon Lisp
высокоуровневыйвысокоуровневый мультипарадигменныймультипарадигменный динамическийдинамический префиксный полностью скобочный префиксный полностью скобочный
синтаксис, code is dataсинтаксис, code is data
Уникальные технологииCommon Lisp
макросистемамакросистема мета-объектный протоколмета-объектный протокол сигнальный протоколсигнальный протокол протокол множественных протокол множественных
возвращаемых возвращаемых значенийзначений
(defun count-total-size (file) "Count the size of files and total number of lines in the output of `ls -l`, written to a FILE"
(with-open-file (in file) (let ((num-lines 0) (size 0)) (do ((line (read-line in nil) (read-line in nil))) ((null line) (close in)) (incf size (parse-integer
(cl-ppcre:scan-to-strings "\\b \\d+" line) :junk-allowed t))
(incf num-lines)) (values size num-lines)))
Пример программына Common Lisp
PHPPHP+ модуль Apache+ shared nothing+ “есть везде”, “все знают” и “просто работает”
+ специально для Web+ специально для Web+ достаточно быстрый (?)+ достаточно быстрый (?) – – специально для Webспециально для Web – – состояние нужно хранить вне языковой состояние нужно хранить вне языковой средысреды
– – примитивныйпримитивный
PHP — даже не совсем язык, а скорее PHP — даже не совсем язык, а скорее библиотека...библиотека...
Lisp vs PHP
C# & ASP.Net, JavaC# & ASP.Net, Java
Ruby, PythonRuby, Python
Lisp & высокоуровневыединамические языки
Чего мы можем добитьсяс Common Lisp?
Диспетчиризация HTTP-запросов с помощью замыканий
Использование DSL'ей для генерации HTML, JavaScript, SQL
Неявный pooling соединений с БД Новые подходы к тестированию
КонкретноеКонкретное vs vs абстрактноеабстрактное
Lisp для тех, кто любит Lisp для тех, кто любит программированиепрограммирование
Lisp для тех, кто хочет решать Lisp для тех, кто хочет решать уникальные уникальные проблемыпроблемы
Lisp для Lisp для предпринимателейпредпринимателей
Where's the catch?