Можно ли развернуть настольное приложение Common Lisp (или другой диалект) для нескольких платформ? - PullRequest
14 голосов
/ 05 апреля 2009

Я хотел бы разработать графическое приложение на Common Lisp или другом диалекте Lisp, которое можно было бы развернуть в Mac, Windows и Linux, чтобы улучшить мои знания этого языка. В идеале:

  1. скомпилирует код
  2. будет использовать общую графическую библиотеку
  3. не потребуется установка среды выполнения.

Я хотел бы сделать небольшое игровое или графическое приложение и иметь возможность показать его с помощью простой установки на компьютер с любой из этих операционных систем.

Кто-то имеет опыт работы с подобными ситуациями или может указать мне на лучший выбор графических библиотек и компиляторов, сред выполнения и т. Д. *

Спасибо!

Ответы [ 7 ]

19 голосов
/ 06 апреля 2009

Я один из разработчиков lispbuilder-sdl, который в настоящее время размещен в коде Google.

альтернативный текст http://img10.imageshack.us/img10/7664/mandelbrot.jpg

http://code.google.com/p/lispbuilder/

Это дает вам возможность запускать обычные программы на lisp на машинах linux, windows и mac без изменений. Мы используем библиотеку SDL и различные ее расширения.

Минимальная программа выглядит так:

(sdl:with-init ()
  (sdl:window 320 240)
  (sdl:draw-surface (load-image "lisp.bmp"))
    (sdl:with-events ()
      (:quit-event () t)
      (:video-expose-event (sdl:update-display))))

В вики также объясняется, как создавать автономные исполняемые файлы для различных распространенных реализаций lisp.

9 голосов
/ 05 апреля 2009

Большинство реализаций Lisp могут создавать дамп исполняемых образов. Иногда это два файла (ядро + образ), но часто это может быть только один исполняемый файл. Но исполняемый файл обычно выполняется только на той платформе, для которой он был скомпилирован. Коммерческие реализации, такие как LispWorks или Allegro CL, имеют расширенные возможности - например, можно удалить неиспользуемые части системы Lisp. Это называется «доставка».

Некоторая информация о приложениях LispWorks . LispWorks является коммерческим, и платформы могут быть дорогими. Вам придется купить среду разработки - доставка бесплатна на популярных платформах. LispWorks имеет графическую библиотеку для Windows, Mac и Unix / Linux. Последний основан на старом мотиве. Преимущество состоит в том, что код может быть очень переносимым по платформам. Сама среда разработки LispWorks является приложением LispWorks. Например, на Mac 32-разрядная версия и 64-разрядная версия работают на PowerPC и x86 из одного приложения.

Информация о «бесплатных» версиях Common Lisp и библиотеках собирается на CLIKI . Однако написание приложений для MS Windows - не самая сильная часть «бесплатного» Common Lisp.

6 голосов
/ 05 апреля 2009

PLT Scheme может делать все, что вы просите. Он использует стандартную библиотеку WxWindows, но вы можете получить привязки для других систем графического интерфейса, если вы действительно этого хотите.

PLT Scheme - это, вероятно, Lisp, большая часть работы над которой облегчает написание и распространение "небольшого игрового или графического приложения". Они включают в себя множество примеров игр в базовом дистрибутиве, а их флагманская IDE DrScheme написана на собственной графической платформе . Создавать и распространять скомпилированный код PLT Scheme можно на любой платформе.

Редактировать: Вы просили любой диалект Lisp. Будет ли Clojure также вариант?

Редактировать 2:

Вы сказали, что Clojure - это вариант. Если вы уже очень хорошо знакомы с Java и Swing, я думаю, что Clojure был бы хорошим способом - с оговоркой, что у него есть довольно большие синтаксические различия с другими Лиспами. Книга выходит в свет .

Если вы еще не являетесь экспертом по Java, я думаю, что PLT Scheme все равно будет лучшим выбором. Я подхожу к этому с позиций «только начинаю изучать Лисп» и «небольшое демонстрационное приложение». Другие люди отмечают, что коммерческие реализации Common Lisp поддерживают то, что вы хотите, но их будет сложнее (и дороже) использовать в качестве вводных систем.

Во всех этих реализациях есть макросистемы, которые, я думаю, вы подразумеваете под "кодом первого класса".

4 голосов
/ 05 апреля 2009

У Райнера есть хороший комментарий по фундаментальным вопросам: есть хорошие коммерческие решения, которые выполняют именно то, что вы просите (но они не являются бесплатной средой разработки и могут требовать регулярных платежей) с хорошо поддерживаемыми кроссплатформенными библиотеками. Существуют также подходы к свободному программному обеспечению, но их труднее реализовать на всех трех платформах, как вам требуется (не невозможно, но требует больше усилий).

Я добавлю, что «не установка среды выполнения» является немного проблематичной. Вам, конечно, не нужно, чтобы конечный пользователь отдельно устанавливал lisp, но вашей программе вполне может понадобиться установить всю среду выполнения, чтобы работать, в зависимости от того, что вы делаете. Гибкость на этом уровне означает, что может быть сложно программно определить, какие биты нужны, а какие не нужны, поэтому бесплатные программные решения, как правило, не связывают себя с несколько утомительной и хитрой работой по написанию шейкера дерева, чтобы сделать это.

3 голосов
/ 24 апреля 2009

То, что я сейчас делаю, для графического приложения, которое использует OpenGL и GLFW, разрабатывается в основном с SBCL и предоставляет моим тестерам доставку через cl-launch . Тем не менее, я планирую использовать CCL для сборки пакета приложений в OS X и ECL для создания автономного исполняемого файла в Linux и Windows. Пакеты, которые я сейчас создаю с помощью cl-launch, довольно большие (обычно 30M и более), в то время как тесты, которые я провел с ECL, были намного меньше (libecl весит около 1,3M в моей системе). Тем не менее, я ожидаю, что SBCL будет работать лучше (хотя я бы сначала определился, чтобы убедиться в этом!), Поэтому ваш выбор будет зависеть от вашего приложения.

Однако, если бы я делал это коммерчески, я бы инвестировал в одну из коммерческих реализаций. Райнер Йосвиг упоминает о LispWorks и Allegro выше. Для доставки приложений Windows вы также можете рассмотреть Corman Lisp . У меня сложилось впечатление, что самый быстрый, но самый дорогой способ доставки приложений через эти три ОС - это покупка Allegro, но альтернативой (больше работы, но дешевле) будет использование CCL на OS X, Corman на Win32 и ECL или SBCL в линуксе LispWorks, кажется, является выбором между ними, хотя многие клянутся им, поэтому я не стал бы сбрасывать со счетов это как уступающий Allegro только потому, что он более доступен.

Проблема графической библиотеки - это нечто отдельное; У меня сложилось впечатление, что ситуация постоянно улучшается (кажется, что обратные вызовы в CFFI сейчас работают на большинстве платформ, что очень помогает при взаимодействии с большинством наборов инструментов C), но я больше работал с GL, GLFW, GLUT и SDL (хотя еще не с lispbuilder, упомянутым выше justinhj, который выглядит круто). Я немного экспериментировал с wxCL год или два назад, и это казалось многообещающим.

Приятной особенностью CL является то, что с таким большим количеством хороших реализаций вы можете разрабатывать любую реализацию по своему выбору, и большая часть кода должна быть легко перенесена в любую реализацию, выбранную для доставки приложений на данной платформе.

1 голос
/ 24 марта 2011

Ecl lisp может скомпилировать очень маленький исполняемый файл (несколько килобайт), но в Ubuntu для выполнения этого исполняемого файла в каталоге / usr / local / lib должен быть файл libecl.so.11.1. Этот файл 5,7 мб.

1 голос
/ 06 апреля 2009

Существует ECL , реализация Common Lisp, которая, кажется, делает то, что вы хотите (хотя я еще не использовал ее).

...