Почему я стал программировать на wxWidgets
November 23rd, 2009 Begemot Posted in Программирование
Уже не первый раз задают этот вопрос, решил написать развернутый ответ, возможно в немного вольном стиле, вечер, после релиза, однако.
Выбор это я сделал 2 с копейками года назад. Почему именно wxWidgets? Знаете какой был самый распространенный ответ в нашем вузе на вопрос “а как ты попал в ХАИ?” – “Случайно”:) Вот почти так же и я выбрал wxWidgets.
Тогда я писал на MFC и уже давно, сношений опыта с другими фреймворками не имел. Все вокруг говорили что MFC, или уже умер или умрет буквально сегодня-завтра. Вот и побудило меня это задуматься, на тему поиска новых библиотек. К тому же на мфц я писал уже давно и долго, руки чесались – хотелось чего-то новенького. Плюс к тому времени произошел, первый скачек перехода от количественных изменений к качественным в моей карьере, я еще не совсем понимая что есть хороший код, уже понимал, что все что я писал до этого это – ужас, и легче переписать проекты с нуля чем довести их до ума. В общем нужен был новый толчок и я решил поискать на чем бы их переписать.
- WINAPI – я сразу отбросил ввиду низкоуровневости. Я на нем не писал, но слышал много страшилок.
- ATL\WTL – вроде как идеально подходил для моего класса утилит, и я думал его попробовать, хотя и смущала низкоуровневость, но руки не дошли.
- MFC – уже был пройденный этап
- QT – его все хвалили, но лицензия… это потом он стал бесплатным, а тогда стоил более чем приличных денег. Сейчас уже можно использовать почти свободно, но все равно остаются проблемы с ненативностью, скоростью и размером, в общем для моих продуктов не подходит.
- HTMLLayout – наверное весьма приятная и перспективная штука, по крайней мере многие хвалят. Но css для меня темный лес и даже хуже, писать _красивые_ интерфейсы на хтмл я тоже с роду не умел, даже не стал смотреть.
- Delphi – хоть его все и хвалили, в свете применимости для шаровары, в качестве средства для быстрого написания быстрых шароварок, но ведь это не наш путь, правда?:) Есть у меня один проект на дельфи, в общем, я его не выбрал.
- Python – мне всегда заочно нравился и нравится сейчас, я даже опять вернулся к идее его использовать, буквально вчера скачал и установил, буду пробовать. Но опять же для моего класса продуктов он не подходит.
- Java – всегда мне заочно не нравилась. Заочно, потому что я на ней никогда не писал и её не знаю, но вот не нравится, и все тут.
- NET – для меня, в принципе тоже самое что и джава. Как по мне так тормоз тормозом, а мне надо было что-то быстрое…
Ну вот оставалась еще wxWidgets, подкупала нативность, скорость, похожесть на мфц, легкое переобучение, ну и новизна, ее мало кто использовал и в этом был положительный момент, подогревающий интерес. Ну и конечно большой плюс кроссплатформенность. Кроссплатформенность так до сих пор и осталась мифическим преимуществом, поскольку пока за пределы винды я не перешагнул. Но теоретически могу в любой момент – и это приятно согревает душу 🙂 Надеюсь скоро все-таки начну портировать продукты на другие платформы, я уже почти вплотную подошел к этому.
Я скачал, попробовал, получилось, понравилось. В принципе, это почти тоже MFC, только с потенциальной кроссплатформеностью, к тому же открытое – это иногда помогает. Хотя мфц все-таки более вылизанная, меньше глюков.
Что в итоге? У меня есть несколько продуктов написанных на wxWidgets clipboar manager, quick notes, blogspreading. И несмотря на то что есть определенные недовольства wxWidgets, я все-таки доволен. В принципе, считаю что даже если отбросить кроссплатформенность и писать только под винду, то все равно достойный выбор – работать можно. Как говорит мой друг, миссионер wxWidgets “на вкус и цвет, фломастеры разные” кому-то нравится мфц, кому-то вх, кто-то вообще полностью все пишет свое с нуля (зачем спрашивается?), а кто-то и на php программит и доволен, прости господи 🙂
November 23rd, 2009 at 8:58
1. ТОЛЧОК, -чка; м.
1.
Резкий короткий удар, производимый движением от себя; тычок, пинок
November 24th, 2009 at 4:30
Благодарю!
November 25th, 2009 at 11:01
Годный пост. А чем это тебе WTL низкоуровневой кажется? Имхо достаточно развитой фреймворк, вот pure WinAPI это блин что-то, когда проект переваливает за Икс тысяч строк кода – я как-то разок на такое напарывался, и оценил возможности WTL именно после этого.
November 30th, 2009 at 1:05
Да, почему wx – насущный вопрос =) У меня в дипломе даже глава на эту тему есть, если интересно могу выложить =)
November 30th, 2009 at 7:17
Завидую я все-таки макинтошникам. У них целая дюжина стандартных видов кнопок! 🙂 А в кроссплатформенных библиотеках их обычно максимум 2-3 вида… И wxWidgets
в этом смысле не исключение. 🙁
December 1st, 2009 at 2:57
Эээ… А нафига такое извращение?
Немного не по теме, но:
Мне вообще часто хочется придушить авторов с энтузиазмом рисующих гламурные фейсы. В программе главное внутренности, а не форма кнопочек и когда прога выбивается по лук-анд-филу из всей остальной системы – лично я это ну никак не могу отнести к плюсам.
Конечно, все эти дюжины кнопок для макоси нативные, это же всё равно получается зоопарк – в одном приложении одни кнопочки используются, в другом – другие… А если ещё и разные кнопки внутри одного приложения… Представить страшно.
December 1st, 2009 at 4:22
Дело в том, что в Маке каждый тип кнопок используется в (более или менее) строго определенных контекстах, а не произвольно.
А сами кнопки можно посмотреть, например, здесь. По-моему, никакого извращения:
http://nadeausoftware.com/articles/2008/11/mac_java_tip_how_create_aqua_single_and_segmented_buttons
December 2nd, 2009 at 2:07
Ну да, все эти кнопочки более менее в одном стиле, но всё-таки, ИМХО, это в любом случае несколько усложняет жизнь программисту…
Вообще, мой наезд преимущественно относится не к МакОСи, а к виндовым программерам, которые страстно любят писать кастом-интерфейсы.
December 2nd, 2009 at 5:09
2Alatar:
выложи плз главу на тему “почему wx насущный вопрос” – любопытно. Все таки у Николая пост получился не про “почему wx”, а “почему НЕ все остальное”. А хотелось бы покопаться, понять что удобно, что нет, какие плюсы от использования wx, какие минусы, сиюсекундные и в перспективе…
December 3rd, 2009 at 7:34
>какие плюсы от использования wx,
Работает, несложно учить, нормально писать, опен соурс – если чо можно посмотреть в исходники – помогает, есть ряд вкусностей.
>какие минусы, сиюсекундные
Ну все-таки не стандарт как мфц, есть свои кривости, менее вылизанная чем тот же мфц, есть баги которые не правятся месяцами, но учитывая опен соурсе – можно поправить самому, меньше third-party компонентов\классов
>и в перспективе…
Кроссплатформенность 🙂
December 3rd, 2009 at 11:22
1) А как насчет доступа к нативному API и соответственно достучаться до нативного контрола из wx-кода? Чтобы не было потом мучительно больно, а то ходишь в школу, ходишь… бац! вторая смена?
2) Что с поддержкой DatabaseEngine в wx? Есть ли? Если да, то какие движки поддерживаются?
December 3rd, 2009 at 2:07
Запросто, вот у меня в Clipdiary работа с буфером обмена полностью на винапи, не подошли мне средства вх…
Это ты сейчас чо имеешь ввиду? Есть Датабайс лайер который поддерживает много чего… я его юзаю для склайт и доволен, если чо – перейду на файрберд.
December 3rd, 2009 at 2:12
1) А как вообще представлен доступ к нативному API? А ля Qt? Типа макрос, включаем хедер из SDK и понеслась напрямую или как-то иначе?
2) А ткни какой-нить ссылкой плз на это Датабасе Лаейр – чтобы вообще прикинуть в целом что за штуковина…
December 3rd, 2009 at 6:21
Ну у меня тоже, преимущественно “почему НЕ всё остальное” – специфика сравнения такая – проще сначала отбросить всё лишнее и плясать от того, что осталось =) Для меня wx просто оказался золотой серединой.
Если интересно, выложил тут – http://gremlinable.livejournal.com/13806.html
December 4th, 2009 at 4:05
Просто берешь и вызываешь ::OpenClipboard(); или UnregisterHotKey(1);
Иногда надо еще конечно инклюдить нужный хедер, но как правило уже все есть.
А чо гугл уже отменили?:)
Вот http://wxcode.sourceforge.net/components/databaselayer/
Alatar, спасибо за развитие темы:)
December 4th, 2009 at 5:10
да не за что, мне не влом =) Тем более, что похоже тема действительно оказалась интересной – 10 комментов за сутки, (не считая моих) – это рекорд для моего блога =)
December 7th, 2009 at 6:38
Я вообще не проф. Пишу для себя и товарищей когда просят. Взял wx еще в 2006 из-за обепа (Buider заставили убить).
>>2) Что с поддержкой DatabaseEngine в wx? Есть ли? Если да, то какие движки поддерживаются?
Тут хотелось бы уточнить. Никакого Engine в wx для БД я не нашел (ну Engine я как понимаю связка Layera и контролов чтобы вписал sql запрос на select update и insert и готово) нет это и есть основной минус (для меня опять таки) wx. Правда, к dataBaseLayer’у что-то такое написали.
December 7th, 2009 at 7:55
ой как на тебя обиделись студийники и дельфисты с бьюлдерастами 🙂
December 7th, 2009 at 8:41
Попрошу без обидных слов. У меня почти все продукты написаны на C++Builder.
December 7th, 2009 at 8:42
Кстати, о птичках. Delphi официально планируют в скором времени сделать кроссплатформенным.
December 7th, 2009 at 8:55
Ага, как только юникод научаться поддерживать :))
December 7th, 2009 at 9:36
Delphi научился поддерживать юникод с версии 2009 (все контролы юникодные), а после нее уже вышла версия 2010.
December 7th, 2009 at 10:28
хм, не знал, беру свои слова обратно 🙂
December 7th, 2009 at 10:43
Шо, опять?
December 7th, 2009 at 11:37
Вы будете смеяться, но да, опять. 🙂
December 7th, 2009 at 1:42
2Бегемот: спасибо за ссылку! А гугол да, у меня его отменили :)… Просто не хотелось попасть не в те дебри, датабасе-лайерс понятие растяжимо-натяжимое.
Про Delphi: дык был же какой Кулих или как его там и вроде как на уровне исходников оно был как раз совместимо Win-Linux? С этим что? (я кагбе не дельфист вовсе, “читаю и перевожу со словарем” и только, поэтому спрашиваю безо всяких там)
Про Бильдер: говорят они хотят в 2010-ом сделать ребрендинг и выпустить продукт под новым названием “Хлоп, шлёп и поехали 2010″… Это правда?
(ну ща начнется :))))
December 8th, 2009 at 12:38
Да, был такой Kylix, основанный на Qt, но насколько я понял, на этот раз будет что-то другое. Что именно, не знаю.
Про переименование Бильдера не слышал.
Кстати, вот откуда я узнал о планах сделать Delphi/C++Builder кроссплатформенными:
http://www.theregister.co.uk/2009/06/12/embarcadero_codegear_tools_future/
“Embarcadero is now betting on cross-platform for Delphi and its partner C++ Builder, which shares many of the same libraries. “The most important thing is native cross-platform, Mac and Linux. Some of our biggest customers have moved completely to Mac. Internationally we don’t hear as much Mac interest, but Linux is really strong,” Williams said.”
В отличие от Kylix в новом Delphi будет кросскомпиляция (думаю, как в REALbasic).
“Wasn’t this tried before, at least on Linux, with a 2001 product called Kylix, which nobody bought?”
“Two big differences,” according to Williams, at least. “First, that wasn’t a cross-compile approach. People are fine developing on Windows. I need to be able to debug against a remote machine, but I don’t need the whole IDE over there. The other difference [is] they were too early as far as Linux goes, and from a visual standpoint now Mac matters. I’ve never been so sure about an opportunity.”
Кросс-платформенность теперь имеет даже более высокий приоритет, чем поддержка 64 бит.
“Williams says cross-platform is now a higher priority than a 64-bit compiler, though both are planned, and that we will see the first cross-platform release next year.”
December 8th, 2009 at 11:26
Я это, любя. Без всяких обидных мыслей. И сам в свое время были делфистом и бьюлдерастом 🙂
December 13th, 2009 at 2:06
А вы в курсе про эту GUI библиотеку:
http://www.tecgraf.puc-rio.br/iup/
Использует нативные контролы, кроссплатформенная (GTK+, Motif, Windows), более компактная чем wx.
December 13th, 2009 at 2:39
а как же Mac?
March 17th, 2010 at 3:53
Вопрос как знатоку wxWidgets: а wxWidgets поддерживает какой-нить несложный WYSYWIG HTML-редактор?
Аккурат тут понадобилось изваять одну помоешную тулзу для редактирования HTML – аналоги или уж сложны, или уж быстрее написать самому чем пароль от кредитки вводить.Ну и соответственно возник вопрос, а не попробовать ли wxWidgets…
March 17th, 2010 at 3:57
Я вроде о таком незнаю.
И вообще с каких это пор WYSYWIG HTML-редактор – стал простой штукой, которую написать, раз плюнуть???
March 17th, 2010 at 4:12
И э-э-эх, жаль! Ну а редактор по сути задачи там простой как пилорама: 5-6 тегов да перекодировка нужная, на MFC\WTL делов-то на 15 минут,
March 17th, 2010 at 4:19
ну текстовый редактор есть и под вх, есть также майкрософтовский ричэдит, есть wxHTML – но он достаточно простой, есть собственный ричконтрол (два года назад был весьма писец, но потом судя по логам – много правили, но я не смотрел)
March 19th, 2010 at 2:38
🙂 до чего программеры обленились…
March 19th, 2010 at 6:58
Помоему не обленились, а как раз наоборот – раз считают что WYSYWIG HTML-редактор – плевое дело 🙂
March 20th, 2010 at 6:19
Ха, не вижу связи между трудолюбием и мнением, что написать что-то – плевое дело
March 20th, 2010 at 3:08
2Sergey:
1) А причем тут лень?
2Бегемот: ну я прям так не сформулировал что HTML-редактор плевое дело. Меня как раз и интересовал вопрос, есть ли в wx для этого какой-то движок. Там у меня по сути задачи работа несложная – пяток тегов, картинки да гиперссылки поддержать. Остальное уже дело техники. То что я пробовал в MFC мне не показалось каким-то уж архисложным… Я в этом контексте говорил что задачка плевая, почему бы не попробовать на ее примере бы и поизучать другие фреймворки… Варум нихт?
March 20th, 2010 at 3:32
есть wxHTML который может отображать ограниченное подмножество хтмля, отображать – но не редактировать. Есть интеграция броузера в твое приложение – но опять же не редактирование. А что ты в мфц пробовал, скажи имя ?
March 20th, 2010 at 3:47
Хех, но мне то нужен именно редактор HTML, причем WISYWIG иначе как я там гиперссылки пропишу? Не-е, конечно написать несложный движок подобного редактора на базе какого-нить RichEdit в общем-то не очень сложно, нечто похожее делал. Но как-то огород городить не хочется…
Дык в MFC все просто: хостим IE, переводим его в режим редактирования ну и дописать немного кода через IHTML-интерфейсы… По идее ничего сложного же в этом нет.
March 22nd, 2010 at 2:07
Это было обычное старческое брюзжание “до чего нынешняя молодежь испортилась” и ничего более 🙂
March 22nd, 2010 at 2:36
Какая ж мы молодежь? Из нас же уже песок сыпется… 🙂