Lisp

индекс
100,04

HomeLisp два года спустя

Прошло ровно два года с момента публикации на Хабре статьи про HomeLisp. Та статья, которую запостил мой сын, вызвала довольно бурное обсуждение и яростные нападки определенной части аудитории.

Что же произошло за эти два года с проектом?
10 февраля 2012, 00:54
8

Оформление кода Clojure

Каждый раз принимаясь за изучение Clojure обращал внимание, что читать хорошо отформатированный код после некоторой тренировки становится легко. Но вот решать задачки из проекта эйлер, форматируя таким “правильным” образом код, для меня стало большой проблемой.
Никаких разъяснений на русском я не нашёл, потому решил восполнить пробел переведя коротенькую инструкцию с английского.

По сути своей код на Clojure – просто набор скобоклитералов, потому без грамотной расстановки отступов его тяжело читать. Clojure с расстановкой отступов выглядит примерно так:
(defn my-zipmap [keys vals]
  (loop [map {}
         ks (seq keys)
         vs (seq vals)]
    (if (and ks vs)
        (recur (assoc map (first ks) (first vs))
               (rest ks)
               (rest vs))
      map)))
(my-zipmap [:a :b :c] [1 2 3])

+19
4 февраля 2012, 21:21
16

Пишем веб-сервер на Common Lisp часть вторая

В прошлой статье мы начали разработку нашего веб-сервера. Продолжим c файлом util.lisp. В этом пакете будут находится все наши вспомогательные функции для обработки запросов. Для начала обьявим переменную *line*, она нам понадобится в дальнейшем.
+18
2 ноября 2011, 18:13
29

Пишем веб-сервер на Common Lisp часть первая

Не так давно я взялся за изучение Common Lisp. Как может показаться, изучение нового языка программирования — дело весьма не простое, тем более если он совсем непохож на все те языки, с которыми приходилось сталкиваться ранее. Поэтому я решил начать с книги Land Of Lisp. Книга весьма неплохая, с интересными картинками и очень хорошо подходит для начинающих. В одной из глав было описание создания веб-сервера на Common Lisp. Я решил слегка развить эту тему, и в итоге у меня получилось не совсем то, что было описано в этой главе, а весьма интересный веб-сервер. Исходные коды можно посмотреть тут.

Для его написания нам понадобится Linux с установленными emacs, sbcl, slime и quicklisp. Описывать, как это всё устанавливать, настраивать и как этим пользоваться, я не стану — в интернете есть множество статей об этом. Весь наш веб-сервер будет находиться в одном пакете, называемом myweb. Создайте у себя папку с данным названием, и в ней создайте две папки log и web. Папка log будет содержать лог-файл веб-сервера. В папке web будут лежать html-страницы и изображения, которые веб-сервер будет отдавать клиентам. Весь веб-сервер состоит из семи файлов.
+33
1 ноября 2011, 19:34
41

Несколько причин освоить CL даже если вы не планируете писать на нем в будущем

Наверное, эту статью стоило опубликовать перед предыдущими двумя, в этом моем цикле про Common Lisp, но лучше уж поздно, чем никогда.

Когда-то давно, когда я читал статьи Пола Грэма, и только начинал изучать CL, я довольно скептически относился к утверждению о том, что лисп позволяет понять другие языки лучше, да и вообще, программист, знающий CL, выучит любой другой язык максимум за пару недель, и будет на нем писать еще лучше, чем на нем пишет большинство людей, знающих этот язык уже пару лет.

Но сейчас я пришел к выводу, что это утверждение всё же верно.
+69
30 октября 2011, 23:06
105

Настройка SBCL и среды разработки SLIME под Windows. Пошаговое руководство

В данной статье я подробно опишу как установить и настроить SBCL и окружение для продуктивной разработки под Windows.

Вообще, изначально это была небольшая заметка для коллеги по планируемому мной проекту по анализу и визуализации кода и текстовых данных, но я решил её доработать и превратить в полноценную статью, так как я мало видел руководств подобного рода относительно лиспа, особенно на русском, и особенно касающихся Windows.

+29
28 октября 2011, 14:24
34

Обобщенные функции CLOS

Любой разработчик, так или иначе столкнувшийся с объектно-ориентированным программированием, и попытавшийся в нем разобраться, обязательно слышал про CLOS, объектную систему языка Common Lisp, одной из основополагающих фич которой являются так называемые «обобщенные функции», или, в народе, «мультиметоды».

Хотя многие считают, что обобщенные функциии это просто аналог статической перегрузки функций, но только в динамике, это совершенно неверно.
Не совсем правильно будет даже сказать, что это расширение диспетчеризации по self/this, то есть «виртуальных функций», на несколько аргументов.

Безусловно, множественная диспетчеризация является одной из основных фишек обобщенных функций, но сама их суть не только, и даже не столько, в этом.
+32
23 октября 2011, 20:20
17

Будущее Лиспа

Это перевод статьи Стивена Дегутиса.

Будущее Lisp


В последнее время я часто стал задумываться о существующих диалектах Lisp и о том, в каком направлении мы двигаемся. В частности, я рассматривал возможность написания очередного диалекта Lisp, и те сферы, в которых бы он пригодился.

Если вы еще не знакомы с ним, Lisp является замечательным семейством языков; его чрезвычайно минималистический синтаксис позволяет нам думать практически на уровне алгоритмов, не заморачиваясь по поводу неочевидного синтаксиса или каких-либо языковых рамок.

Положение на рынке


Традиционно, существует Scheme, который полезен разве что для преподавания в вузах из-за скудности поддерживаемых библиотек, есть также Common Lisp, который представляет из себя ужасную, страшную неразбериху (представьте C++, но с целым морем скобок).
+21
17 августа 2011, 20:17
21

Установка common lisp на правах пользователя из песочницы

made with lisp
Есть проблема: На рабочих серверах (у нас используется политика тонких клиентов, толстых серверов) не установлено никакой lisp машины, и я, разумеется, не администрирую их.
На ум сразу приходят 2 решения:
  • Уговорить администратора.
  • Справиться самостоятельно.

Первый вариант подходит для настоящих внедренцев. Я к сожалению не владею достаточными аргументами, почему вдруг все терминальные сервера должны обзавестись ещё и лисп машиной.
Поэтому здесь пойдёт речь о втором варианте. (А именно о ECL на linux в custom каталоге).
+6
22 июля 2011, 17:23
3

Использование mongo-cl-driver в качестве провайдера БД mongo на common-lisp из песочницы





Здравствуйте, все любители common-lisp.

В этой статье я расскажу вам о своем опыте внедрения common-lisp библиотеки доступа к объектной СУБД mongo, которая называется mongo-cl-driver.

Начитавшись в интернете про то, насколько mongo-db быстр, масштабируем и крут и имея далекий и очень скудный опыт взаимодействия с данной БД на с++, я решил попробовать эту БД в своем веб-ориентированном проекте, написанном на common-lisp. Имея, однако, некоторые сомнения в правильности выбора СУБД, могу назвать свой опыт удачно свершившимся, поскольку реализованный функционал как минимум работает.

Любой человек, который начинает программировать доступ к СУБД mongo так или иначе натыкается в интернете на ссылки на cl-mongo — первый появившийся провайдер доступа к БД mongo на common-lisp. Используя cl-mongo в своем проекте, я наткнулся на ряд проблем c преобразованием данных в json, которые начались, когда возникла необходимость перевода результатов запроса по цепочке СУБД->common-lisp-сервер->javascript-клиент. Кстати для подобного кодирования/декодирования существуют известные мне библиотеки:

1) yasson
2) cl-json

Далее по тексту следует несколько примеров использования mongo-cl-driver для общих задач программирования доступа к СУБД mongo на common-lisp. Если примеры покажутся читателю малопонятными, выдранными из контекста, то есть возможность посмотреть примеры использования в доступных
+12
6 июня 2011, 21:54
5