Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
1 | |
Как писать графический интерфейс для Лиспа?24.09.2021, 19:36. Показов 6792. Ответов 85
Здравствуйте!
Для большинства программ ныне требуется графический интерфейс, поэтому хочу изучить его разработку. Какие библиотеки вы могли бы посоветовать? Основным критерием является доступность для изучения. Я уже рассматривал некоторые варианты. LTK прост в изучении но выглядит довольно невзрачно, CommonQT хорошее решение. Вся проблема в отсутствии уроков по этим библиотекам. Подскажите пожалуйста, как лучше изучить эти библиотеки? И какую выбрать. Вся проблема сводится к документации. Для известных библиотек уроки снимают на C++ а его я изучать не намерен. Помогите пожалуйста!
0
|
24.09.2021, 19:36 | |
Ответы с готовыми решениями:
85
Как создать графический интерфейс для приложения Как сделать графический интерфейс для программы? Как писать интерфейс для своих библиотек Как создать графический интерфейс для несколько задач Как сделать графический интерфейс для данного кода |
28.09.2021, 08:45 | 41 |
у тебя на кнопках в качестве команд не функции, а результат их выполнения при создания кнопок. ты лямбды забыл поставить.
Добавлено через 1 час 38 минут вот кстати учебник по LTK http://www.peter-herth.de/ltk/ltkdoc.pdf
2
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
28.09.2021, 15:02 [ТС] | 42 |
IisNuINu, Спасибо! Теперь всё работает.
0
|
28.09.2021, 15:25 | 43 |
Regrin1, вообщем я поискал в интернете есть замечательный набор обучающих примеров по LTK, рекомендую начать с него
https://peterlane.netlify.app/ltk-examples/ помимо этого набора примеров, их автор написал интересный пакет, основанный на LTK, для построения графиков и диаграмм возможно вам понадобится, это вот документация по этому пакету: https://peterlane.netlify.app/ltk-plotchart/
2
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
28.09.2021, 23:10 [ТС] | 44 |
IisNuINu, Вот это уже совсем счастье!
Добавлено через 4 часа 0 минут IisNuINu, Я тут читал тему Tcl/Tk via Common Lisp и LTK и никак не могу понять, что вообще происходит. LTK написан на Лиспе, или это обернутый Лиспом Tcl? Саму библиотеку ругали за плохую архитектуру, грозились переписать. Чем в итоге дело кончилось? Так стоит ли игра свеч, или изучать более перспективные библиотеки? Мне б хоть что-то изучить...
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
29.09.2021, 00:35 | 45 |
Есть язык tcl. Он реализован на си, но ему это неважно.
Для него есть расширение tk, предоставляющее графические функции. Тоже написано на си, но из самого tcl/tk не чувствуется. Есть программа wish, которая представляет собой интерпретатор tcl/tk с прикрученной графикой. Пребавная вещь. Можно запустить из терминала - появится окошко. И прямо дальше в терминал написать, например, Код
button .b -text 'my button' LTK делает именно это: запускает wish, отправляет ему команды и принимает сообщения от самого wish-а. Например, пусть по нажатию кнопки меняется текст какого-нибудь лейбла. Тогда процесс выглядит так. Лисп запускает виш и отправляет ему команды "нарисовать кнопку", "нарисовать лейбл". При этом лисп знает, что на сообщение "нажата кнопка" надо прореагировать вызовом функции "отправить команду изменения текста лейбла". Когда юзер нажимает кнопку, виш (вспомогательным кодом, написанным на tcl) отправляет лиспу сообщение "нажата кнопка". Лисп реагирует вызовом функции, отправляя команду изменить текст. Для сравнения, в других языках обычно не реализуют диалог с вишем, а используют FFI для вызова сишных рисовательных функций, которые живут внутри tk. LTKшные объекты - просто обёртки над командами tk. Например, с объектом "кнопка" ассоциированы tk-шное имя и лисповая функция - обработчик нажатия; эти данные подставляются в шаблон команды, чтобы получить tk-шную команда создания этой кнопки. LTKшные объекты эфемерны, им нужно подключение к вишу. Не бывает "кнопка на фрейме сама по себе", только "кнопка на фрейме для конкретного виша". Меня всегда это сбивает с толку. В принципе, при дизайне приложения имеет смысл создать внутрилисповый "идеальный" UI, отвечающий за логику и состояние, который может жить сколько угодно; и функцию отображения этого объекта на "материальный виш", когда тот запущен. Потому что мешать логику и общение с внешним миром - это как-то некрасиво. А что я выше писал про клиент-сервер - я имел в виду то же самое, но без требования универсальности, заточенное под конкретное приложение. То есть можно на нормальном человеческом Qt, на плюсах, написать GUI с кнопкой и лейблом, которая будет читать и интерпретировать, например, стандартный ввод, и понимать одну-единственную команду "установить текст лейбла"; и писать в стандартный ввод "нажата кнопка". Вызывать эту прогу из лиспа и общаться по этому адхоковому протоколу. Что примечательно, лисповая часть и GUI при этом максимально разделены; GUI может написать и протестировать человек, не знающий лиспа. Добавлено через 2 минуты Немного почитать про LTK, чтобы быть в состоянии в обнимку с мануалом написать несложный GUI на коленке. А перспективных библиотек, может, и нет? Веб-интерфейс имхо самых перспективный. Добавлено через 3 минуты Как говорится, "Emacs и есть GUI".
0
|
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
|
|
29.09.2021, 05:27 | 46 |
0
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
29.09.2021, 08:39 [ТС] | 47 |
helter, А если решит человек, что это решение неидеально, нужно сделать своё, нативное, с ещё лучшей архитектурой, да такое, чтоб выглядело красиво, а работать было бы проще чем с LTK. Допустим у него имеется некоторая сумма денег. Сколько будет стоить разработка такого решения? В 15 000 руб. он уложится, если наймет программиста высокой квалификации?
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
29.09.2021, 11:45 | 48 |
Да ну. Это же двести долларов, квалифицированному программисту зарплата на пару дней. Графический тулкит он не напишет.
Для лиспера графический тулкит мечты - CLIM https://common-lisp.net/project/mcclim/. Потому что в нём есть буквы "CL". Можно составить впечатление, насколько сложно силами энтузиастов разрабатывать тулкит. Разработка движется медленно, работает плохо. Теоретически можно иметь разные бэкенды, чтобы работало на всех системах, но практически есть только для иксов. Было дело, собирали всем миром деньги и нанимали квалифицированного программиста. https://common-lisp.net/project/mcclim/posts/ Он несколько месяцев поработал, что-то сделал, но сомневаюсь, что макклим стал значительно юзабельней. Добавлено через 2 минуты Хотя работать с климом сложнее, чем с LTK. Какой-то он мудрёный сам по себе. А LTK, со своей стороны, трудно переплюнуть по простоте.
1
|
100 / 8 / 2
Регистрация: 12.03.2014
Сообщений: 10
|
|
04.10.2021, 19:36 | 49 |
Доступной для изучения является библиотека CAPI в LispWorks: обширная документация (начиная с пошагового введения с примерами кончая справочником), многоплатформная. Трудности могут быть с английским и коммерческим применением (поскольку небесплатная). Но если Вам поизучать и понять, как устроена самая грамотная GUI среда, рекомендую.
3
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
05.10.2021, 07:56 [ТС] | 50 |
helter, Скажите пожалуйста, а есть ли сведения сколько длилась разработка TK и LTK, кем велась и сколько всё это стоило?
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
05.10.2021, 11:38 | 51 |
LTK написал, если не перевираю фамилию, Herth - где-то в файлах она написана. Сколько времени он на неё потратил - не знаю, можно по гит лог, наверно, оценить. Сомневаюсь, что кто-то платил ему деньги - наверно, писал из любви к искусству, как и все.
Насчёт Tcl/Tk - не знаю, кто и с какой мотивацией ими занимается. Проект живой, то есть разработка продолжается.
1
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
10.11.2021, 16:39 | 52 |
Кстати, на основе браузерного интерфейса человек что-то невероятное делает: https://github.com/rabbibotton/clog
Надо как-нибудь опробовать.
2
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
11.11.2021, 16:39 [ТС] | 53 |
helter, А эта библиотека для работы с браузером, или каждое приложение само себе браузер?
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
11.11.2021, 16:54 | 54 |
Браузер - любой, имеющийся в системе. Он взаимодействует с пользователем (фронтенд), а лисповый процесс - бэкенд. Общаются по двустороннему каналу - через вебсокет.
Добавлено через 1 минуту Можно сказать, это разновидность веб-приложения.
1
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
11.11.2021, 18:25 [ТС] | 55 |
helter, Хорошая штука. Послушайте, я тут вот о чём подумал. Для Паскаля есть Лазарус и Delphi, для других языков Qt Designer. Все они позволяют довольно просто составлять графический интерфейс. Кажется такое есть и в HomeLisp. А нет ли такой программы для Common Lisp?
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
11.11.2021, 19:16 | 56 |
Это проблемы стран первого мира, а у нас трудности начинаются с наличия тулкитов. Зато мы верим в выразительную мощь S-выражений. (Я, вообще, дремучий человек насчёт интерфейсов. На мой взгляд, у вима идеальный UI.)
0
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
11.11.2021, 19:37 [ТС] | 57 |
helter, Скажите пожалуйста, как вы думаете, CLIM уже достаточно развит для того, чтобы быть "конкурентоспособным"?
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
11.11.2021, 19:55 | 58 |
Нет, он плохо работает (McCLIM). Навскидку: падает и не поднимается; не поддерживаются раскладки клавиатуры; для выбора пункта меню нужно удерживать кнопку мыши. И страшный на вид. У LispWorks есть свой (закрытый) CLIM, но они почему-то рекомендуют вместо него свой же CAPI. Может, потому что CLIM слишком мудрёный?
0
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
11.11.2021, 20:14 [ТС] | 59 |
helter, Эх, жалко. А почему КЛИМ мудрёный? Это вина архитекторов? Стоит ли вообще обращать на КЛИМ внимание? Или лучше подумать об opengl?
Добавлено через 2 минуты Интересно, сколько миллионов будет стоить выкупить у LispWorks исходники их CAPI?
0
|
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
|
|
11.11.2021, 22:33 | 60 |
Он у них не свой а комитетский несмотря на платность
Рекомендуют потому что платный CLIM прибит гвоздями к Motif А переписанный с нуля CAPI использует gtk и что родное для яблочной macosx. Их кокурент Franz даже сей платный CLIM выложил в открытый доступ пару лет назад. Добавлено через 37 минут Qt Designer есть везде где подключается Qt. Так же как аналогичный Glade есть для Gtk. Лисп тут от других языков не отличается Добавлено через 13 минут Можно и бесплатный IUP напильником. http://webserver2.tecgraf.puc-... alled.html
0
|
11.11.2021, 22:33 | |
11.11.2021, 22:33 | |
Помогаю со студенческими работами здесь
60
Как быстро сделать графический интерфейс для консольной программы под windows на С++ ? Графический интерфейс для Cygwin Графический интерфейс для программы Графический интерфейс для приложения c++ Графический интерфейс для класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
|
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
|
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее:
На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
|
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|