Já jsem nevyzdvihoval výhody Qt oproti GTK+, ale výhody C++ oproti C a ilustroval jsem to na příkladu GTK+ (C) a Qt (C++). Mým cílem je představit aspoň dva z dlouhé řady existujících toolkitů a zároveň ukázat programování pro X v C++ (které se podle mne pro daný účel hodí lépe) a v C (které z různých důvodů někteří programátoři preferují). Proto jsem vybral tuto dvojici toolkitů. A ještě k tomu "...bohužel uchýlit": možná se vám Qt nelíbí, mně se ale líbí víc než GTK+ se všemi nadstavbami pro C++. Připadá mi, že GTK+ (a tím myslím i jeho nadstavby) je zbytečně komplikované a nutí programátora soustředit se na detaily fungování toolkitu. Naopak Qt dovoluje soustředit se na vytvářenou aplikaci. To je ale můj osobní názor a spousta programátorů bude mít názor odlišný.
Mno, ja bych tu argumentaci videl asi takhle:
1) Pro GUI vhodny objektovy model. To necham bez dukazu. Pokud si to nemyslite, asi se neshodneme :-) Ale vsechny GUI toolkity na ktere si vzpominam ho pouzivaji ;-)
2) Jazyk, ktery ma podporu objektu (C++) se s objektovym modelem vyrovnava podstatne lepe, nez jazyk, ktery ji nema (C). Tri priklady:
a) Mam funkci/metodu f(classA). Mam classB jako potomka classA. U C++ muzu bez problemu jako argument funkce dat instanci classB a kompilator vi, ze je to OK.
U C ale musim udelat pretypovani. Bud natvrdo, cimz prijdu o typovou kontrolu, nebo nejakym makrem (jako GTK), coz je nesikovne.
b) U jazyku s objekty si muzu definovat destruktory => objekty se mi korektne rusi, aniz musim cokoli explicitne volat. (Napr. kdyz je takovy objekt v lokalni promenne.)
c) U GTK me vylozene stvaly silene dlouhe nazvy funkci (ktere tam jsou kvuli imitaci objektoveho modelu).
Myslím, že pro porovnávání vhodnosti zvoleného jazyka pro GUI programování není GTK+ framework ten nejšťastnější příklad, resp. je ukázkou toho, jak by se v C programovat nemělo. V C se k implementaci přistupuje úplně jinak, ne že se snaží "emulovat" objekty OOJ. Dělal jsem nějaké drobnosti v OpenMotifu a WINGs. To je úplně o něčem jiném.
No myslim, ze hlavnim problemem objektově orientovaného jazyka je rychlost vysledného ,,programu".Když jse k tomu přidá ještě pomalejší X server tak to hodí projekt typu KDE (vše pěkné, propracované ale kurevsky pomalé) a to mám 1,7Ghz P4
Takže nejlepší je C a vše ,,LOW-LEVEL" !!!!
Ano já mám na věc jiný názor:-) Mnou preferovaný programovací jazyk je C++, znám ho poměrně dobře. Proto se mi nelíbí knihovny typu wxWindows a Qt, protože zkrátka existují už moc dlouho na to, aby to bylo to "opravdové" C++, tzn. výjimky a ne vracení chybové hodnoty, šablony a ne makra, STL a ne pointery, atd... Srdce zarytého pluskaře plesá při pohledu na API knihovny Inti, a pláče krvavé slzy při nucenému programování Qt věcí. Nic ve zlém:-)
Velmi diky za odkazy i vse co bude probirano ohledne programovani GUI pod Linuxem.
Jiz nejakou dobu se snazim prejit na programovani pod Linuxem. Pod Win programuju ve Visual. Ale snazim se prejit plne na Linux. Doufam a pevne v to verim, ze jiz nebude problem programovat GUI pod Linuxem. Prikazova radka staci,, ale nekde to neni ono.
V praci sice zaspali nad OS Linux, ale co se da delat. Vsak to za 5 let pochopi.
Jen malickost. Neslo by udelat PDF verzi z Vasich prednasek?
Petr
Ja jsem delal nejakej programek pro Xka cca pred rokem a pul a byl jsem nadsenej cistotou a jednoduchosti programovani oproti win.
Zkousel jsem Xt a Gtk. Jen je potreba si trosku zvyknout na jiny zpusob umistovani vnitrnich komponent. Nicmene se tahle znalost neztrati -- Java to ma taky tak.
Drzim Vam palce, abyste mel jeste za pet let praci :-) Budeme muset ty roky nejak preklepat :-)
U mna vyhrava wxWidgets: www.wxwidgets.org. Ak nechcete stravit prilis vela casu s GUI existuju programy ako wxDesigner (130$), DialogBlocks (70$), wxGlade (free), v ktorych mozete naklikat dialogy a oni vam vygeneruju kod (C++, Python). Povrava sa, ze dalsia verzia Kylixu bude tiez podporovat wxWidgets. Tak som zvedavy.
Mam multithreadovou aplikaci pod wxWindows a dost casto (temer po kazdem spusteni) se objevi hlaska
Xlib: unexpected async reply (sequence 0x173f)!
Docetl jsem se, ze to souvisi s vlakny, ale nevim, jak
tuto chybu nejak (pokud mozno "bezbolestne") odstranit.
Muzete me nekdo nasmerovat?
dekuji.
Ja osobne to delam obalenim celeho XLibu do trid podobnych MFC. Pote si kazdou Xlibovskou funkci obalim lockem a tim zamezim, aby vice vlaken zapisovalo do socketu ve stejny okamzik.
Pozn. : Zamykejte pouze okolo funkci xlib, protoze jinak ziskate krasny zdroj deadlocku :)
Tu knihu mam tu a vola sa Ales Limpouch: X Window System progamovani aplikaci, Grada 1993, zhnala som ju v roku 2001 a zohnal som uz len vzorku obchodneho oddelenia Grady na Slovensku. cize takmer nezohnatelna kniha. Mozno tento serial donuti Gradu k reedicii :)
Trochu ma v kvalitnom a informativne bohatom clanku zarazilo, ze uplne ignoruje Xaw (Athena widget set -projekt Athena), ktora je k dispozicii s kazdym X Window system(projekt MIT s menom Argus), kedze tento system je naprogramovany v Xaw.
Ja som mal moznost nieco programovat v Xaw a Xlib v ramci projektu riadiaceho systemu pre stroj na delenie kovov LASER-ovym lucom a jedine preco som musel v projekte pouzit aj Motif, bolo to, ze nic okrem neho a jeho klonou LessTiff neumoznovalo ovladat dialogove okna len cez klavesnicu a bez mysi.. Tu sme pri prvej nepresnosti v clanku
>Teoreticky může každá aplikace na obrazovce >používat jiný toolkit
nie len teoreticky ale aj prakticky a dokonca jedna aplikacia moze vyuzivat viac Widget set-ov toolkit=Xlib+Widget set.
>Teoreticky by aplikace (klient) mohla sama otevřít >síťový socket a X protokolem komunikovat se >serverem. To ale nikdo nedělá
To by som netvrdil. V RT riadeni cez RT Linux ci RTAI nie je odporucanbe pouzivat necelocislene typy(koli pomalosti spracovania) a navyse sa chce RT zobrazovat v asynchronnom rezime X Window system. Tam by realne nemala byt ina moznost ako otvorit realtime socket na X Server.
Inak si clanok zasluzi pochvalu
Mozna mam v tomto prispevku nadeji na dobrou radu..
Ucim se programovat v C++
Po instalaci KDE 3.2.1 nemohu pracovat v KDevelop
Pri vytvoreni noveho projektu (treba Hello World) vyhodi hlasku:
Could not create language plugin for C++
Projekt se sice vytvori, ale nejde prelozit.
Poradte mi prosim, a nechci radu typu "Precti si HowTo nekde na http://kdevelop.kde.org/ tam jsem byl :-(
No, proc nepouzit parametr "nodeps", kdyz mam vsechny baliky (207 MB + cestina). Mam RedHat 9. Nikde se nedoctete, v jakem poradi instalovat rpm balicky KDE. Cetl jsem, ze se ma zacit s "kdebase". No, to asi nebude pravda. Opravdu nejsem zadna "trubka". Vsechno funguje O.K. Jen tento jedinej problem s KDevelop.. Tak prosim, jak je to.....
> No, proc nepouzit parametr "nodeps", kdyz mam
> vsechny baliky (207 MB + cestina). Mam RedHat 9.
> Nikde se nedoctete, v jakem poradi instalovat rpm
> balicky KDE. Cetl jsem, ze se ma zacit s "kdebase".
Najednou bez nodeps.
> No, to asi nebude pravda. Opravdu nejsem zadna
> "trubka". Vsechno funguje O.K. Jen tento jedinej
Jste.. ;)
> problem s KDevelop.. Tak prosim, jak je to.....