Почему я стал программировать на 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 программит и доволен, прости господи
Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.
Related:
November 23rd, 2009 at 8:58 tttt(Quote)
1. ТОЛЧОК, -чка; м.
1.
Резкий короткий удар, производимый движением от себя; тычок, пинок
November 24th, 2009 at 4:30 Begemot(Quote)
Благодарю!
November 25th, 2009 at 11:01 Carc(Quote)
Годный пост. А чем это тебе WTL низкоуровневой кажется? Имхо достаточно развитой фреймворк, вот pure WinAPI это блин что-то, когда проект переваливает за Икс тысяч строк кода – я как-то разок на такое напарывался, и оценил возможности WTL именно после этого.
November 30th, 2009 at 1:05 Alatar(Quote)
Да, почему wx – насущный вопрос =) У меня в дипломе даже глава на эту тему есть, если интересно могу выложить =)
November 30th, 2009 at 7:17 Алексей Винидиктов(Quote)
Завидую я все-таки макинтошникам. У них целая дюжина стандартных видов кнопок!
А в кроссплатформенных библиотеках их обычно максимум 2-3 вида… И wxWidgets
в этом смысле не исключение.
December 1st, 2009 at 2:57 Alatar(Quote)
Эээ… А нафига такое извращение?
Немного не по теме, но:
Мне вообще часто хочется придушить авторов с энтузиазмом рисующих гламурные фейсы. В программе главное внутренности, а не форма кнопочек и когда прога выбивается по лук-анд-филу из всей остальной системы – лично я это ну никак не могу отнести к плюсам.
Конечно, все эти дюжины кнопок для макоси нативные, это же всё равно получается зоопарк – в одном приложении одни кнопочки используются, в другом – другие… А если ещё и разные кнопки внутри одного приложения… Представить страшно.
December 1st, 2009 at 4:22 Алексей Винидиктов(Quote)
Дело в том, что в Маке каждый тип кнопок используется в (более или менее) строго определенных контекстах, а не произвольно.
А сами кнопки можно посмотреть, например, здесь. По-моему, никакого извращения:
http://nadeausoftware.com/articles/2008/11/mac_java_tip_how_create_aqua_single_and_segmented_buttons
December 2nd, 2009 at 2:07 Alatar(Quote)
Ну да, все эти кнопочки более менее в одном стиле, но всё-таки, ИМХО, это в любом случае несколько усложняет жизнь программисту…
Вообще, мой наезд преимущественно относится не к МакОСи, а к виндовым программерам, которые страстно любят писать кастом-интерфейсы.
December 2nd, 2009 at 5:09 Carc(Quote)
2Alatar:
выложи плз главу на тему “почему wx насущный вопрос” – любопытно. Все таки у Николая пост получился не про “почему wx”, а “почему НЕ все остальное”. А хотелось бы покопаться, понять что удобно, что нет, какие плюсы от использования wx, какие минусы, сиюсекундные и в перспективе…
December 3rd, 2009 at 7:34 Begemot(Quote)
>какие плюсы от использования wx,
Работает, несложно учить, нормально писать, опен соурс – если чо можно посмотреть в исходники – помогает, есть ряд вкусностей.
>какие минусы, сиюсекундные
Ну все-таки не стандарт как мфц, есть свои кривости, менее вылизанная чем тот же мфц, есть баги которые не правятся месяцами, но учитывая опен соурсе – можно поправить самому, меньше third-party компонентов\классов
>и в перспективе…
Кроссплатформенность
December 3rd, 2009 at 11:22 Carc(Quote)
1) А как насчет доступа к нативному API и соответственно достучаться до нативного контрола из wx-кода? Чтобы не было потом мучительно больно, а то ходишь в школу, ходишь… бац! вторая смена?
2) Что с поддержкой DatabaseEngine в wx? Есть ли? Если да, то какие движки поддерживаются?
December 3rd, 2009 at 2:07 Begemot(Quote)
Запросто, вот у меня в Clipdiary работа с буфером обмена полностью на винапи, не подошли мне средства вх…
Это ты сейчас чо имеешь ввиду? Есть Датабайс лайер который поддерживает много чего… я его юзаю для склайт и доволен, если чо – перейду на файрберд.
December 3rd, 2009 at 2:12 Carc(Quote)
1) А как вообще представлен доступ к нативному API? А ля Qt? Типа макрос, включаем хедер из SDK и понеслась напрямую или как-то иначе?
2) А ткни какой-нить ссылкой плз на это Датабасе Лаейр – чтобы вообще прикинуть в целом что за штуковина…
December 3rd, 2009 at 6:21 Alatar(Quote)
Ну у меня тоже, преимущественно “почему НЕ всё остальное” – специфика сравнения такая – проще сначала отбросить всё лишнее и плясать от того, что осталось =) Для меня wx просто оказался золотой серединой.
Если интересно, выложил тут – http://gremlinable.livejournal.com/13806.html
December 4th, 2009 at 4:05 Begemot(Quote)
Просто берешь и вызываешь ::OpenClipboard(); или UnregisterHotKey(1);
Иногда надо еще конечно инклюдить нужный хедер, но как правило уже все есть.
А чо гугл уже отменили?:)
Вот http://wxcode.sourceforge.net/components/databaselayer/
Alatar, спасибо за развитие темы:)
December 4th, 2009 at 5:10 Alatar(Quote)
да не за что, мне не влом =) Тем более, что похоже тема действительно оказалась интересной – 10 комментов за сутки, (не считая моих) – это рекорд для моего блога =)
December 7th, 2009 at 6:38 Борис(Quote)
Я вообще не проф. Пишу для себя и товарищей когда просят. Взял wx еще в 2006 из-за обепа (Buider заставили убить).
>>2) Что с поддержкой DatabaseEngine в wx? Есть ли? Если да, то какие движки поддерживаются?
Тут хотелось бы уточнить. Никакого Engine в wx для БД я не нашел (ну Engine я как понимаю связка Layera и контролов чтобы вписал sql запрос на select update и insert и готово) нет это и есть основной минус (для меня опять таки) wx. Правда, к dataBaseLayer’у что-то такое написали.
December 7th, 2009 at 7:55 Sergey(Quote)
ой как на тебя обиделись студийники и дельфисты с бьюлдерастами
December 7th, 2009 at 8:41 Алексей Винидиктов(Quote)
Попрошу без обидных слов. У меня почти все продукты написаны на C++Builder.
December 7th, 2009 at 8:42 Алексей Винидиктов(Quote)
Кстати, о птичках. Delphi официально планируют в скором времени сделать кроссплатформенным.
December 7th, 2009 at 8:55 Begemot(Quote)
Ага, как только юникод научаться поддерживать
)
December 7th, 2009 at 9:36 Алексей Винидиктов(Quote)
Delphi научился поддерживать юникод с версии 2009 (все контролы юникодные), а после нее уже вышла версия 2010.
December 7th, 2009 at 10:28 Begemot(Quote)
хм, не знал, беру свои слова обратно
December 7th, 2009 at 10:43 Ippi(Quote)
Шо, опять?
December 7th, 2009 at 11:37 Алексей Винидиктов(Quote)
Вы будете смеяться, но да, опять.
December 7th, 2009 at 1:42 Carc(Quote)
2Бегемот: спасибо за ссылку! А гугол да, у меня его отменили
… Просто не хотелось попасть не в те дебри, датабасе-лайерс понятие растяжимо-натяжимое.
Про Delphi: дык был же какой Кулих или как его там и вроде как на уровне исходников оно был как раз совместимо Win-Linux? С этим что? (я кагбе не дельфист вовсе, “читаю и перевожу со словарем” и только, поэтому спрашиваю безо всяких там)
Про Бильдер: говорят они хотят в 2010-ом сделать ребрендинг и выпустить продукт под новым названием “Хлоп, шлёп и поехали 2010″… Это правда?
)))
(ну ща начнется
December 8th, 2009 at 12:38 Алексей Винидиктов(Quote)
Да, был такой 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 Sergey(Quote)
Я это, любя. Без всяких обидных мыслей. И сам в свое время были делфистом и бьюлдерастом
December 13th, 2009 at 2:06 C Programmer(Quote)
А вы в курсе про эту GUI библиотеку:
http://www.tecgraf.puc-rio.br/iup/
Использует нативные контролы, кроссплатформенная (GTK+, Motif, Windows), более компактная чем wx.
December 13th, 2009 at 2:39 Sergey(Quote)
а как же Mac?
March 17th, 2010 at 3:53 Carc(Quote)
Вопрос как знатоку wxWidgets: а wxWidgets поддерживает какой-нить несложный WYSYWIG HTML-редактор?
Аккурат тут понадобилось изваять одну помоешную тулзу для редактирования HTML – аналоги или уж сложны, или уж быстрее написать самому чем пароль от кредитки вводить.Ну и соответственно возник вопрос, а не попробовать ли wxWidgets…
March 17th, 2010 at 3:57 Begemot(Quote)
Я вроде о таком незнаю.
И вообще с каких это пор WYSYWIG HTML-редактор – стал простой штукой, которую написать, раз плюнуть???
March 17th, 2010 at 4:12 Carc(Quote)
И э-э-эх, жаль! Ну а редактор по сути задачи там простой как пилорама: 5-6 тегов да перекодировка нужная, на MFC\WTL делов-то на 15 минут,
March 17th, 2010 at 4:19 Begemot(Quote)
ну текстовый редактор есть и под вх, есть также майкрософтовский ричэдит, есть wxHTML – но он достаточно простой, есть собственный ричконтрол (два года назад был весьма писец, но потом судя по логам – много правили, но я не смотрел)
March 19th, 2010 at 2:38 Sergey(Quote)
March 19th, 2010 at 6:58 Begemot(Quote)
Помоему не обленились, а как раз наоборот – раз считают что WYSYWIG HTML-редактор – плевое дело
March 20th, 2010 at 6:19 Sergey(Quote)
Ха, не вижу связи между трудолюбием и мнением, что написать что-то – плевое дело
March 20th, 2010 at 3:08 Carc(Quote)
2Sergey:
1) А причем тут лень?
2Бегемот: ну я прям так не сформулировал что HTML-редактор плевое дело. Меня как раз и интересовал вопрос, есть ли в wx для этого какой-то движок. Там у меня по сути задачи работа несложная – пяток тегов, картинки да гиперссылки поддержать. Остальное уже дело техники. То что я пробовал в MFC мне не показалось каким-то уж архисложным… Я в этом контексте говорил что задачка плевая, почему бы не попробовать на ее примере бы и поизучать другие фреймворки… Варум нихт?
March 20th, 2010 at 3:32 Begemot(Quote)
есть wxHTML который может отображать ограниченное подмножество хтмля, отображать – но не редактировать. Есть интеграция броузера в твое приложение – но опять же не редактирование. А что ты в мфц пробовал, скажи имя ?
March 20th, 2010 at 3:47 Carc(Quote)
Хех, но мне то нужен именно редактор HTML, причем WISYWIG иначе как я там гиперссылки пропишу? Не-е, конечно написать несложный движок подобного редактора на базе какого-нить RichEdit в общем-то не очень сложно, нечто похожее делал. Но как-то огород городить не хочется…
Дык в MFC все просто: хостим IE, переводим его в режим редактирования ну и дописать немного кода через IHTML-интерфейсы… По идее ничего сложного же в этом нет.
March 22nd, 2010 at 2:07 Sergey(Quote)
Это было обычное старческое брюзжание “до чего нынешняя молодежь испортилась” и ничего более
March 22nd, 2010 at 2:36 Carc(Quote)
Какая ж мы молодежь? Из нас же уже песок сыпется…