A proč vlastně obětovat trochu toho pohodlí? V aplikacích, které píšu já, nepotřebuju rychlost, čekání na vstup uživatele (poslední dobou tedy spíš na vstup programátora), nebo jiné události, je tu základ, tady mě Python rozhodně neomezuje. Co mě ale dlouhodobě štve, je nenažranost PyGObject (dříve PyGTK, žere to furt stejně) co se paměti týká. Když napíšu triviální aplikaci typu Svátkový applet/indikátor na panel, vezme si po startu 6,5MiB na 32bit systému, na 64bit s dostatkem RAM je to přes 12MiB. Mně osobně se z toho dělá šoufl, do toho se sakra vešel celý Flashback, nebo Duke Nukem a to byla jiná zábava! Nerad to říkám, ale poslední verze mého SGTimeru umí sežrat i 30MiB, když si s tím člověk na 64bit systému trochu pohraje. Každé menu, každý objekt, žere jako zjednaný. Sice za to nemůžu, ale stejně se za to stydím. Vlastně můžu, Python jsem si zvolil sám, kurnik..
Zkrátka je frustrující, když si v monitoru systému seřadíte aplikace podle využití paměti a ta vaše pidiaplikačka je hned za ... a před ... No však se na to podívejte:
SGTimer po provětrání na 64bit systému |
První, co jsem začal do Vala přepisovat a na čem se učím, je svátkový indikátor, jakožto to nejjednoduší, co se dá rovnou využít. Takový hloupý indikátor po spuštění binárky z Vala sežere necelé 2MiB na 32bit 3,4MiB na 64bit systému, což sice také není až tak málo, ale po použití GTK tolik sežere každá aplikace a o moc méně to již nejde. Oproti PyGObject aplikacím je to ale třetina a bobtná to o poznání méně, protože není třeba žádných vrstev navíc. Běží to skoro jako byste to psali přímo v C. Vlastně to běží daleko lépe, než kdybych to psal v C já sám, a hlavně daleko dříve.
A nakonec, krom Vala tu máme i jakýsi dialekt, další programovací jazyk, zvaný Genie, který využívá stejný kompilátor (valac), ale jeho syntaxe je bližší Pythonu, tedy především je jejím základem odsazování bloků kódu, místo složených závorek a středníků. Osobně jsem dal přednost Vala, který má pro mě, krom lepší dokumnetace, plus v tom, že mě nutí osvojit si do jisté míry syntaxi většiny od C odvozených jazyků, což pro mě znamená především neustálé doplňování zapomenutých středníků. Možná se nakonec podívám i na ten hnusný JavaScript, co na něm frčí GNOME Shell :)
Pokud tedy hodláte vyrábět aplikaci s použitím GTK+, zamyslete se i nad tím, zda má plýtvání pamětí opodstatnění ;) A nebo naopak, zda by vám Vala neušetřil drahocený čas při psaní GUI..
No, vzhledem k tomu jaký jsem programátor, jsem přesvědčen, že kompilátor Vala vyrobí rychlejší C, než bych byl schopen já a já zároveň ušetřím čas. Na to abych si udělal okénko s menu to stačí, musíš alespoň ocenit, že jsem se k tomu C přiblížil ;)
OdpovědětVymazatAhoj, já šel zase cestou učení se C; Python, Perl apod. se mi zdály příliš svazující. Pokud ale potřebuji v C udělat GUI, jsem v prdeli, např. GTK API je na mě už moc složité... Obcházím to tím, že si spustím vlastní webserver na localhost, a GUI jedu přes HTML a FF. Na emailového klienta to třeba stačí, ale obecně to moc elegantní není ;) Vala by mohl být kompromis třeba... Díky za tip. arrange
OdpovědětVymazatKdyž už do toho GTK člověk pronikne (a je jedno, jestli to bylo přes Python, stejně používám dokumentaci pro C, co přišel PyGObject), je to celkem jednoduché a použít to v jiném jazyce zahrnuje jen změnu syntaxe. Pro blbnutí s GTK GUI je tedy Vala pěkná záležitost. Umí přímo volat externí funkce v C, takže si člověk stěžijní části může napsat přímo a Vala dovalí okénka :)
VymazatZ důvodů, který jsi popsal je Vala jistě zajímavá, jednu dobu jsem měl pocit, že se z ní stane hlavní aplikační jazyk Gnome, ale teď se mi zdá, že to má být JavaScript (kterej taky zrovna nemiluju). Jen pro zajímavost - když chci vyzkoušet novej jazyk, napíšu si v něm jednoduchou hru SameGame. Pro Valu jsem jako základ vzal verzi napsanou v C# a skoro tři čtvrtiny (spíš možná tak 60%, už si to přesně nepamatuju) kódu hry jsem nemusel nijak upravovat, v podstatě celou datovou a většinu vykreslovací části hry. GUI a samotný kreslení se samozřejmě muselo napsat od začátku, ale i tak mě syntaktická podobnost s C# překvapila. Jinak se zatím raději "seru" s Pythonem, ale z GTK jsem časem přesedlal na Qt kvůli WebKitu, kterej v aplikacích používám. A taková aplikace s WebKitem si pak teprv ukousne paměti... ;-)
OdpovědětVymazatPromiň, z nějakého důvodu se Google rozhodl, že je tvůj komentář spam, budu se muset podívat, jak to vypnout úplně.
VymazatJá mám Python rád a rozhodně nechci říct, že je na nic. Ne vždycky mám ale paměti dost. Když si jeden indikátor ukousne 10MiB, možná se to ztratí, ale když je takových miniaplikací 10, je to už rozdíl. Když na tom je založena půlka desktopu, je z toho nenažraný moloch. Takže pokud vidím, že to jde nejméně třikrát lépe a přitom se zas až tolik nepředřu (to je to nejdůležitější :), tak zkusím jít raději touto cestou.
Jinak máš pravdu, že ve srovnání s web browsery je to jen malichernost, když pustím na systému s 1,5GiB RAM dva, už se na tom skoro nedá pracovat. Poslední dobou je v úspornosti jednoznačným vítězem Firefox.
A já jsem si říkal, kam ten můj komentář zmizel, Google mě asi nemá moc rád...
OdpovědětVymazat