Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Categories:

Про Lisp

А вот вопросец созрел. Допустим, хочется мне какой-то “рабочий” проект реализовать на лиспообразном языке – в порядке “использования самых маргинальных технологий“, по терминологии минского раввината. Для начала – что выбрать, Common Lisp или Scheme? Common Lisp мне сразу резко “не понравился” – хотя бы из-за объема документации и кучи малопонятных вещей категории “так сложилось исторически”, типа неочевидных различий между set, setq и setf. Scheme выглядит попроще, да и SICP я прочитал где-то до половины – в общем, там все достаточно знакомо.

Что мне не нравится в Scheme? Нет какой-то “эталонной” реализации. MIT/GNU Scheme поддерживает “устаревший” стандарт R5RS (с некоторыми незначительными отклонениями), в четвертом издании TSPL описывается R6RS. Этот вариант реализован в Chez Scheme и Racket, остальные реализации мне не нравятся “организационно” – один-единственный “незаменимый” разработчик – это “несерьезный” подход. Вообще, огромное количество реализаций Scheme мне представляется следствием наличия упражнений 5.51 и 5.52 в SICP.

Более того, все пригодные для использования реализации предлагают свои ни с чем не совместимые расширения. Исключение – разве что MIT/GNU Scheme, где расширений относительно “стандарта” практически нет. Эти “несовместимые расширения” тоже напрягают – а вдруг выбранная реализация окажется по каким-то причинам некошерной, и что тогда?

Наконец, хочется нормальной “современной” IDE с возможностями отладки. Emacs не предлагать, он отвратителен (сугубое ИМХО). Edwin из MIT/GNU Scheme – те же яйца, только в профиль – какое-то тяжкое наследие из 70-х. Похоже, что это пожелание сужает выбор до Racket.

Теперь – про Common Lisp. Тут попроще с реализациями. Основных – всего три: SBCL, CMUCL и CLISP (коммерческие я не рассматриваю, тут начинаются те же проблемы с несовместимыми расширениями и прочий vendor lock-in). IDE, кроме Emacs, отсуствуют. Сам язык мне не очень нравится. Из-за совместимости с древними диалектами Лиспа в Common Lisp воткнули таких “костылей”, что иногда создается впечатления – а не Фортран ли это вперемешку с Алголом и синтаксисом Лиспа?

Чего мне от всего этого счастья хочется? Во-первых, простого развертывания. Насколько я понимаю, “сделать экзешник” в Лиспах непросто. Хочется хотя бы возможности установить работающую систему “двумя нажатиями мышки”, а с этим возникают некоторые проблемы.

Во-вторых, я не такой маньяк, чтобы писать на Лиспе все приложение целиком – начиная от GUI и заканчивая самыми низкоуровневыми частями. К тому же, я несколько напуган статьей The Lisp Curse, где утверждается, что для любой задачи в Лиспе можно найти стопицот библиотек – и все говно. Я планирую реализовывать на Лиспе только те компоненты, где это оправдано – и с помощью какого-нибудь разумного интерфейса связать это, скажем, с веб-частью или “десктопным” приложением. Какие для этого существуют интерфейсы?

В общем, приглашаю знатоков маргинальных технологий рассказать, как все это счастье применить в “реальной жизни”.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Tags: программирование
Subscribe

  • Меморандум «Элитана» просто охуительный

    Читал и ржал местами: https://www.elitan.ru/pravilanew/upd.html Говорят, личное творчество их гендира Алексея Досова. В связи с этим —…

  • Китайцы жгут

    Мало нам двух вариантов ST-Link в формате USB-свистка (с несовместимым назначением выводов) — так они еще умудрились нарисовать картиночку,…

  • Вечер в хату

    Снова словил бан по IP в ЖЖ (ну это давно было), снова разбанился, снова вывалил кучку постов за месяц :) Запись опубликована в блоге Шуры…

Comments for this post were disabled by the author