Skip to content

Instantly share code, notes, and snippets.

@VyacheslavMik
Created January 13, 2025 08:57
Show Gist options
  • Save VyacheslavMik/c973527c8d9b06cacf431220ff4bdcb7 to your computer and use it in GitHub Desktop.
Save VyacheslavMik/c973527c8d9b06cacf431220ff4bdcb7 to your computer and use it in GitHub Desktop.
I.
1. https://gigamonkeys.com/book/ - Practical Common Lisp - книга об основах программирования на CL и метапрограммировании.
2. https://lispcookbook.github.io/cl-cookbook/ - сборник рецептов в разных областях CL.
3. https://www.lispworks.com/documentation/HyperSpec/Front/Contents.htm - Common Lisp Hyperspec - список функций и макросов с их описание и примерами использования, которые есть в стандарте.
4. https://swizard.info/articles/solitaire/article.html - пример разработки DSL на Common Lisp.
II.
1. `hunchentoot` - веб-сервер.
2. `parenscript` - транспайлер с подмножества (весьма ограниченного) CL в javascript.
3. `postmodern` - работа с Postgresql.
4. `cl-ppcre` - библиотека для работы с регекспами.
5. `drakma` - выполнение http-запросов.
III.
Плюсы - интерактивная разработка; простая, но мощная подсистема макросов; мультипарадигменность. Благодаря интерактивной разработке (repl) язык позволяет меньше отвлекаться от написания кода и ждать, пока произойдет сборка приложения, его запуск, проверка гипотезы и внесение изменений в код. Таким образом легче проверять идеи, отлаживать код и не терять ход мысли, отвлекаясь на другие дела, что увеличивает продуктивность разработки. Развитая подпистема макросов позволяет писать более читаемый код (посредтвом мини-DSL'ей, которые используются для четко определенных доменных областей) и, если все правильно организовать, легче вносить архитектурные изменения, которые могут развернуть проект в нужную заказчику сторону. Мультипарадигменность позволяет писать код в той парадигме, которая лучше подходит для определенного алгоритма, не делая код чужеродным.
Минусы - минимальное количество вакансий; библиотеки, которые реализуют функциональность на 80% и меньше, имеют баги, не закрывающиеся годами, а то и десятилетиями; устаревший стандарт. Из-за минимального количества вакансий, разработчиков на CL очень мало и в основном это энтузиасты, которые уделяют ему время в свободное от основной работы время, что влечет за собой вторую проблему - отсутствие библиотек подходящих для коммерческой разработки, отсутствие блогов с описание того как начинающему стать профессионалом в CL и помощи в поиске и устранении багов. В следствие такой ситуации и отстутствия заметного числа коммерческих компаний, использющих Common Lips, стандарт остается неизменным с 90-х годов, что тоже мешает привлечению разработчиков. Хотя сообщество и пытается писать библиотеки, которые добавят современные подходы, используемые в других языках в CL, этого недостаточно. Вследствие всех этих проблем, разработка в любой новой области становится похожей на полосу препятствий и рекомендована только тем, кто любит эти препятствия преодолевать.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment