Must read. 5 свежих статей о языке Lisp
Подобрали 5 классных статей про успехи и неудачи Lisp, про его особенности и про то, как с ним работать.
Dana Moskvina / Skillbox Media
Каждую неделю мы отбираем для вас несколько свежих материалов из англоязычного интернета. В этом выпуске — самое интересное о Lisp.
Чем так крут Lisp?
Зачем читать: понять, чем Lisp очаровал своих фанатов, и сравнить с другими языками.
Где читать: на Quora.
Интересное обсуждение для тех, кто не может понять, почему же люди любят Lisp. Это один из самых старых языков, но его активно используют и по сей день.
Самое главное качество Lisp, которое отметили в комментариях, — его гибкость и универсальность. В Lisp можно легко симулировать синтаксис других языков — его даже называют «программируемым языком программирования». Именно это делает его столь эффективным. Он позволяет каждому использовать свой подход и фактически собрать язык под свои нужды.
Другое интересное свойство — создавая программы на Lisp, можно достичь уникальной лаконичности и продуктивности.
Обсуждение будет интересно прочитать и тем, кто задаётся вопросом, какие качества языков программирования делают их по-настоящему крутыми.
Несколько причин перейти на Lisp
Зачем читать: узнать подробнее о классных фичах Lisp.
Где читать: на Medium.
Лонгрид от давнего любителя Lisp: после долгих поисков идеального языка он пришёл к Lisp и сидит на нём уже четверть века. Вот пять функций, за которые автор полюбил этот необычный язык:
- Lisp основан на лямбда-исчислениях. Его код лаконичнее и проще, а разработчику не приходится держать в голове слишком много лишней информации.
- В Lisp есть вызов функций по значению, а не по имени. Это особенно полезно для языков, основанных на лямбда-исчислении.
- Разумное использование мутаций. В некоторых случаях мутации — необходимое зло. Именно такой политики придерживается Scheme — один из диалектов Lisp.
- Динамическая типизация. Тут автор вовсю спорит с приверженцами статической типизации. Он считает динамическую типизацию огромным плюсом.
- S-выражения. Особая структура, типичная для Lisp, которая использует лишь два вида данных: символы и списки.
Конечно же, Lisp не волшебная пилюля, у него есть минусы, которые очевидны даже давнему фанату языка. Например, он всё меньше совместим с различными SDK, и с годами ситуация только ухудшается.
Автор подробно разбирает все плюсы и минусы языка, рассказывает о том, как они устроены, и щедро делится опытом.
Проклятие Lisp: спасётся ли Perl?
Зачем читать: узнать, почему Lisp непопулярен и наступит ли Perl на те же грабли.
Где читать: на DEV.
Lisp хвалят за выразительность, гибкость и эффективность, но эти же качества его губят. Благодаря своей гибкости он подстраивается под нужды отдельных разработчиков, но в коммерческой разработке в энтерпрайзе это скорее вредит: сложно создать единую структуру, организовать и стандартизировать работу.
Более того, найти интегрированную среду разработки тоже непросто, поэтому для бизнеса Lisp далеко не самое привлекательное решение. В похожей ситуации оказался и Perl. Получится ли у него спастись от проклятия Lisp? Может быть, да. Сейчас в Perl появляются новые интересные фичи, которые могут его спасти, — но пока что хеппи-энд под вопросом. Кусаем локти и ждём финального сезона.
Зачем нужны макросы?
Зачем читать: разобраться, можно ли заменить макросы чем-то ещё.
Где читать: на Medium.
Любители Lisp могут подолгу рассказывать о макросах и о том, что в C они совсем не те… Но что это такое и на самом ли деле они настолько незаменимы?
Макросы — это макрокоманды, и в первую очередь они нужны для автоматизации. Автор реализовал один и тот же механизм (подсчёт времени выполнения функции) на Python, Java и Clojure (диалект Lisp).
В первых двух случаях код приходилось встраивать в другое выражение — по-другому измерить его было невозможно. А вот в Clojure этого делать не пришлось: макрос просто использовали вместо функции. В статье есть и другие примеры использования макросов.
Lisp в веб-разработке
Зачем читать: чтобы не потеряться, начав заниматься веб-разработкой на Lisp.
Где читать: на DEV.
С выгодами Lisp мы разобрались, но для всего ли годится такой старый язык? Что там насчёт веб-разработки? В небольшом гайде автор-фронтендер рассказывает, как создавать веб-приложения с помощью Lisp, какие фреймворки и тулы для этого понадобятся и каковы особенности процесса развёртывания в облаке, если оно не поддерживает Lisp.
Вот некоторые инструменты, которые пригодятся в работе:
- SBCL (Steel Bank Common Lisp) — компайлер для Lisp с классными расширениями.
- Quicklisp — менеджер библиотек.
- Emacs — лучший редактор для кода на Lisp.
- SLIME — мод для Emacs с отладчиком и REPL, который очень пригодится в серьёзной работе.
- Caveman — классный фреймворк для создания веб-приложений, доступен в Quicklisp.
- rosewell — менеджер, лаунчер и не только. Один из лучших инструментов для работы с имплементациями на Lisp, отличный помощник в работе с облаком.
- Clack — слой абстракции для веб-сервера.