Действительно ли возможно развернуть язык Common LISP (или другой диалект) настольное приложение для нескольких платформ?

Стандарт OpenAPI

Хорошим способом предоставления стандартизированной, обнаруживаемой информации и примеров обо всех форматах ввода / вывода ваших API-интерфейсов является стандарт OpenAPI . По сути, это стандарт для спецификации YAML REST-подобных API-форматов с поддерживающей инфраструктурой ( Swagger ), который позволяет легко преобразовать эту спецификацию в удобочитаемую документацию, действительные примеры входных и выходных данных, а также для составления кода на многих языках программирования и средах, которые будут отправлять данные в / из документированного API.

Для начала может быть интересной Swagger page или практическая демонстрация редактора .

14
задан Dinah 24 April 2009 в 19:09
поделиться

6 ответов

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

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

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

Это дает Вам способ запустить программы языка Common LISP на Linux, окнах и машинах 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))))

Wiki также объясняет, как создать сам содержавший exe's для различных из реализаций языка Common LISP.

19
ответ дан 1 December 2019 в 06:43
поделиться

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

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

Информация о 'бесплатных' версиях языка Common LISP и библиотек собрана относительно CLIKI. Запись приложений MS Windows не является самой сильной частью 'свободного' языка Common LISP, все же.

9
ответ дан 1 December 2019 в 06:43
поделиться

Схема PLT может сделать все, что Вы спрашиваете. Библиотекой, которой это пользуется из поля, является WxWindows, но можно получить привязку для других систем GUI, если Вы действительно хотите.

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

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

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

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

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

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

6
ответ дан 1 December 2019 в 06:43
поделиться

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

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

4
ответ дан 1 December 2019 в 06:43
поделиться

То, что я сейчас делаю, для графического приложения, использующего 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 состоит в том, что с таким количеством хороших реализаций вы можете разработать свою реализацию по своему выбору, и большая часть вашего кода должна быть легко перенесена в любую реализацию, выбранную вами для доставки приложений на данной платформе.

3
ответ дан 1 December 2019 в 06:43
поделиться

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

1
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: