Обновить

Common Lisp IDE

Разработка веб-сайтовПрограммированиеLispФункциональное программированиеEmacs

Доброго времени суток, уважаемый читатель!
Перед каждым новичком в мире языка программирования Common Lisp
возникает проблема выбора среды разработки — Integrated Development Environment (далее, IDE).

Существует большое количество IDE для Common Lisp. Перечислим некоторые, самые распространенные, из них:

Для Знатоков
Знатоки могут возразить относительно последних двух пунктов списка.
Ведь, казалось бы, 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 LispANSI стандартизированный язык программирования, не имеющий единой канонической реализации.
Приведу список основных реализаций:

Нам нужна кроссплатформенная, свободная, автивно развивающаяся реализация 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\
  • Создаем пустой файл с названием .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.

Откроем для редактирования файл .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 — обязательно!
).

Рано праздновать, нужно еще настроить quicklisp — пакетный менеджер Common Lisp.

Установка и настройка quicklisp


Quicklisp — пакетный менеджер языка Common Lisp.
  • В запущенном Emacs выполняем команду M-x slime (Alt-x slime);
    запустится среда разработки Common LispSlime
  • Выполним:
    ;; Подгрузим менеджер пакетов
    (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 LispEmacsSlimeSBCLIDEнастройкаустановкаWindowsLinuxMac OS X
Хабы: Разработка веб-сайтов Программирование Lisp Функциональное программирование Emacs
Рейтинг +10
Количество просмотров 54,8k Добавить в закладки 85
Комментарии
Комментарии 14

Похожие публикации

Middle | High middle front-end разработчик (React + Typescript)
от 80 000 до 160 000 ₽CSSSRМожно удаленно
Инженер
до 70 000 ₽ГК «Самолет»МоскваМожно удаленно
Reverse Engineer
от 3 500 до 4 000 $Hand2NoteМожно удаленно
Senior Kotlin(web) engineer
от 3 500 до 5 500 $Axell SolutionsМожно удаленно
Devops (Windows)
от 150 000 ₽deeplayНовосибирскМожно удаленно

Лучшие публикации за сутки