Showing posts with label lisp-ru. Show all posts
Showing posts with label lisp-ru. Show all posts

December 16, 2010

Лисп как клей

Перебежчик с Common Lispа на Clojure zahardzhan (Роман Захаров) публиковал отчёт о своей первой коммерческой программе в Clojure. Его тезис: "реальные программы — это комья грязи; липкая гадость которая склеивает энное количество технологий, семантик и языков."

Понятие "glue language" - "язык-клей" началось с Tcl и Perl тк они обычно использовались для обработки и послания данных между разными, уже существующими системами ("cклеивая" их вместе). В принципе Лисп полностью годен как клей, но мешало плохая интеграция с операционной системой, неполноценные FFI, и отсутствие библиотек для парсинга разных форматов и интерфейсинга с базами данных и сетевых сервисов. Сейчас первые две проблемы во многих своих образах устранены, и количество библиотек для интерфейсинга все растет. Главные задачи что бы сделать Common Lisp годным как клей, это разработка новых библиотек для интерфэйсинга, и обновление и пиар существующих.

November 7, 2010

uri-template, Eager Future и Руби, и ещё немного бреда о Лисповой операционной системе

Выставил uri-template и Eager Future на github:

https://github.com/vsedach/uri-template
https://github.com/vsedach/Eager-Future

uri-template теперь использует named-readtables, которое дает возможность использовать readtables и reader macros аналогично packages. Рекоммендую named-readtables всем кто использует read-macros, и даже всем кто их не использует из за readtable-case :invert (самый перспективный метод иметь регистры типа верблюжих в символах).

План перевести uri-template на LLGPL (была лицензированной под BSD), а Eager Future переписать как совершенно новый проект с довольно уникальными свойствами среди конкурентных библиотек (тоже под LLGPL, но сначала надо додуматся как перебороть SBCL, там что-то вроде бага со слабыми ссылками - подробности (англ)).

Джастин Грант показал как можно реализовать компилятор с Ruby на Лисп (англ). Я наконец сошел с ума и тоже хочу сделать компилятор на Лисп, только из C. Зачем? Что бы взять NetBSD, скомпилировать его драйвера на Лисп, и получить Лисповую операционную систему (я же сказал я сошел с ума). Подробности на Hacker News (англ). Проект вот здесь, для начало взял Zeta-C, C компилятор для Лисп-машин, но уже видно что почти всё придётся переписывать. Для начала, может кто нибудь знает, существует ли рабочий Лисповый парсер C (в Zeta-C противная дрянь генерирована yacc-ом времен СССР и переведенная в Zetalisp)?

August 15, 2010

JavaScript и Лисп

Недавно появился целый ряд новых проектов обеспечивающих совместимость JavaScript c Common Lispом:

Ред Дэйли сделал Лисп байндинги для мозилловской SpiderMoney, CL-SpiderMonkey. Ещё у него есть форк SLIMEа который делает возможным вещи как автодополнение для Parenscript кода и тп. На данный момент возможности расширения сервисов SLIME под DSLы не очень хорошо поддержаны, но archimag обещал сделать все как надо.

Некий rb разработал SWANK прокси и форк Parenscriptа которые вместе позволяют подключить SLIME к браузеру (!) через web sockets. Так же он работает над компилятором с Лиспа на Флэш.

Marijn Haverbeke, Alan Pavičić, и Iva Jurišić решили реализовать JavaScript компилятор в Лиспе. Местами он уже более производителен чем SpiderMonkey.

July 13, 2010

Лисп семинары в Северной Америке

2010 семинар Scheme и функционального программирования состоится в Монреале 21-22 августа. Коллеги будут вести презентацию доклада о JazzScheme. Планирую присутствовать, и выставить впечатления здесь.

2010 международная Лисп конференция будет в Рино, США 19-21 октября. В этом году не собираюсь.

July 1, 2010

Новый Лисп стартап

Недавно Канадский Лисп-программист Уоррен Уилкинсон объявил о своем новом проекте - FormLis. FormLis состоит из комбинации вики и системы генерации веб-форм из простейшей разметки (пример), а так же безсхемной базы данных поддерживающей генерированные формы.

Уоррен решил описать конструкцию и использование встроенного Форт (Forth) компилятора в Лиспе (англ.). Интересно что Дуг Хойт посвятил главу своей книги Let Over Lambda конструкции встроенного Форт компилятора, но увидеть такое в веб-приложении неожиданно и оригинально.

April 20, 2010

Манга о Лиспе

Для тех кто знает японский язык, недавно наткнулся на забавные учебники Лиспа в виде манга и интерактивный. Ну а для англоязычных есть прославленный комикс Casting SPELs in Lisp (автор которого написал целую иллюстрированною книгу по теме - будет опубликована этим летом издательским домом No Starch Press).

March 1, 2010

Обновление библиотек

На прошлой неделе сделал релиз Parenscript 2.1 и Eager Future 0.4. В Parenscriptе добавилось неявное возвращение (как в Лиспе - те не надо всегда использовать return), возвращение множеств значений, и новое справочное руководство.

Paddy Mullen решил привести в приличный вид css-lite. На данный момент можно скачать здесь: http://github.com/paddymul/css-lite

Thomas de Grivel сделал форк uri-template: его cl-uri-templates дает возможность использовать операторы замены, которые были добавлены в третьем черновике документа URI Template. Сами операторы довольно плохо продуманы, и в добавок uri-template позволяет использовать обычные Лисповые формы в шаблонах, что намного проще.

November 19, 2009

Как программировать скоростные сервера в Лиспе

17 Ноября я презентовал мои идеи о конструкции скоростных серверов в Лиспе Монреальской группе программистов Scheme и Лисп.

Идеи презентации исходят из моей экзаменации веб-серверов Antiweb и TPD2 (смотрим презентацию Джона Фремлина о TPD2 Шибуйским Лисперам здесь). Один недостаток обоих серверов - довольно наивный подход к конкуренции и синхронизации. Я решил конструировать новый веб-сервер на базе этих примеров и размышлений, HTTP DOHC (DOHC - Dual Overhead Camshaft, когда в двигателе автомобиля двое распределительных валов в головке цилиндров - имя выбрано из за связанной двойной системы демультиплексирования в сервере).

Планирую дальнейшее развитие HTTP DOHC в полноценный веб-сервер, с интерфейсом схожим с Hunchentoot 1.0.

Ещё хочу обратить внимание - освободилось личное время для коммерческих проектов. Пишите на vsedach@gmail.com если есть что интересное.

Шаблоны и генерация кода

Читатели Russian Lisp Planet уже знакомы с системой archimagа cl-closure-template. Повторять все подробности не буду, но сделаю несколько комментарий о этом подходе к шаблонам.

Главное что надо заметить - cl-closure-template является не системой шаблонов, а системой генерации систем шаблонов. Это примерно та же разница между любым парсером, и парсер-генератором yacc. Если посмотреть на диаграмму систем шаблонов на Википедии, то по сравнению cl-closure-template берет шаблон как параметр и выдает программу, которая берет дату и производит документ.

Такой подход дата генерации истинно Лисповский, и имеет множество превосходств над обычными системами шаблонов. Например можно совместить его с Common Lispовской системой reader macros и получить полноправные новые правила синтаксиса (так сделано в CL-INTERPOL и uri-template). Или пропустить генерированный код через систему трансляции типа Parenscript и получить возможность использовать те же самые шаблоны в разных языках программирования, как и делается в cl-closure-template и uri-template. Так же открывается возможность использования методов частичной эвалюации (partial evaluation) для генерации оптимизированного кода.