Простите за небольшие порции, просто сейчас завален работой — времени вообще нету… но следующая часть будет посвещена web-серверу Hunchentoot — там должно быть больше раза в полтора. К тому же боюсь, что объёмами и сложностью отпугну массы.
Отлично, будем ждать. Да, большие статьи читает скорее всего меньше человек, но тут и тема весьма специфична. Кому это интересно, тот прочтет и большую статью.
Пытался использовать Weblocks. Не пошло. Главная причина моего отказа от этого фрейворка в том, что он некорректно работает IE6 и IE7. Для серьёзного проекта это не годитсяю. Плюс свою роль сыграла моя неопытность в программировании под Web — хотел ковыраться на более низком уровне, чтобы ручками всё попробовать.
Блин, открывал статью с мыслью «Ура, наконец-то прелюдии кончились и начали рассказывать про веб-разработку!». Однако, нет.
Присоединяюсь к коменту выше про чаще и больше.
я очень заинтересовался ФП в веб-программировании, вот кто бы описал для каких проектов лучше использовать функциональные языки програмирования. Читал про erlang думаю для серверных частей онлайн-игр как раз подойдет, ну и вообще где есть comet. Просто хочется знать какие плюсы даст использование лиспа или другого ФЯП.
Присоединяюсь, самого давно мучает этот вопрос. Какой «профит» от изучения lisp — просто еще один вариант инструмента, или это действительно дает какие-то явные преимущества?
Уточню. Ответ «Если вы считаете, что величайшее удовольствие в программировании доставляет код, делающий многое и выражающий ваши желания просто и ясно, тогда программирование на Common Lisp вероятно будет самым приятным из того, что можно сделать на компьютере» мне не подходит. Я считаю что проще всего мне писать в достаточно привычном C-подобном синтаксисе — для веба это Java. Есть ли в lisp какой-то прирост эффективности — типа «быстрее что-то обрабатывает», или что-то такое? Или это просто «круто и очень удобно»?
Если вы не готовы отказаться от С-подобного синтаксиса, тогда вам ничего не надо кроме языков с таким вот синтаксисом.
Если кратко, то преимущество Lisp можно охарактеризовать следующим образом. В процессе решения сколько нибудь нетривиальной задачи мы строим DSL, а лишь потом с его помощью её решаем. Так вот Lisp (не только Common, но и другие языки со скобочным синтаксисом) позволяет строить максимально высокоуровневый DSL с минимумом усилий. Т.е. язык, позволяющий достигать заданной степени абстракции при намного меньшей сложности и объёме кодирования, в сравнении с мэйнстрим-языками.
Среди лиспов есть и более-менее функциональные ( racket-lang.org ), но Common Lisp, о котором пишет ababo имеет очень ограниченную реализацию функциональной парадигмы. Есть замыкания и функции высших порядков, но в стандарте не описана оптимизация хвостовых вызовов. Большинство реализаций её делает, но писать рекурсивные реализации алгоритмов — не лучшая идея.
С точки зрения многопоточности преимущества появляются именно от полного отказа от императивщины. Поэтому вы здесь очень точно на след erlang'а напали. :) Ну или можно самому контролировать и поддерживать функциональный стиль на CL и выбирать реализации, выполняющие TCO.
Разработка web-приложений на языке Common Lisp (часть вторая)