как создавать приложения с помощью Clozure Common Lisp (в Microsoft Windows) - PullRequest
3 голосов
/ 14 апреля 2011

Я новичок в Common Lisp (использующем Clozure Common Lisp под Microsoft Windows), который до этого был знаком с c и python.Так что, возможно, вопросы здесь глупые, но будьте терпеливы, чтобы оказать мне некоторую помощь.

1) Какой обычный способ запуска распространенного сценария lisp?

Теперь я написал файл bat под Windows, чтобы вызвать ccl exe (wx86cl.exe) и оценивать (progn (load "my_script_full_path") (ccl:quit)) каждый раз, когда я хочу «запустить» свой скрипт.Является ли это стандартным способом «запустить» скрипт для обычного lisp?
Есть еще какие-нибудь предложения по этому поводу?

2) В чем разница между (require 'cxml) и (asdf:operate 'asdf:load-op :cxml)?

Они, кажется, одинаковы для моего сценария, какой мне следует использовать?

3) игнорировать его, не ясный вопрос

4) Когда я хочу загрузить некоторую библиотеку (например, require 'cxml), всегда требуется время (3 с или даже 5 с) для загрузки cxml каждый раз, когда я "запускаю" свой сценарий, есть также много журнала для стандартного вывода, который я показываюниже это похоже на проверку чего-то внутреннего.Означает ли это, что мне приходится тратить 3-5 секунд на загрузку cxml каждый раз, когда я хочу запустить простой тест?Это кажется немного неэффективным, и на выходе шумно.Любое предложение?

Мой скрипт (require 'cxml) (some-code-using-cxml)

И вывод
; Loading system definition from D:/_play_/lispbox-0.7/quicklisp/dists/quicklisp/software/cxml-20101107-git/cxml.asd into #<Package "ASDF0"><br> ;;; Checking for wide character support... yes, using code points.<br> ; Registering #<SYSTEM "cxml-xml"><br> ......<br> some my script output

--- РЕДАКТИРОВАТЬ ДОБАВИТЬ БОЛЬШЕ ----

5) Должен сказать, что я почти забыл способ сброса изображения для ускорения скорости загрузки библиотеки lisp.Итак, каков нормальный процесс для нас (возможно, очень простой) сценарий lisp?

Основываясь на ответе того, что я получил сейчас, я думаю, возможно
а) отредактируйте ваш скрипт
б) протестируйте его в среде REPL, SLIME - действительно хороший выбор, идолжно быть много циклов между <==> b
c) выгрузкой изображения для его распространения? (я не уверен в этом)

6) Кроме того, каков общий способ/ Форма для нас, чтобы выпустить / распространить финальную программу?

Для библиотеки lisp мы просто выпускаем наш исходный код, и пусть кто-то другой может «загрузить / потребовать» их.
Для программы на lisp мы выгружаем изображение для его распространения, когда мыподтвердите, что все функции работают хорошо.
Я прав?

Какую форму мы используем в реальном продукте?Всегда ли мы в конечном итоге сбрасываем все это в изображение, чтобы увеличить скорость загрузки?

Ответы [ 4 ]

2 голосов
/ 15 апреля 2011

1) Да, обычный способ запуска всей программы - использовать скрипт запуска.Однако в наши дни Windows имеет гораздо лучшую поддержку сценариев, чем просто интерпретатор bat.Windows Scripting Host и PowerShell поставляются в стандартной комплектации.

1a) Во время разработки обычно просто вводить вещи в REPL (Read-Eval-Print-Loop, то есть в командной строке lisp) или использовать что-то вроде SLIME (для emacs или xemacs).как среда разработки.Если вы не знаете, что они, ищите их.Вы можете использовать Cygwin для установки xemacs, что даст вам доступ к ряду инструментов linux-ish.

2) Требуется, IIRC, является частью стандарта.Технически нет ASDF, это библиотека, которая работает, чтобы библиотеки работали более удобно.ASDF имеет множество функций, которые вам в конечном итоге понадобятся, если вы действительно начнете писать большие программы на Лисп.

3) Вопрос неясен, пас.

4) См. 1a) - выполняйте тесты и модификации в работающем экземпляре, таким образом избегая необходимости загружать библиотеку более одного раза (так же, как выбыло бы в Python - вы нашли repl Python, верно?).Кроме того, когда ваша программа завершена, вы, вероятно, можете создать дамп образа, в который предварительно загружены все ваши библиотеки.

Редактировать: дополнительные ответы:

5) Да

6) После того, как вы сбросили изображение, вам все равно потребуется распространить двоичный файл lisp, чтобы загрузить образ памяти.Чтобы сделать это прозрачным для пользователя, вам также понадобится скрипт загрузчика (или двоичный файл) для запуска двоичного файла lisp с изображением.

2 голосов
/ 15 апреля 2011

Вам не нужно запускать lisp с нуля и загружать все заново каждый раз, когда вы хотите запустить простой тест.Для более эффективной разработки интерактивно оценивает код в слушателе (REPL) работающей среды lisp.

1 голос
/ 13 мая 2011

Для распространения я использую инструмент Захари Бина Buildapp . Очень прост в установке и использовании.

0 голосов
/ 15 апреля 2011

Относительно дистрибутива -

Я написал подпрограмму (сейчас она дома и недоступна), которая записывает текущий образ в виде стандартного исполняемого файла и завершает работу.Это работает как для CLISP, так и для SBCL.

Я могу порыться, если хотите.

...