LINUX.ORG.RU

Кроссплатформенное приложение с GUI на Common Lisp


0

0

Задача: пишется кроссплатформенное приложение (пока под Linux и Windows)
с развитым графическим интерфейсом и серьезным вычислительным блоком.

1. Среда разработки
cmucl, sbcl - только под Unix'ы :(
allegro, lispworks - коммерческие, не подходит
clisp - интерпретатор, хотя очень хорош для обучения (поддержка readline, русская локализация)
gcl - компиляция через C, размер исполняемого файла 39 Мб!!! Уф...
ecl - компиляция через C, исполняемый файл требует библиотеку размером всего 1,3 Мб,
хорошая интеграция с С и прочие вкусности, вроде подходит...

2. GUI
CLX, Garnet - только X Window
Недостатки Tk тут уже не раз обсуждались
4 биндинга gtk2 - три из них только под cmucl, sbcl
cells-gtk - есть версия под clisp, но изрядно устаревшая,
а основная ветвь ушла далеко вперед, но - (cmucl sbcl allegro lispworks) only...

Я что-нибудь упустил или требования слишком завышенные???

anonymous

По поводу GUI ничего толком не скажу, меня Tk вполне устраивает, а вот касаемо среды разработки я бы предложил писать переносимо. Не в том смысле, что не пользоваться implementation-specific особенностями, а сделать compatibility layer, рассчитывая, скажем, на sbcl+allegro, как самые популярные.

Если такой вариант не подходит, то вспомните еще про Armed Bear Common Lisp (http://armedbear.org/abcl.html).

mind
()

Еденственно приемлимое решение нахаляву, имхо это Tk. Я юзаю сейчас Ltk, хорошая обёртка Tk для CL, остальное что я смотрел не очень стабильно и плоходокументированно, конечно Ltk тоже не блеск, но разобраться в исходниках и добавить что надо очень просто.

А вообще я тоже сейчас страдаю, чем бы одну свою прогу под винду скомпилить. Вроде нахаляву нигде нельзя сделать бинарник под винду, или всё-таки можно?

CrazyPit ★★★
()

>gcl - компиляция через C, размер исполняемого файла 39 Мб!!! Уф...

а попытайся сделать strip

cvv ★★★★★
()
Ответ на: комментарий от asso_w

Пока еще очень сыро. Фактически только перегнали *.h файлы в ffi-интерфейс. Для первопроходцев :)

yyk ★★★★★
()
Ответ на: комментарий от CrazyPit

ecl может делать exe под windows, который зависит только от библиотеки ecl.dll (1,3 Мб). Размер самого бинарника сравним с сишным той же функциональности

anonymous
()
Ответ на: комментарий от CrazyPit

> Я юзаю сейчас Ltk, хорошая обёртка Tk для CL...

Ничего. Только под виндой иногда глючит. Причины неизвестны :)

И, по-моему, как-то "слегка кривовато" использовать wish через потоки, когда можно подключится к библиотеке через ffi/uffi. А уж если очень хочется разнести движок и клиент - (опять имхо) лучше гонять через сокеты s-expr, а не строки тикля.

Другое дело, если привязать tclkit - может получится кое-что. Жаль, что к нему нельзя обращаться как к библиотеке. Или я отстал от жизни?

yyk ★★★★★
()
Ответ на: комментарий от anonymous

>strip не поможет, т.к. это фактически дамп памяти

под линуксом поможет а под виндузой я не спец

cvv ★★★★★
()
Ответ на: комментарий от anonymous

На сколько я помню, у ecl больше всего "расхождений" со стандартами (больше, чем у cmucl+sbcl+clisp+gcl вместе взятых). Хотя если не завязываться и на другие реализации, то нормально.

yyk ★★★★★
()

> clisp - интерпретатор, хотя очень хорош для обучения (поддержка readline, русская локализация)

Ну, у него есть байт-код. А реализация базовых функций на "c" местами даже дает выигрыш.

Ну и Bruno недавно хвастался, что в clisp самая полная реализация MOP. Кстати, на медни вышел 2.34. Хотя и ecl и gcl тоже на днях обновились.

yyk ★★★★★
()
Ответ на: комментарий от yyk

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

Dubocefal
()

> cells-gtk - есть версия под clisp, но изрядно устаревшая, а основная ветвь ушла далеко вперед, но - (cmucl sbcl allegro lispworks) only...

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

yyk ★★★★★
()
Ответ на: комментарий от Dubocefal

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

Я не спорю. Но и отдельный процесс тоже может быть лиспом :)

Ну не нравится мне динамически формировать строки тикля, гнать их через сокеты, а потом их wish будет читать, разбирать, если можно гнать массив строк, фактически содержащий уже разобранную строку. Да и callback проще делать через ffi.

Хотя, конечно, надо мерять - что быстрее: разбор строк wish-ем или ffi интерфейс к библиотеке.

yyk ★★★★★
()
Ответ на: комментарий от yyk

А кто-нибудь знает, как объяснить clisp'у, чтобы при старте приложения под Windows не запускалось DOS-окно?

anonymous
()
Ответ на: комментарий от CrazyPit

> Вроде нахаляву нигде нельзя сделать бинарник под винду, или всё-таки можно?

Скажите, а Вы уверены, что это нужно? Чем бинарник лучше имиджа?

mind
()
Ответ на: комментарий от mind

Я имел ввиду можно ли сделать так, чтобы не надо было вместе с программой устанавливать Lisp, под винду это можно только с коммерческими реализациями. Хотя я не смотрел ещё ecl, но мне ещё нужна поддержка clsql, а он вроде не поддерживает.

CrazyPit ★★★
()
Ответ на: комментарий от CrazyPit

> Я имел ввиду можно ли сделать так, чтобы не надо было вместе с программой устанавливать Lisp...

"утснавливать Lisp" - это слишком громко сказано. Достаточно дать ДВА файла (правда, если не нужен gettext и другие библиотеки).

yyk ★★★★★
()
Ответ на: комментарий от yyk

Ну у sbcl вроде только один, но мы то говорим про винду. Просто я ещё с этим толком не разирался, и мне просто интересно, как с этим дела под виндой.

CrazyPit ★★★
()
Ответ на: комментарий от CrazyPit

> Ну у sbcl вроде только один, но мы то говорим про винду. Просто я ещё с этим толком не разирался, и мне просто интересно, как с этим дела под виндой.

Ок. Еще раз :)

Под виндой - напряг. Из свободных (и хоть более мение распространенных) уже все перечислялись: gcl - практически "чистый" компилятор (в с) - 1 файл, ecl - тоже может делать с-код - 1+1 (библиотека всегда нужна? я не пробовал), clisp - 2 файла. Есть еще newLisp. Но в нем еще больше отходов от стандарта CL, чем в ecl, плюс - он "чистый" интерпретатор (был, когда я знакомился). Может еще есть какая экзотика.

P.S. Я тоже человек - могу и ошибаться :) Так что перепроверяй сам.

P.P.S. Зачем нужна поддержка стандарта? Тогда вместо (отсутствующей) документации можно использовать cltl2 / hyperspec.

P.P.P.S. Прошу прощения, если все сказанное тебе уже и так известно :)

yyk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.