Skip to main content

Блог инженера

Блог о минимализме, инжинерии и программировании.



Как и чем работать с LISP-программами

  | #LISP#Программирование#Блог

В рассмотренных примерах я приводил код в самом тексте примера и ссылку на файл с исходным кодом, который можно загрузить и исполнить на своём локальном компьютере. Я думал, что читателям будет лучше самим найти оптимальную среду работы с программами на LISP, тем более, что выбор есть. Но потом вспомнил, сколько времени я сам искал оптимальную IDE для LISP и решил написать это запоздалое вступление.

Вообще, можно обойтись и без интегрированной среды для разработки программ - ‘IDE’. Все интерпретаторы лиспа работают в режиме ‘READ-EVAL-PRINT’, когда они ждут ввода пользователя, потом выполняют введённый код и выводят на экран результат его выполнения. Таким образом вполне можно выполнять простые примеры. Проблема возникает тогда, когда требуется поправить код, в котором допущена ошибка, или видоизменить текст уже определённой функции. В некоторых реализациях LISP можно вызвать на редактирование существующее определение клавишами «вверх» и «вниз», где-то нельзя, а самое главное - этот способ тем неудобнее. чем больше программа.

Я сам использую текстовый редактор emacs (который, за его многофункциональность, называют операционной системой для которой не хватает только драйверов) со средой SLIME. К этому варианту я пришёл не сразу, зато теперь едва ли откажусь от него.

Счастливым пользователям Linux установить SLIME просто, достаточно установить пакет SLIME (а он есть, наверное, в подавляющем большинстве дистрибьютивов) и можно пользоваться. В случае неудачи поискать подсказку в интернете. Пользователям Windows сложнее, устанавливать SLIME и emacs придётся вручную, либо скачать готовый комплект LispBox. Последний вариант я и рекомендую пользователям альтернативной операционной системы. LispBox — модульная система, emacs с интегрированным в него SLIME скачивается отдельно, LISP отдельно, причём можно выбрать несколько разных вариантов лиспа. Я рекомендую common lisp (впрочем, для Windows это единственный доступный вариант).

О том, как работать с текстами в emacs имеется множество руководств, к ним я вас и отсылаю. Сама среда SLIME очень проста. На стадии знакомства с языком потребуется несколько пунктов меню (или несколько сочетаний клавиш им соответствующим). Это ‘SLIME->Compilation->Compile Defun’, пункт меню или соответствующее сочетание клавиш стоит выбирать после задания очередного определения функции. И ‘SLIME->Evaluation->Eval last expression’, которое позволяет выполнить (вычислить) выражение после которого стоит курсор. Остальные пункты меню понадобятся по мере освоения среды, к SLIME прилагается весьма неплохая инструкция на английском языке.

К недостаткам сборки emacs включённой в LispBox можно отнести отсутствие поддержки кириллицы. Это исправляется, но я стараюсь делать комментарии к программам на английском, что и вам советую.

Можно также попытаться использовать другие IDE для LISP. Например, вполне неплохой IDE имеется в LispWorks. Остальные проекты, на мой взгляд, не заслуживают внимания. Хотя я буду рад текстам и ссылкам с вашими открытиями.

Таким образом, работа с прилагаемыми программами выглядит так:

  • запускаем emacs или LispBox
  • если запустили emacs, може потребоваться ввести ‘M-x slime’ (то есть нажать клавишу Ctrl, не отпуская её x и набрать в появившемся приложении slime).
  • открыть файл с примером или создать новый и вставить текст примера через буфер обмена
  • скомпилировать файл при помощи ‘SLIME->Compilation->Compile File’ или каждое определение функции отдельно при помощи ‘SLIME->Compilation->Compile Defun’, установив курсор в конце определения.
  • теперь можно проверять работу программы, я обычно делаю это в нижнем окне REPL (read-eval-print).

About Mikhail Kiselev

Photo of Mikhail Kiselev

Приветствую в моём блоге! 😄 Меня зовут Михаил. Я инженер и программист. Живу в Израиле. Но мой блог связан с работой в Сибири и на Сахалине, путешествую где придётся. Я предпочитаю пост в блог посту в твиттер. Описание полезной технологии или гаджета предпочитаю описанию заката или посиделок в кафе.