Регистрация | Войти
Lisp — программируемый язык программирования

Где коД живёТ

Или немного про библиотеки к Common Lisp.

Лисп - язык с почтительной историей. Лисп активно используется университетами в обучении. И, наконец, Лисп - практический язык, на котором можно (и нужно :) писать по-разному и в различных областях. Это я к чему – раз всё так, то, наверно, должно быть много полезного кода, много библиотек и прочих ресурсов, которые могли бы помочь в решение насущных задач и спасли от “делания велосипедов” (хм, хотя это иногда и полезно). Эта небольшая статья должна помочь разобраться, где и что брать. 1)

Если говорить условно, то можно сделать такой вывод - есть четыре основных источника кода:

  • Описательные ресурсы, посвященные только Лиспу.
  • Ресурсы, на которых непосредственно находится Лисп-код (имплементации, библиотеки и т.д.). Это могут быть не только Лисп направленные ресурсы. Существуют также сайты, посвященные целиком одному проекту.
  • Персональные сайты на которых авторы представляют свои проекты.
  • Учебный код, также сайты университетов. Часто код "спрятан" где-нибудь в ftp директориях и не анонсируется на главной странице.

Теперь немного подробнее и со ссылками.

1 / Описательные ресурсы

Итак, во-первых - общие сайты, посвященные именно Лиспу, и собирающие о нём всевозможную информацию. Среди них основные следующие.

Cl-User

cl-user - что-то вроде базы данных по библиотекам, реализациям Лиспа, документации и книгам. Сейчас больше 1000 записей (из которых 600 - библиотеки), каждая в таком духе: "родной" веб-сайт проекта, авторы, дата релиза, ссылка на релиз, поддерживаемые платформы, зависимости, могут быть примеры использования, ссылки на мануалы и т.д. Есть поиск, система тэгов для ориентировки и ссылки на другие сайты. К сожалению, все ссылки представлены одним большим списком, и разобраться в них не просто, поэтому этот ресурс полезен, когда знаешь, что именно хочешь найти.

CLiki

CLiki - Вики энциклопедия о Лиспе (и сама написана на Лиспе), отличается от предыдущего ресурса, большей наглядностью, но содержит меньше ссылок на ресурсы, зато те, что есть: лучше рассмотрены. Отдельные темы раскрыты в виде статей, что позволяет иногда использовать Cliki как мини-мануал. (Cуществует ресурс wiki.alu которому почему-то "противопоставляет" себя cliki, так и пишут “Non-Free, non-Unix and non-Common Lisp resources can be found at the ALU wiki”. А вот о cl-user сказано “All the Common Lisp resources can be found at ...”, что подчеркивает - полная информация именно там)

quickdocs.org

quickdocs.org - Недавно запущенный проект. Содержит информацию о текущем состоянии библиотек (+ рейтинги популярности библиотек в quicklisp).

2 / Сайты проектов

Второе – сайты проектов, именно на такие ресурсы ведут ссылки с cliki, cl-user или quickdocs.

Common-Lisp.net

common-lisp.net - хостинг для размещения CL проектов с CVS репозиторием. Много Лисп-кода физически тут и находится. Если кто-то захочет разместить тут свой проект ;)) , то это возможно – после личной переписки с администрацией.

Github

В системе контроля открытых проектов github есть раздел Common Lisp.

ftp.linux.org

На ftp.linux.org.uk лежат исходники (и бинарники) некоторых популярных cl проектов – cmucl, sbcl, slime. Здесь же находится код cliki вместе с другими необходимыми пакетами.

Sourceforge

Некоторые проекты живут и на sourceforge, если количественно - то несколько сот. Обычно о них можно прочитать и на CLiki.

Franz.inc

Компания franz.inc имеет некоторое количество открытого кода (по большей части для реализации Allegro) смотрите : opensource.franz.com и на github.

3 / Персональные сайты

Третий источник кода – персональные сайты разработчиков, т.е. сайты людей, которые занимаются программирование на Лиспе. Там может быть и не все о Лиспе.

Weitz.de

weitz.de - вот сайт где много практического кода. (Вообще можно сделать и такой вывод – код делится на два типа. Первый тип кода добавляет возможности, меняет синтаксис, вводит какие-то абстракции, но за рамки Лисп-мира так и не выходит. И второй тип кода - код связывающий Лисп (который упрекают, что он "вещь в себе") с реальным миром – с юникодом, с разными форматами файлов, с которыми нужно работать, с веб программированием и т.д.)

  • cl-ppcre - библиотека, позволяющая использовать регулярные выражения (Perl-типа).
  • hunchentoot - веб-сервер, также содержит средства для создания динамических веб-страниц.
  • drakma - веб-клиент, поддерживающий различные протоколы.
  • cl-unicode - библиотека для работы с юникодом.
  • cl-interpol - библиотека, позволяющая использовать интерполяцию переменных в строках, т.е. замену переменных на их значения, подобно тому, как это делается в Perl.
  • Также тут можно найти библиотеки для работы с HTML, парсинга XML, графические библиотеки , переносимую библиотека файловых путей (описана в PCL).

Cyrusharmon

cyrusharmon этот блог чем-то перекликается с предыдущим ресурсом - тут можно найти биндинги к hunchentoot и утилиты для FFI.

Metabang.com

metabang.com - ресурс содержит открытый код под лицензией MIT, все проекты есть также и на common-lisp.net.

  • cl-graph - библиотека графических алгоритмов.
  • cl-variates - генератор случайных чисел.
  • cl-mathstats - математическая библиотека.
  • Лисп-shell, командная лисп-оболочка.
  • А также утилиты для системы ASDF.

Zach Beane

Ресурс Zach Beane содержит в основном графические библиотеки, позволяющие в CL работать с такими форматами как jpeg, gif, png, TTF и векторной графикой. Также есть библиотека для работы с форматами gzip и zlib.

tenkan.org

trivial-captcha - генератор каптчи на Лиспе. Плюсы - всего пара страниц кода, а изображения получаются загкрученные, чем-то на гугловские похожи. Минус - невысокая скорость генерации. За основы берутся буквы из pgm файла (gray map) и работа с этими файлами включена в этот код. Если пожертвовать нулевой зависимостью библиотеки и использовать png, то можно добится большего эффекта.

4 / Академический и учебный код

И четыре – Сайты университетов, и другой академический и учебный код.

Norvig.com

norvig.com, сайт Питера Норвига - ученого, автора книг по ИИ (AIMA, PAIP, у нас, между прочим, тоже по ним преподают кое-где) и директора Google. Что там есть:

  • Код относящийся к книге Artificial Intelligence: A Modern Approach, а его описание здесь. Надо сказать, что это книга не о Лисп, а о ИИ, Лисп используется наряду с другими языками (Java и Python) для демонстрации некоторых идей.
  • Код к книге Paradigms of AI Programming. Тут уже всё средствами Лисп: примеры AI ("говорилки" проще говоря), экспертные системы, интерпретатор пролога, примеры из теории Лиспа – интерпретация, компиляция, хвостовая рекурсия.
  • Схема, написанная на Java-Script - jscheme

paulgraham.com

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

SICP

Код к книге SICP.

cs.cmu.edu

Лисп-код на сайте университета CMU (Carnegie Mellon University). В репозитории много информации - книги, статьи, новости, даже видео. Но главное - код, отмечу:

  • clmath - математическая библиотека, т.е. функции из разных разделов высшей математики.
  • infix - инфиксные макросы, например читающие такой код : (if x < y <= z then f(x) = x^^2 + y^^2 else f(x) = x^^2 - y^^2)
  • parcil - парсер C кода : разбор (parcil "x = y * sin (pi / 2.7)") в итоге выполняет (setf x (* y (sin (/ pi 2.7))))
  • haskell - сурьёзная релизация Haskell на Lisp :))
  • Codewalk-еры
  • Итераторы

(На самом деле код к SICP есть и тут... Западные университеты почему-то определяют Лисп в направление AI, пусть так, это НЕ значит что там только ИИ и нет никакого практического кода)

PowerLoom

PowerLoom

1)Далее я говорю “Лисп”, хотя иногда это означает “Common Lisp”
@2009-2013 lisper.ru