Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2006-05-04 11:29:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Вопрос к программирующей публике
На чем надо писать программу, на 95% состоящую из портабельного гуя?
Почему-то в голову лезет в основном Жаба, но это как-то очень пошло.
Я что-то не заметил?


(Добавить комментарий)


[info]potan
2006-05-04 11:31 (ссылка)
TCL/Tk :-).

(Ответить)


[info]p_k
2006-05-04 11:53 (ссылка)
Это зависит от деталей, мне кажется. Насколько оставшиеся 5% CPU intensive? Если не сильно, то чем Java плоха? JVM сейчас на любой платформе присутствует, в том или ином виде, так что дополнительно ничего устанавливать не придется. Если же имеется вычислительно интенсивные алгоритмы, то надо писать нативный код, в том числе и для GUI. Вариантов разной степени портабельности пруд пруди: Qt, WxWindow, Gtk, OpenGL. Однако все они потребуют поставки дополнительных библиотек вместе с приложением (если не поставлят линкованный статически бинарник).

Есть еще вариант WebGUI - к коду прикручивают миниатюрный HTTP сервер, и пускают его локально слушать какой-нибудь левый порт, а все GUI - от браузера, для ввода - формуляры, а вывод - динамически сгенерированный контент. Я сейчас как раз такую штуку ваяю, у нее достоинство - что можно выводить всякие экзотические MIME типы, вроде VRML или SVG, поскольку плагины для них давно уже написаны.

(Ответить) (Ветвь дискуссии)


[info]ifp5
2006-05-04 14:42 (ссылка)
- Swing/AWT есть далеко не везде
- жаба совершенно непригодна для использования на слабых платформах типа различных PDA

С точки зрения меня как пользователя, самые кривые, неудобные, тормозные и уродливые GUI-приложения были написаны на жабе (ну еще на TCL/TK, но это не продукты а поделки, пользоваться ими не заставляют). Одним из таких продуктов приходится, к сожалению, пользоваться каждый день. :( Впрочем, уже привык, открывается документ пару минут -- ничего, можно покурить или попить кофе, все в этом мире суета сует и томление духа.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]potan
2006-05-04 15:35 (ссылка)
Вот на TCL/Tk ни одной тормознутой программы не видел :-). Особенно в области GUI.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-04 15:42 (ссылка)
Я на тикле/tk видел две программы: карточный пасьянс и tkined/scotty. Карточный пасьян был хорош (но примитивен), а вот scotty'на отбила желание иметь дело с tcl/tk навсегда.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2006-05-05 22:43 (ссылка)
Tcl/Tk вообще-то удобен для простых "прототипных" гуев. Пока хватает его набора виджетов и не напрягает нестандартный look'n'feel - он очень неплох. Особенно, если ембедится в программу на C.

Но у меня пролет именно по этим параметрам.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2006-05-05 23:46 (ссылка)
так у него ж меняется look-n-feel и есть куча сторонних виджетов (см tile, iwidgets, bwidgets и тп)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2006-05-06 10:01 (ссылка)
Я Tk довольно давно пользовался (в отличие от самого Tcl), и тогда он на меня произвел именно такое впечатление - все очень хорошо пока делаешь прототип/наколенную приблуду - ну чтобы самому что-то визуализировать. Если надо чего-то большего начинаются проблемы.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2006-05-06 10:07 (ссылка)
Так оно ж улучшается, собственно сейчас тот же tile (движок для скинов) входит в обычный Tk, а те же I/BWidgets идут в поставке как минимум с Active Tcl

Хотя это тонкий момент конечно, но я например с некоторых пор с большим удовольствием пользуюсь приложениями на Tk - они стали выглядеть гораздо лучше и быстрее работать, не теряя при этом своей настраиваемости.

(Ответить) (Уровень выше)


[info]polter
2006-05-04 21:18 (ссылка)
просто собрание мифов, извините...

java/pda: http://thinlet.sourceforge.net/home.html

тикль - отличный язык и tk - замечательный в общем-то гуй
особенно, с учетом того, что Tk - это на самом деле несколько библиотек с кучей виджетов и look-n-feel'ов.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-05 01:49 (ссылка)
> просто собрание мифов, извините...

"Просто" выссказываю свое скромное (как пользователя, жабу не программирую) мнение. Вдруг пригодится. :>

> java/pda: http://thinlet.sourceforge.net/home.html

Thinlet runs with Java™ 1.1 (IE's default JVM) to 1.4, Personal Java™, and Personal (Basis) Profile™. Swing isn't required.

Какой из этих пунктов относится к PDA? Что у нее служит low-level layer, у жабы на эту тему есть что-то портабильное или используется native API?

> тикль - отличный язык и tk - замечательный в общем-то гуй
> особенно, с учетом того, что Tk - это на самом деле несколько библиотек с
> кучей виджетов и look-n-feel'ов.

А что такого отличного в tcl? Я скажем могу понять что отличного в Haskell или scheme, даже в C++... Но tcl? Бегло на него смотрел, сложилось впечатление (возможно, неправильное), что это bash-переросток. :>

Кстати, если не затруднит, приведите пример замечательного приложения на tk. Пасьянс на нем был и правда замечательный (tkpatience что ли?), а вот все остальное что видел был полный кал (из названий помню только scotty/tkined).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-05 01:58 (ссылка)
> Что у нее служит low-level layer

Вопрос интересует естественно для GUI.

(Ответить) (Уровень выше)


[info]polter
2006-05-05 02:28 (ссылка)
Что у нее служит low-level layer, у жабы на эту тему есть что-то портабильное или используется native API?
java.awt.image или javax.microedition.lcdui
в зависимости от.

А что такого отличного в tcl? Я скажем могу понять что отличного в Haskell или scheme, даже в C++... Но tcl? Бегло на него смотрел, сложилось впечатление (возможно, неправильное), что это bash-переросток. :>

Ну вот, опять :)
tcl - это нечто среднее между фортом и лиспом и тем и хорош. Это метаязык на самом деле - все может быть представлено в виде строки или массива, синтаксис легко произвольным образом меняется, очень мощные регекспы и вообще обработка текста, средства для создания вложенных окружений, event-based программирование, встроенный GUI, база данных, веб-сервер и что угодно.
http://antirez.com/articoli/tclmisunderstood.html

Кстати, если не затруднит, приведите пример замечательного приложения на tk. Пасьянс на нем был и правда замечательный (tkpatience что ли?), а вот все остальное что видел был полный кал (из названий помню только scotty/tkined).

Ну, вообще это конечно не совсем правильно судить о библиотеках по приложениям на них написанным, но так, навскидку, я лично пользуюсь IRC-клиентом: http://roxirc.lighter.net/index.shtml - вообще доволен (хотя в первую очередь доволен именно фактом того, что это написано на tcl и настраивается таким образом ВСЕ)
ну или вот: http://vtcl.sourceforge.net/ - среда разработки.
вообще приложений очень много, достаточно поискать в гугле (правда не очень много по настоящему крупных).


(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-05 11:57 (ссылка)
java.awt.image

Хм, довольно портабельно.

Однако как пользователь PDA (у меня их сейчас 5 штук) замечу, что:
- производительность виденных мною жаба-приложений (даже примитивных типа крестиков-ноликов) оставляла желать сильно лучшего (на PDA это особенно раздражает)
- жабомашина стоящая на PDA by default -- явление нынче крайне редкое

tcl - это ...

Понятно, 10x.

Ну, вообще это конечно не совсем правильно судить о библиотеках по приложениям на них написанным...

Ну вообще, конечно, да. Но также стоит оценить возможность написания приличного размера нетривиальных приложений. Поигравшись со scotty, у меня сложилось впечатление, что писать их на tcl/tk невозможно. Ваши примеры довольно, в общем, простые (я кстати вспомнил, что сам пользовался tkirc на Alpha/OSF1 10 лет назад).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-05 12:06 (ссылка)
производительность виденных мною жаба-приложений

Это кстати касается не только PDA. Исключений из правила "жабский гуй => тормозное угробище" не встречал. А разработчикам мегасофтины Lotus Notes с удовольствием при встрече пробил бы с руки в рыло. :> Иногда, впрочем, есть и плюсы. Например, наши доблестные IT-шники сделали автоматизированную систему учета прихода/ухода сотрудников на работу. Сделали это, естественно (корпоративный стандарт, да), на лотусе. Что характерно, база открывается столько времени, что никто из начальства ей, похоже, не пользуется и нам, распиздяям, мозги не парит. :>

А вот серверные жаба-приложения обычно вполне ничего.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2006-05-05 18:39 (ссылка)
Ну вот thinlet вполне шустрый даже для небольших приложений
для больших есть SWT - последние эклипсы у меня вполне себе даже летают.
хотя даже на swing - я иногда пользуюсь jedit и intellij idea - при достаточном количестве памяти оно даже не сильно тормозит.

(Ответить) (Уровень выше)


[info]kouzdra
2006-05-05 22:44 (ссылка)
Tcl очень хорош как встраиваемый язык. Единственный конкурент тут пожалуй только Lua.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-06 11:29 (ссылка)
Это касается только small footprint или есть еще достоинства?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2006-05-06 11:39 (ссылка)
Еще прост и надежен. И с С хорошо стыкуется.
Опять же - как макропроцессор отличается офигительной расширяемостью.

Единственный серьезный недостаток - отсутствие "настоящей" сборки мусора - скажем при стыковке с ML это очень мешает. Собственно - на мой взгляд главное достоинство Lua.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]potan
2006-05-06 13:31 (ссылка)
Я смотрел как-то на стыковку OCaml и какой-то реализации Scheme. Два сборщика мусора в одном адресном пространстве мне не слишком понравились...

(Ответить) (Уровень выше)


[info]potan
2006-05-05 13:46 (ссылка)
В TCL хорошего - отработанный интерфейс интеграции с другими системами. Сейчас появился Lua, но для TCL в этой области больше наработок.
Кстати, удобство программирования интерфейсов связано именно с легкостью интергации с библиотекой виджетов.

Кроме того, TCL встроен во многие промышленные системы, в частности практически во все EDA-тулзы. Уже из-за этого с ним стоит познакомиться.

Принципиально нового там, конечно, ни чего нет. Язык как язык.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-06 11:34 (ссылка)
Кроме того, TCL встроен во многие промышленные системы...

Угу, в курсе. Из моего поля деятельности он встроен в рутеры cisco. Пока, правда, ни разу не понадобился (он нужен в основном для voip, которым я не занимаюсь).

(Ответить) (Уровень выше)


[info]kouzdra
2006-05-05 22:48 (ссылка)
Qt не подходит как миниимум по двум пунктам - тормоза под Вынь и убогий текстовый редактор.
WxWindow пугает. HTML не подходит по определению - гуй подразумевается более развитый и с custom widgets.

Ну и С++ в общем-то подарок тот еще в гуеписании.

То есть вот и выходит, что при всем богатстве выбора альтернативы Жабе нет. А плоха - в основном тяжеловесностью и навороченностью системы.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2006-05-05 23:44 (ссылка)
WxWidgets хороши, если писать под них не на С++, а это сложно в свою очередь по причине сложности создания байндингов к С++ коду.
Есть впрочем одна альтернатива про которую все почему-то всегда забывают: XPToolkit - это то, на чем работают mozilla/firefox/thunderbird/komodo и тп
очень развитая на самом деле платформа, но как минус - придется некоторое количество кода писать на JS (скоро, впрочем, от этого избавятся).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dluciv.livejournal.com
2006-05-06 12:37 (ссылка)
wx с питоном весьма неплох. Если питон устраивает.
Кстати, wxPython уже тоже довольно жирная штука :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]potan
2006-05-06 13:34 (ссылка)
Да и с Haskell :-)

(Ответить) (Уровень выше)


[info]dluciv.livejournal.com
2006-05-06 13:40 (ссылка)
XPToolkit получится с таким же жирным футпринтом, как и жава, если не хуже. Имхо.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2006-05-06 14:12 (ссылка)
нет, не хуже и вообще поменьше
кроме того, там больше изначально полезного и можно выкинуть все лишнее - как лицензия, так и архитектура позволяют.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dluciv.livejournal.com
2006-05-06 14:23 (ссылка)
Вообще пожалуй да - попробовал даже ради интереса запустить при помощи XULRunner MozChat - памяти расходует поменьше (раза в полтора), чем (скорее всего) расходовало бы на жаве.

(Ответить) (Уровень выше)


[info]ifp5
2006-05-06 11:27 (ссылка)
Qt не подходит как миниимум по двум пунктам - тормоза под Вынь и убогий текстовый редактор.

Гм. А кто написан под виндой на Qt?

Кстати. Есть еще забавная проблема с совместимостью JVM. Сейчас на рабочем нотебуке живет три JVM. Одна для телекомовской прикладухи, другая для апплетов на www.cisco.com (повбивав бы за эти блядские аплеты где хватает cgi с жабоскрипом), а третью тянет за собой Lotus Notes. Это при том что жабы я берегусь как огня и без крайней необходимости не пользуюсь. А то вполне вероятно, что пришлось бы держать десяток. :>

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2006-05-06 12:16 (ссылка)
Гм. А кто написан под виндой на Qt?

Кстати не так уж и мало, тот же скайп, например.

вообще вот у них список:
http://www.trolltech.com/customers/coolapps

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-06 13:29 (ссылка)
Скайп, на мой взгляд, и работает и выглядит прилично. Так что тормоза это не к Qt.

(Ответить) (Уровень выше)


[info]potan
2006-05-06 13:33 (ссылка)
У нас писали гуй на QT с использованием редактора scintilla на винде (на Linux пока не перенесли). Не сказать что особо тормозила.
Хотя на мой взгляд QT излишне монстрообразен.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2006-05-06 13:39 (ссылка)
Scintiil'у я к LablGTK, кстати, прикручивал.

(Ответить) (Уровень выше)


[info]ifp5
2006-05-04 14:17 (ссылка)
А куда должна портироваться программа?

(Ответить)


[info]pargentum.livejournal.com
2006-05-04 15:30 (ссылка)
HTML. Собственно, я бы начал с того, чтобы оценил такую возможность. Хотя, понятно, не панацея.

Если HTML не подходит, я бы еще оценил XUL.

А если не устраивает ни то, ни другое - что, собственно, такого уж прямо пошлого в Жабе?

(Ответить) (Ветвь дискуссии)


[info]kouzdra
2006-05-06 10:04 (ссылка)
HTML не подходит по определению. Как минимум могут понадобится свои виджеты.
А в Жабе - нет, в том и смех, что вроде она выходит тут оптимальной. Но это как-то из пушки по воробьям - тянуть такой наворот как JVM ради просто портабельной гуевой либы.

То есть по уму-то действительно чего-то вроде Tcl/Tk, только с нормально вылизанными либами было бы достаточно.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]pargentum.livejournal.com
2006-05-06 10:46 (ссылка)
А tcl/tk, типа, за собой тянуть не надо...

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2006-05-06 13:15 (ссылка)
Он маленький. А с Жабой по уму надо JRE с приложением поставлять - потому что совместимость между версиями у них не 100% - ловить глюки, вызванные тем того, что у юзера оказался какой-то левый JRE, получается себе дороже.

(Ответить) (Уровень выше)


[info]inv2004.livejournal.com
2006-05-04 17:34 (ссылка)
Я когда-то тоже долго думал на чём писать,
в итоге написал на ocaml+GTK+, никаких особых фич не использовал.
но всё работало довольно уверенно и на lin и на freeBSD и на windows.

(Ответить) (Ветвь дискуссии)


[info]polter
2006-05-04 21:37 (ссылка)
gtk под виндовс работает через пень колоду, а на маке, например, вообще отсутствует как класс

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-06 11:49 (ссылка)
А что мешает собрать? X сервера там что-ли нету?

P.S. А это совсем дохлое?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2006-05-06 11:57 (ссылка)
gtk-osx - совсем дохлое, да. кроме того, это первый gtk
а X-server есть конечно и под ним даже gtk работает, но пользоваться такими приложениями на маке почти невозможно.
ну то есть это выглядит и ощущается отвратительнее, чем X-приложения под windows.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-06 13:24 (ссылка)
ну то есть это выглядит и ощущается отвратительнее, чем X-приложения под windows.

Ну так жабщина под виндой выглядит примерно также, как пришелец из потустороннего мира. :>

См. например: [0] (к кому обратиться!?), [1] (пришлось вызывать IT HelpDesk), [2] (хотел отменить извещение, уж не помню каким чудом я этого добился). Просто диву даешься, что у парней из IBM может выйти из электронной таблицы. :>

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2006-05-06 14:05 (ссылка)
Судя по тому, что я увидел, это не жабища, а лотус - настоящий живой инопланетянин :)
Там чтоли свой какой-то GUI-тулкит?

Потому что по сравнению с тем как выглядят X-приложения на маке, жаба на виндовс (даже если это swing) - это просто родная кровиночка :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2006-05-06 16:31 (ссылка)
Там чтоли свой какой-то GUI-тулкит?

Гм. Даже не знаю (мне еще только с лотусом трахаться не хватало). IBM'еры могут, да. Но у меня почему-то была мысль что раз оно:
1) страшное
2) кривое
3) тяжеловесное
-- то это свинг (типа шкурку к такую свою прицепили).

(Ответить) (Уровень выше)


[info]kouzdra
2006-05-06 14:05 (ссылка)
Во-первых не очень непохоже - там есть "как бы виндовый" look'n'feel. Довольно блзко к оригиналу. Во-вторых - зачем нужен "стандартный" вид гуя - чтобы народ не стонал. К Жабе все уже привыкли. Она сама себе стандарт.

(Ответить) (Уровень выше)


[info]kouzdra
2006-05-05 22:45 (ссылка)
LablTk очень неплох, то есть - видимо один из вариантов.

(Ответить) (Уровень выше)


[info]polter
2006-05-04 21:14 (ссылка)
Tcl/Tk, XPToolkit
GTK избегать в принципе, назвать это портабельным в голову не приходит
Но, кстати, и ява - не такой уж плохой выбор, учитывая, что языков под JVM - туча, а гуев - несколько (тот же SWT кроме Swing)

(Ответить) (Ветвь дискуссии)


[info]kouzdra
2006-05-05 22:46 (ссылка)
GTK, кстати, как раз юзабелен. Но проблема все таже - довольно бедный набор виджетов.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2006-05-05 23:18 (ссылка)
GTK юзабелен менее чем на 5% десктопных платформ
А вот кстати про виджеты непонятно - по-моему там как раз все в порядке с этим, другое дело, что под виндовс - это одни сплошные мучения и полное игнорирование Mac OS

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2006-05-06 13:16 (ссылка)
Когда мне было надо, я, например, докера не нашел.

(Ответить) (Уровень выше)


[info]slava_askeri
2006-05-05 05:11 (ссылка)
Ну если Джава то может НетБинс АйДи вам подойдет.Расскажите потом что за штука.Туточки она http://www.netbeans.org/index.html.
А есть еще вот такая штука для ламеров (like myself) http://www.sun.com/download/products.xml?id=43d17ee4
Называется ВебКриэйтор.Все free.

(Ответить)


[info]polter
2006-05-05 23:51 (ссылка)
кстати, вспомнил
еще есть же:
http://www.exept.de/exept/english/Smalltalk/frame_uebersicht.html
и http://www.squeak.org
открытые смоллтолки
Вообще на самом деле выбор переносимого гуя - это вечная головная боль. их много и они все друг от друга отличаются по разным параметрам :)

(Ответить)


[info]dluciv.livejournal.com
2006-05-06 12:03 (ссылка)
Зачитался ответами просто - аж слеза навернулась :)

На самом деле wxWindows вроде правда штука неплохая, с одной стороны мощная, а сдругой у нее футпринт небольшой.

Как и у Tk. На Tk с его разными либами можно писать гуи, а код предметной области - на C/C++ - вполне себе покатит, по-моему.

(Ответить) (Ветвь дискуссии)


[info]dluciv.livejournal.com
2006-05-06 12:41 (ссылка)
http://cpptk.sourceforge.net/
;)

(Ответить) (Уровень выше)


[info]ifp5
2006-05-06 12:21 (ссылка)
Кстати, а как насчет .NET? :>

Не знаю правда как гуйня, а вот серьезные серверные приложения под Win/Linux на нем вовсю уже делаются и продаются.

(Ответить) (Ветвь дискуссии)


[info]dluciv.livejournal.com
2006-05-06 12:41 (ссылка)
У mono + GTK# футпринт удивительно небольшой (порядка 10 метров). Или мне показалось ... :)

(Ответить) (Уровень выше)