
Доброго времени суток, уважаемый читатель!
Перед каждым новичком в мире языка программирования Common Lisp
возникает проблема выбора среды разработки — Integrated Development Environment (далее, IDE).
Существует большое количество IDE для Common Lisp. Перечислим некоторые, самые распространенные, из них:
- LispWorks IDE (commercial, crossplatform)
- Allegro Common Lisp (commercial, crossplatform)
- LispIDE (open source, Windows 2K/XP/Vista/7)
- Lispbox (open source, crossplatform)
- Emacs + Slime (open source, crossplatform)
Для Знатоков
Знатоки могут возразить относительно последних двух пунктов списка.
Ведь, казалось бы, Lispbox = Emacs + Slime?!
Но, если внимательно посмотреть на сайт Lispbox, то, под ссылками для скачивания пакета, Вы увидите:
Ведь, казалось бы, Lispbox = Emacs + Slime?!
Но, если внимательно посмотреть на сайт Lispbox, то, под ссылками для скачивания пакета, Вы увидите:
Last updated: February 6, 2011.
В данной статье я подробно расскажу как установить и настроить кроссплатформенную среду разработки для Common Lisp, как скачивать и устанавливать дополнительные библиотеки при помощи quicklisp — менеджера пакетов Common Lisp. Будет много полезных ссылок на ресурсы и материалы по языку.
Речь пойдет о связке GNU Emacs & Slime.
Если Вас интересует Common Lisp, Вам нужна кроссплатформенная, мощная, интерактивная Common Lisp IDE с
Выбор реализации Common Lisp
Common Lisp — ANSI стандартизированный язык программирования, не имеющий единой канонической реализации.
Приведу список основных реализаций:
- Allegro Common Lisp
- Austin Kyoto Common Lisp
- CLISP
- CMU Common Lisp
- Coral Common Lisp
- Corman Common Lisp
- Embeddable Common Lisp
- GNU Common Lisp
- Kyoto Common Lisp
- Macintosh Common Lisp
- Clozure Common Lisp
- Steel Bank Common Lisp (SBCL)
Нам нужна кроссплатформенная, свободная, автивно развивающаяся реализация Common Lisp. Я выбрал SBCL.
Итак, начнем!!!
Подготовительные работы
MS Windows
- Создаем директорию для GNU Emacs по адресу: C:\emacs\
- Создаем директорию для SBCL по адресу: C:\sbcl\
- Скачиваем последнюю версию GNU Emacs и распаковываем в директорию C:\emacs\
- Скачиваем дистрибутив SBCL и устанавливаем в директорию C:\sbcl\
- Заходим в директорию с GNU Emacs (C:\emacs\bin\), находим addpm.exe и запускаем его
(добавит иконку запуска Emacs в меню Пуск) - Редактируем переменные окружения:
- Создаем переменную окружения с названием HOME (если Вы еще этого не делали...) и значением
C:\Users\%username%\, где %username% — имя Вашей учетной записи - Создаем переменную окружения с названием PATH (если Вы еще этого не делали...) и значением C:\emacs\bin\
- Создаем переменную окружения с названием HOME (если Вы еще этого не делали...) и значением
- Создаем пустой файл с названием .emacs в C:\Users\%username%\
- Создаем пустую директорию C:\Users\%username%\.quicklisp\
- Скачиваем файл quicklisp.lisp и размещаем его в директорию C:\Users\%username%\.quicklisp\
GNU/Linux (deb-based distributives)
- Устанавливаем GNU Emacs:
sudo apt-get -y install emacs24 sudo apt-get -y install org-mode sudo apt-get -y install emacs24-el sudo apt-get -y install emacs-goodies-el
- Устанавливаем SBCL:
sudo apt-get -y install sbcl sudo apt-get -y install sbcl-doc sudo apt-get -y install sbcl-source
- Создаем пустой файл с названием .emacs в домашней директории ~/
- Создаем пустую директорию ~/.quicklisp/
- Скачиваем файл quicklisp.lisp и размещаем его в директорию ~/.quicklisp/
sudo apt-get -y install curl curl -o $HOME/.quicklisp/quicklisp.lisp https://beta.quicklisp.org/quicklisp.lisp
Настройка Emacs
Пора настроить Emacs для профессиональной работы с Common Lisp проектами.
Предупреждение
Вся дальнейшая ребота по настройке системы будет проходить в GNU Emacs.
Все, что приведено ниже относится и к MS Windows и к GNU/Linux.
Подразумевается владение основами редактирования в Emacs.
Все, что приведено ниже относится и к MS Windows и к GNU/Linux.
Подразумевается владение основами редактирования в Emacs.
Откроем для редактирования файл .emacs. Поехали!
- Определяем реализацию Common Lisp:
(require 'cl) (setq-default inferior-lisp-program "sbcl")
- Настроим пакетный менеджер Emacs:
;; Package manager: ;; Initialise package and add Melpa repository (require 'package) (add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t) (package-initialize) (defvar required-packages '(slime smartparens auto-complete)) (defun packages-installed-p () (loop for package in required-packages unless (package-installed-p package) do (return nil) finally (return t))) (unless (packages-installed-p) (package-refresh-contents) (dolist (package required-packages) (unless (package-installed-p package) (package-install package))))
Теперь, когда Вы запустите Emacs снова, то начнется автоматическая загрузка и установка пакетов:
- Настроим наши пакеты:
(when (packages-installed-p) (require 'smartparens-config) (smartparens-global-mode) (require 'auto-complete-config) (ac-config-default) (global-auto-complete-mode t) (setq-default ac-auto-start t) (setq-default ac-auto-show-menu t) (defvar *sources* (list 'lisp-mode 'ac-source-semantic 'ac-source-functions 'ac-source-variables 'ac-source-dictionary 'ac-source-words-in-all-buffer 'ac-source-files-in-current-dir)) (let (source) (dolist (source *sources*) (add-to-list 'ac-sources source))) (add-to-list 'ac-modes 'lisp-mode) (require 'slime) (require 'slime-autoloads) (slime-setup '(slime-asdf slime-fancy slime-indentation)) (setq-default slime-net-coding-system 'utf-8-unix))
- Настроим отступы Lisp-кода:
(setq-default lisp-body-indent 2) (setq-default lisp-indent-function 'common-lisp-indent-function)
Сохраняем файл .emacs и перезапускаем Emacs.
Emacs загрузит и установит Slime, Smartparens и Auto Complete автоматически в директорию
C:\Users\%username%\.emacs.d\ для MS Windows и в директорию ~/.emacs.d/ в GNU/Linux.
Предупреждение
Написанный нами, только что, файл конфигурации .emacs является кроссплатформенным!
При переносе с Linux на Windows и наоборот, ничего не нужно менять!
Главное — расположить .emacs в нужную директорию (создание переменной окружения
HOME для MS Windows — обязательно!).
При переносе с Linux на Windows и наоборот, ничего не нужно менять!
Главное — расположить .emacs в нужную директорию (создание переменной окружения
HOME для MS Windows — обязательно!).
Рано праздновать, нужно еще настроить quicklisp — пакетный менеджер Common Lisp.
Установка и настройка quicklisp
Quicklisp — пакетный менеджер языка Common Lisp.
- В запущенном Emacs выполняем команду M-x slime (Alt-x slime);
запустится среда разработки Common Lisp — Slime
- Выполним:
;; Подгрузим менеджер пакетов (load "~/.quicklisp/quicklisp.lisp") ;; Автоматический скачается и установится менеджер пакетов quicklisp ;; со всеми зависимостями (quicklisp-quickstart:install :path "~/.quicklisp/") ;; Создаст .sbclrc файл в домашней директории ;; и, при каждом запуске среды Slime/SBCL, будет подгружать ;; скаченные и установленные Вами пакеты и библиотеки (ql:add-to-init-file)
Для примера, установим пару библиотек для Common Lisp при помощи quicklisp:
- CEPL is a lispy and REPL friendly library for working with OpenGL:
(ql:quickload :swank) (ql:quickload :sdl2) (ql:quickload :cepl.sdl2)
- работа с БД:
(ql:quickload :cl-dbi)
- Web-сервер:
(ql:quickload :hunchentoot)
- …
- Вставить любимое расширение %username%
- обновление установленных библиотек и самого quicklisp:
(ql:update-all-dists) (ql:update-client)
Для Common Lisp написано большое количество качественных библиотек на все случаи жизни.
При помощи quicklisp их легко установить и начать использовать.
Собственно, у Вас теперь есть все необходимое для того, чтобы с головой окунуться в мир Common Lisp!
Поздравляю!
Полезные ссылки
- Основной сайт языка
- Common Lisp Wiki — отличный сайт.
Описание всех известных и полезных библиотек и сред разработки. Короче — Wiki - Русскоязычное сообщество
- Отличный учебник по Common Lisp (перевод) — Practical Common Lisp
- Мой .emacs
- Серия видео-уроков «Tutorial on writing a Raytracer in Common Lisp» по созданиию Raytracer'а на Common Lisp
- Новый, прекрасный сайт по Common Lisp