Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/22: Рейтинг темы: голосов - 22, средняя оценка - 4.82
4 / 4 / 0
Регистрация: 20.07.2016
Сообщений: 59
1

Оконные приложения для Лисп

20.07.2016, 21:17. Показов 4590. Ответов 83

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!
Увлекаюсь Лиспом, пишу на стареньком LisBox. Сам язык программирования просто божественный, но отсутствие как такового графического интерфейса вроде WindowForm сильно огорчает (варианты с LispWorks и AllegroCL отпали из-за дороговизны первого и убогости второго). Отчаянно пытался подключить GTK3, но так и не получилось, нормального описания для Tcl не нашёл, да и он то же криво работает. Может кто-нибудь помочь и пошагово описать, как надо установить GTK или Tcl, чтобы всё работало! Если для этого надо перейти на другую версию Лиспа, то не вопрос - давно смотрю в сторону SBCL. Да и хоть какой-нибудь адекватный мануал так же будет не лишним.
У самого у меня есть идея как связать WindowForm с Лисповым кодом, но не смог найти функции в Лиспе, которая по аналогии с С++ указывала бы на адрес ячейки памяти, в которой хранится значение переменной. Может кто знает?
За помощь буду безгранично признателен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.07.2016, 21:17
Ответы с готовыми решениями:

uLisp: лисп для микроконтроллеров
Есть ли в этом смысл или лучше сразу использовать системные языки низкого уровня?

Циклы в лисп для построения геометрии
Добрый день! Абсолютный новичок в ЛИСП. Для работы очень срочно нужно понять можно ли реализовать...

Создание Exe файла для Лисп
Всем здравствуйте! Имеется LispStick с Ltk, операционка Windows 7 Есть программа на лиспе под Ltk...

Для тех кто делает оконные приложения в Builder C++ Borland
Ребята вот подскажите..если я создал приложение , оно работает , все норм, но вот я хочу что бы там...

83
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
31.07.2016, 20:19 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от budden Посмотреть сообщение
В лиспе переменные _как_правило_ не находятся в конкретном месте, они плавают по памяти из-за сборки мусора. Чтобы иметь указатель, это должен быть объект FFI.
@budden, давай ты все таки будешь думать над тем кому, на что и что отвечаешь Я же не просто так говорю про CFFI. FFI когда передает указатель в C-шную функцию прикрепляет к нему трамплин способный найти "плавающий" лисповый объект.
1
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
31.07.2016, 20:48 22
Если ты столь крут, писал бы свои регалии в профиле Я подумал, что ты ошибся, но обидеть тебя цели не было.
1
4 / 4 / 0
Регистрация: 20.07.2016
Сообщений: 59
31.07.2016, 22:25  [ТС] 23
На счёт tcl/Tk очень многие высказывают недоумение: делал толковый человек, а получилось г... И просвета в нём не видно! Мне судить особо не с чего - у меня он заработал на sbcl, но это больше на случайность похоже, а после прочтения кода для "hello world" желание само отскочило. Так что эта пьеса окончена. А вот HomeLisp, который мне посоветовал Уважаемый Catstail, очень даже хорош. Есть, к сожалению, и в нём косяки (хотя, может ещё не до конца разобрался!), но он явно лучше tcl/Tk с CFFI и AllegroCL вместе взятых (о последнем как вспомню, аж мозг сводит, бррр...). Так что буду работать в направлении HomeLisp, а там видно будет
1
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
31.07.2016, 22:45 24
Цитата Сообщение от Nigohoyamy Посмотреть сообщение
На счёт tcl/Tk очень многие высказывают недоумение: делал толковый человек, а получилось г...
Те ли эти многие, которых стит слушать? Это я как человек использовавший Tk на практике говорю. Но кому что.
0
4 / 4 / 0
Регистрация: 20.07.2016
Сообщений: 59
31.07.2016, 23:06  [ТС] 25
Спорить не буду - сам не использовал, лишь видел! Если у Вас есть время, пройдитесь по ссылке на HomeLisp от Catstail и сравните с tcl/Tk, если последний таки будет лучше, то не откажусь и с ним поработать! И буду благодарен за посильную помощь
0
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
31.07.2016, 23:24 26
Цитата Сообщение от Nigohoyamy Посмотреть сообщение
по ссылке на HomeLisp от Catstail
Corman прямой аналог и сильно более продвинутый. Если хочется чего-то такого win-ориентированого. Tk я брал за переносимость. HomeLisp не поностью CL и в таком виде мне совсем не пойдет. Если хочется совсем лучшего то CommonQt упомянутый выше. Shinmera много сделал для его вездешней работы и громко ругается когда вместо того что бы сообщить ему о насущных проблемах начинают говорить о них на "левых" форумах
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
31.07.2016, 23:47 27
В этой теме нельзя не упомянуть McCLIM. Упомянул.
0
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
31.07.2016, 23:54 28
Цитата Сообщение от helter Посмотреть сообщение
В этой теме нельзя не упомянуть McCLIM. Упомянул.
Из него в процессе осовременивания выкинули win32-подсистему. А clx ТС не переживет наверное.
0
4 / 4 / 0
Регистрация: 20.07.2016
Сообщений: 59
01.08.2016, 22:59  [ТС] 29
Corman Лисп я уже пробовал - на мой взгляд, тот же Alegro, только исполнение другое. После LispBox, хоть он и старенький, такие проги только разочаровывают - заместо создания кучи нового лучше бы доработали хорошее старое! А вот HomeLisp всё больше и больше нравится, да и мануал по нему адекватный. Ещё раз большое спасибо Catstail
0
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
01.08.2016, 23:09 30
Цитата Сообщение от Nigohoyamy Посмотреть сообщение
Если у Вас есть время, пройдитесь по ссылке на HomeLisp от Catstail и сравните с tcl/Tk,
Можно и без ссылок. ПЛатформа - у HomeLisp Это только Windows, у tcl/tk это Windows, Linux, Mac, Android как минимум.
Лицензия - у HomeLisp
Изменение программного кода компонентов HomeLisp не допускается. Цитирование документации допускается только с указанием автора.
У tcl/tk пермиссивная лицензия - делай что хочешь.
Приложения - на tcl/tk их гораздо больше. Из профессиональных - например, ANSYS использует tcl/tk (или раньше использовал).
Т.е. тут нечего сравнивать.

А для привязки Lisp к tcl Нужно просто выучить Tcl и пользоваться технологией client-server. Так проще всего, поверьте, хотя это так не кажется. Потому что "обёртки" и "обвязки" - это лишние сущности. Они как бы изолируют вас от необходимости знания Tcl/tk, но ровно до первой проблемы. Кроме того обёртки и обвязки всегда покрывают только часть обвязываемого языка, т.е. вы теряете в возможностях.

Добавлено через 1 минуту
С CommonQt я бы тоже не стал радоваться раньше времени. Qt нестабилен (меняется и как только вы приладитесь к каокй-то версии, её объявят устаревшей), и его лицензия имеет серьёзные ограничения.
0
4 / 4 / 0
Регистрация: 20.07.2016
Сообщений: 59
01.08.2016, 23:16  [ТС] 31
Я бы и рад "выучить", да вот книги вроде PCL по Tcl/tk нету и не предвидится... Может это и странно, но после Лиспа я стал учить Visual C++, причём трижды садился за это дело...и все три раза убился - С++, лично для меня, убожество, мой мозг его не переваривает! Без, даже не хорошего, а отличного мануала, вроде PCL и ANSI CL, или гуру-наставника в Tcl/tk я не полезу - только время тратить! Если Вы можете мне помочь, на пальцах объяснить Tcl/tk, то я возьмусь, а так - HomeLisp для меня лучшее решение!
0
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
02.08.2016, 00:58 32
Цитата Сообщение от budden Посмотреть сообщение
С CommonQt я бы тоже не стал радоваться раньше времени. Qt нестабилен (меняется и как только вы приладитесь к каокй-то версии, её объявят устаревшей)
Qt может и можно по каким-то причинам обвинить в нестабильности. Но CommonQt и идущие к нему комплектом qt-libs имени Shinmera намертво привязаны к последней замороженной версии qt4. Там как-раз все заморожено до монументального состояния. Он в этом смысле удобнее Tk. QuickLisp сам скачает и разложит все потребное для работы . А вот Tk надо cтавить отдельно. У новичков могут быть вопросы.

Добавлено через 4 минуты
Цитата Сообщение от budden Посмотреть сообщение
и его лицензия имеет серьёзные ограничения.
Например? Обычный lgpl. Adobе например использовала gtk под той же лицензией, для своего Acrobat'pdf'а gjl линуксом. Обычного человека такая лицензия и вовсе не должна ничем стеснять.
0
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
02.08.2016, 11:12 33
Да, я не совсем прав. Там где-то GPL, а где-то LGPL, см. сюда. Есть мнение, что в случае лиспа LGPL из любой библиотеки заражает образ, который собирается с помощью save-image и это может иметь последствия для исходников, которые включены в этот образ. Поэтому я не включаю никакой *GPL в свою среду.

Далее. Абсолютно всё, что можно делать в tcl/tk, можно делать и в моём приложении. Насколько полно CommonQt покрывает возможности Qt?

Далее, "To enable the reader macro, use (named-readtables:in-readtable :qt) at the top of your file." Для начинающего это нелегко, поскольку SLIME (если мои сведения не устарели) до сих пор не умеет нормально работать с именованными таблицами чтения, нужно шаманить. Я год назад пытался туда отправить патч, но дело заглохло - это никому не нужно.

Поэтому я сделал форк SLIME и включил его в свою среду. У меня с таблицами чтения порядок теперь.

Далее, насчёт того, что Quicklisp сам всё скачает - это не более, чем красивая легенда. Вот список требований под Windows:
Qt libraries 4.8.5 for Windows (VS 2010, 235 MB)
Prebuilt 32-bit binaries: commonqt-libs-20131109.zip (2 MB).
Both libraries and the /bin/ directory of Qt should be accessible through PATH.
To build from source, Visual Studio is needed (Visual Studio Express is also suitable).
Как минимум три пункта нужны. Для Линукса пунктов не меньше. Кроме того, под виндой придётся шаманить и с .emacs, потому что просто так SLIME с CommonQt работать не будет.

Моё приложение устанавливается так: скачал архив, распаковал и можно запускать. tcl/tk отдельно устанавливать _не_надо_. Для Linux я пока не могу похвастаться простой процедурой установки, но в принципе для этого есть Snap и Appimage. Может быть, из них сделаем когда-нибудь, а пока готовим LiveCd с линуксом, где всё уже установлено и настроено.

Добавлено через 2 минуты
Цитата Сообщение от Nigohoyamy Посмотреть сообщение
Я бы и рад "выучить", да вот книги вроде PCL по Tcl/tk нету и не предвидится...
"Практическое программирование на Tcl и Tk" и есть ещё одна книжка на Русском языке (название забыл).
0
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
02.08.2016, 13:32 34
@budden, меня можно назвать злым и неполиткорректным. Но я вот пишу страницу текста не для того что бы кому-то помочь, а для того поправить твои домыслы от незнания матчасти. По которой ты даешь советы. По Qt, которую ты не будешь использовать по принципиальным соображеням. И меня это печалит.
Цитата Сообщение от budden Посмотреть сообщение
Да, я не совсем прав. Там где-то GPL, а где-то LGPL, см. сюда.
.
Если читать по ссылке и далее, то там сказано что под GPL отдельные модули и с++ -ная среда разработки QtCreator. Вот это все - это то что не нужно СommonQt и лиспу для работы и не будет даже скачено. А все что нужно под LGPL.
Есть мнение, что в случае лиспа LGPL из любой библиотеки заражает образ, который собирается с помощью save-image и это может иметь последствия для исходников, которые включены в этот образ. Поэтому я не включаю никакой *GPL в свою среду.
LGPL почти не возможно заразить что-либо. Эта лицензия в силу своего определения не заразна. И даже если удастся, то тебя только лишь попросят более не распространять такой гибрид и отозвать уже распространенное. Обычного человека это ни как должно волновать. И что самое главное CommonQt в части лиспа под MIT/X11 aka BSD. Под LGPL - libqt4-*.dll что уже никак на образ не влияет.

Добавлено через 9 минут
Цитата Сообщение от budden Посмотреть сообщение
Далее, насчёт того, что Quicklisp сам всё скачает - это не более, чем красивая легенда. Вот список требований под Windows:
...
Как минимум три пункта нужны.
Я там выше говорил еще и про qt-libs. Это бибилиотека в QuickLisp-е которая делает "3 пункта" в автоматическом режиме. А то что ты цитируешь это для желающих проделать это вручную.

Добавлено через 6 минут
Цитата Сообщение от budden Посмотреть сообщение
Абсолютно всё, что можно делать в tcl/tk, можно делать и в моём приложении. Насколько полно CommonQt покрывает возможности Qt?
CommonQt в отличае от Tk не сможет подгружать внешние бибилиотеки отличные от базовых. Хотя это мало кого должно волновать.

Добавлено через 4 минуты
Цитата Сообщение от budden Посмотреть сообщение
Далее, "To enable the reader macro, use (named-readtables:in-readtable :qt) at the top of your file." Для начинающего это нелегко, поскольку SLIME (если мои сведения не устарели) до сих пор не умеет нормально работать с именованными таблицами чтения, нужно шаманить.
Мой Slimv и его swank их умеют. Раз уж пошла такая тема посмотрю и slime для премет работоспосбности, на днях.

Добавлено через 10 минут
Цитата Сообщение от budden Посмотреть сообщение
Моё приложение устанавливается так: скачал архив, распаковал и можно запускать. tcl/tk отдельно устанавливать _не_надо_.
Я когда говорил о необходимости установки, имел ввиду обычные библиотеки вроде LTK.

Для Linux я пока не могу похвастаться простой процедурой установки, но в принципе для этого есть Snap и Appimage.
Потребность в которых непонятна. SBCL и tcl/tk по отдельности одни из немногих програм слабо зависящих от вариаций линукса. Почему же сборное из них перестало так мочь ...
1
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
02.08.2016, 14:49 35
Цитата Сообщение от antares0 Посмотреть сообщение
Вот это все - это то что не нужно СommonQt
Charts под GPL, например. Графики не нужны лисперам? И я не знаю, что такое "обычный человек".

Цитата Сообщение от antares0 Посмотреть сообщение
Я там выше говорил еще и про qt-libs.
Да, тут я был неправ. Невнимательно прочитал. Про лицензию я не смотрел. Заражение возможно, только если под LGPL лисповый код.

Цитата Сообщение от antares0 Посмотреть сообщение
Мой Slimv и его swank их умеют.
Год назад в SWANK/SLIME нужно было сделать запись в *readtable-alist*, но он мог заполниться и сам. Логика там кривая и работает только в случае, если для каждого пакета ты всегда используешь одну и ту же таблицу чтения. Чтобы увидеть, какая таблица чтения привязана к твоему пакету, нужно прочитать переменную. На экране это не написано.

Цитата Сообщение от antares0 Посмотреть сообщение
Я когда говорил о необходимости установки, имел ввиду обычные библиотеки вроде LTK.
В моём приложении ничего не надо устанавливать. Скачал, распаковал, работай.

Цитата Сообщение от antares0 Посмотреть сообщение
SBCL и tcl/tk по отдельности одни из немногих програм слабо зависящих от вариаций линукса.
Тем не менее, у меня были проблемы и мне пришлось менять код своего приложения, чтобы понизить требования к версии tcl/tk и избежать переустановки линукса, то ли у меня, то ли у кого-то, кто решился попробовать мою среду. Т.е. я должен был терять своё время непонятно на что. И ты не сможешь мне доказать, что я потратил его не зря. Линукс по своей архитектуре затрудняет наличие нескольких версий одного и того же. Это выбор, который всем навязывается. У него есть плюсы, но это лишь выбор, а не что-то однозначное. AppImage и Snap позволяют в конкретных случаях сделать другой выбор. Ты имеешь право считать их ненужными, но это не означает незнание мной матчасти

Цитата Сообщение от antares0 Посмотреть сообщение
CommonQt в отличае от Tk не сможет подгружать внешние бибилиотеки отличные от базовых.
Нет, вопрос не в этом. Вопрос в том: если я что-то в Qt могу написать на C++, могу ли я то же самое написать на лиспе с помощью CommonQt?

Добавлено через 8 минут
Установка у меня затруднена по причине наличия модифицированных версий многих библиотек.
0
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
02.08.2016, 15:31 36
Цитата Сообщение от budden Посмотреть сообщение
Тем не менее, у меня были проблемы и мне пришлось менять код своего приложения, чтобы понизить требования к версии tcl/tk и избежать переустановки линукса, то ли у меня, то ли у кого-то, кто решился попробовать мою среду. Т.е. я должен был терять своё время непонятно на что. И ты не сможешь мне доказать, что я потратил его не зря.
Реальный продакщен, лет 5 назад. Сохраненый, исполняемый образ sbcl - 1 штука. Качстомный tclkit с несистемным Tk упакованый вместе с сопутствующими библиотеками в один файл - 1 штука. Итого по 2 файла на win/linux-all в одном каталоге. мне надо себе и тебе что-то доказывать?

Добавлено через 9 минут
Цитата Сообщение от budden Посмотреть сообщение
Линукс по своей архитектуре затрудняет наличие нескольких версий одного и того же. Это выбор, который всем навязывается. У него есть плюсы, но это лишь выбор, а не что-то однозначное.
Правильно установленые PATH и LD_LIBRARY_PATH позволяют правильно использовать ахитектуру линукса без вреда для здоровья

Добавлено через 3 минуты
Цитата Сообщение от budden Посмотреть сообщение
Нет, вопрос не в этом. Вопрос в том: если я что-то в Qt могу написать на C++, могу ли я то же самое написать на лиспе с помощью CommonQt?
Да.

Добавлено через 6 минут
Цитата Сообщение от budden Посмотреть сообщение
Charts под GPL, например. Графики не нужны лисперам?
Многие узнали о существовании этого модуля исключительно из новости. А до этого о нужности им лично графиков не задумывалсь. Это вот мера нужности. Конкретно лисперам об этом можно сразу и забыть, посколку в СommonQt его подключение без напильника не предусмотрено. Это вот те небазовые библиотеки которые в отличае от Tk пока нельзя

Добавлено через 7 минут
Цитата Сообщение от budden Посмотреть сообщение
Заражение возможно, только если под LGPL лисповый код.
Вот как ты себе представляешь заражение именно LGPL? Особенно в CL. Для меня это как оксюморон. Даже если отдельные функции в свои пакеты перекладывать, то все равно LGPL будет соблюдатся покуда в них не запутался
0
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
02.08.2016, 16:24 37
Цитата Сообщение от antares0 Посмотреть сообщение
А до этого о нужности им лично графиков не задумывалсь.
Я один раз в жизни работал профессионально (т.е. за деньги) с Qt и графики там были как раз нужны. Но не помню, использовались ли там графики из Qt или самописные (это было довольно двано). Сейчас у них самописные.

tclkit я рассматривал. Он хуже, поскольку это частное решение (только для tcltk).

Цитата Сообщение от antares0 Посмотреть сообщение
Вот как ты себе представляешь заражение именно LGPL? Особенно в CL
Это не моё мнение, это кто-то на лиспере написал в ответ на мой вопрос. Происходит в момент создания образа, когда программа как бы линкуется. Дальше я не вникал.

Цитата Сообщение от antares0 Посмотреть сообщение
Правильно установленые PATH и LD_LIBRARY_PATH позволяют правильно использовать ахитектуру линукса без вреда для здоровья
Возможно. Вопрос в количестве пунктов в процедуре установки.

Но мы ещё не все вопросы рассмотрели. Допустим, у меня есть пример на С++ для Qt. Чтобы перевести его на COmmon Qt, я должен именно его взять и перевести (либо часть программы у меня будет на С++, что не всякий одобрит).
Если у меня есть пример на tcl/tk и я иду по технологии клиент/сервер, то мне надо только скопипастить пример.

Далее, что происходит, если я написал свой код на Common Qt с ошибкой? Исключены ли полностью все те ужасы, которые всегда сопровождают программирование на C/C++?

Если я упал в дебаггер в обработчике события (как оно там, в обработчике сигнала), написанном на лиспе, я увижу ли стек?
0
4 / 4 / 0
Регистрация: 20.07.2016
Сообщений: 59
03.08.2016, 23:11  [ТС] 38
Без обиняков, Вы тут так много написали, а внятного решения или помощи нет! Вот я , умею программировать на лисп, но ничего не смыслю в Common Qt и tcl/tk - помогите мне, новичку в этом деле, хотя бы правильно установить программу, чтобы она элементарно работала. Помощь нужна с нуля, а не "догадайся сам" (иначе бы и тему не создавал...)
0
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
04.08.2016, 11:20 39
Хочешь учить tcl/tk? Да/Нет
0
4 / 4 / 0
Регистрация: 20.07.2016
Сообщений: 59
05.08.2016, 20:48  [ТС] 40
Да, если будешь учить!

Добавлено через 22 часа 22 минуты
И где все учителя?!
0
05.08.2016, 20:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2016, 20:48
Помогаю со студенческими работами здесь

Для тех кто делает оконные приложения в Builder C++ Borland
Ребята вот подскажите..если я создал приложение , оно работает , все норм, но вот я хочу что бы там...

Как лучше учиться: писать консольные приложения или оконные? И если писать оконные, то на чём лучше?
На днях я узнал про Borland c++ builder и хочу воспользоваться им, но можно и писать код, что-бы...

Оконные приложения
Раньше изучал только консольные приложения. Но вот понадобилось сделать оконное и я понял, что с не...

Оконные приложения на C++
Мне надо написать приложение под Windows на C++.Программа тупо принимает данные и выводит их в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru