UnCommon Lisp. Небольшие заметки на полях

Облик современных разработчиков

Жизнь любого разработчика рано или поздно столкнет его с таким явлением, как Lisp.

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

Многие пытаются начинать именно с диалекта Common Lisp, на котором обычно все и заканчивается.

Начало пути - Common Lisp(на самом деле нет)

Xkcd про скобки

Формально, я, конечно же, начал свое изучение диалектов Lisp с того, что купил единственную бумажную копию книги “Практический Common Lisp” в Санкт Петербурге и начал свое изучение этого прекрасного языка, и не самого лучшего(на мой взгляд) диалекта.

На самом же деле, меня просто взяли на понт и у меня не было просто выбора - я должен был освоить один из диалектов Lisp.

В своем выборе я колебался между Clojure, Common Lisp и Scheme(racket я отнес к Scheme).

До Common Lisp я дошел Common Lisp я выбирал простым путем отсечения: clojure отпал из за jvm(не люблю я JVM по ряду причин), Scheme показался слишком академическим(возможно напрасно я так решил). Так и остался для меня один Common Lisp.

Что же я не осилил в Common Lisp

Сам язык мне показался достаточно понятным и логичным, пусть мой предыдущий опыт разработки был просто гвоздями прибит к OOP/OOD(ну и немного к императивному стилю разработки), но я достаточно быстро понял радость написания в функциональном стиле, привык к скобочкам и понял, что многие задачи решаются просто написанием трех строчек, там где в другом языке требуется целая библиотека.

А вот что же мне показалось ужасно кривым и корявым так это его asdf и обвязки вокруг него. Да quicklisp+quickproject частично упрощают работу. Но складывается чувство, что полное отсутствие подобной системы сборки проектов было бы меньшей болью. чем наличие такой.

Можете считать меня неосилятором.

Кстати, lein для Clojure не вызвал у меня такой боли.

Куда заводит чтение

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

И путь из статей плавно привел меня к статье “Радикальный подход к разработке приложений”. Статья не слишком новая, но актуальна до сих пор. И благоря ей я и познакомился с таким явлением, как PicoLisp.

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

При работе с ним я сразу начал понимать что и зачем было сделано.

И.. PicoLisp

Интерпретируемая система, которая построенна с целью не делать простые вещи сложными.

Сам по себе PicoLisp может вызвать несогласие со стороны любителей Common Lisp, ну и других мейнстримовых языков.

Самая большая боль для “классических лисперов” - это т.н. проблема “funargs”. Которую можно избежать с использованием транзитных символов.

Некоторые плюсы PicoLisp, которые предоставит Вам PicoLisp:

  • Достаточно дружелюбное сообщество
  • Встроенная реализация Prolog
  • Встроенный сервер web-приложений, с библиотекой построения html-интерфейсов
  • Встроенная эффективная база данных
  • Возможность переопределять все.
  • Динамическое связывание

Ну и минусы:

  • Динамическое связывание
  • Слабая защита от сбоев(ради эффективности исполнения кода часть проверок были опущенны)

В качестве своего учебного проекта, я начал проект простого чата. Собственно вот и он - исходный код и сервера, и клиента абсолютно прост и краток.

Чуть позже я опишу идею этого чат-сервера и протокол, ну и сам репозиторий дополню документацией, но уже сейчас его можно запустить и “потыкать палкой”. Для отправки личных сообщений начните сообщение с символа @ и ника.

Т.е. отправка личного сообщения пользователю user1 будет выглядеть так:

@user1 Никому не говори!

Всем отличного времени и успешного ковыряния интересных технологий.

_

 

- На главную -