Děkuji za moc typ,
valu neznám, a vypadá to hodně dobře, teda gtkmm používám, gtk+ je přeci jen moc hardcore a c# mě nějak z mnoha věcí nevoní, ale co sem si tak o vale přečet, tak to je velmi pěkný způsob jak bez dalších knihoven v paměti psát objektově v GTK+ a dělat přitom nativní binárky.
Máte nějaké zkušenosti, jak moc je ten kód od valy pomalejší proti gtk+ resp. rychlejší proti gtkmm ?
díky za nic...jen více takových reakcí, to určitě pomůže
naštěstí Tomáš Velecký je proti vám jiný frajer...
http://www.root.cz/clanky/zakladni-widgety-v-gtkmm/
Vala se překládá do stejné podoby jako C binárka, je to tedy srovnatelné s C (myslím, že se z valy dá vygenerovat C kód). Navíc rychlost u klasických GUI aplikací není až tak podstatná (např. programy v PyGTK mi subjektivně pomalé nepřijdou).Jinak IMHO Vala vlastně nepřináší nic moc oproti C++ (akorát C# syntaxe). Naopak nepodporuje přetěžování metod a moc nerozumím té použité správě paměti(používá se nějaká forma "chytrého ukazatele"). U menších aplikací to není problém, ale u větších stejně bude nutné to podrobně nastudovat.
JJ, tyto informace sem si našel ;) Generovaný C kód je ale obalen a není to tedy totéž co čistě napsané C, nicméně co sem koukal po nějakých testech, tak to vypadá, že ty binárky jsou o něco rychlejší než c++, a samozřejmě tam chybí ta hromada c++ knihoven.
Co se týče paměti, to samé má python. V podstatě to počítá reference na nějaký objekt, a když už na něj nic neukazuje, tak ho prostě zahodí. Tedy implementované to zřejmě bude jinak, ale idea je jasná. Na přetěžování metod sem zatím nenarazil, to by byla skoro škoda.
Rozhodně ale neplatí, že je určen jen pro grafické programy. Resp. glib knihovnu používá poměrně dost konsolových aplikací, vedle pkg-configu můžu jmenovat např. mc.
V každém případě díky za info.
> Navíc rychlost u klasických GUI aplikací není až tak podstatná (např. programy v PyGTK mi subjektivně pomalé nepřijdou).
Rýchlosť klasických GUI aplikací nie je asi podstaná, ale spotreba batérií v dôsledku použitia Vala vs Python už podstatná je. Ak máte rád Python ako ja, skúste sa pozriet na Genie (http://live.gnome.org/Genie).
> Jinak IMHO Vala vlastně nepřináší nic moc oproti C++ (akorát C# syntaxe).
Vala prináša v skutočnosti omnoho viac. Je to možnosť použitia knižníc/komponent (naprogramovaných vo Vala) v C, teda C kompatibiline ABI. To napríklad neumožňuje kód napísaný v jazykoch ako Java alebo C#. Navyše netreba programovať binding GTK+ do Vala, lebo to rieši prakticky automaticky cez vapi.
> Naopak nepodporuje přetěžování metod a moc nerozumím té použité správě paměti(používá se nějaká forma "chytrého ukazatele").
Preťažovanie metód je často krat matúce. Myslím, že je to svojim spôsobom výhoda Valy prameniaca s obmedzeni GObject type systemu. Rovnako aj pomenované konštruktory vnímam pozitívne z hľadiska prehľadnosti kódu. Automatická správa pamäte sa tiež občas môže hodiť.
Vala je "preprocesor" pro C/GObjects, tj. při kompilaci jsou ze zdrojových kódů Vala generovány zdrojové kódy C, které jsou následovně zkompilovány do binární podoby. Podobný jednodušší nástroj je například GOB.
Rychlost se tedy řídí rychlostí programů v C/GObjects a v tom je napsáno GTK+.
Zajimalo by mne, jaky je nazor ctenaru roota na pouzivani cestiny v nazvech promennych, funkci, atd. ve zdrojovych kodech, jako je tomu v tomto pripade.
Ja jsem zasadne proti a to i v pripade ukazkovych kodu studentum, nebo jako ukazka v clancich - dava to zacinajicim programatorum programatorum pocit, ze je to v poradku a buduji si tak hned od zacatku spatne navyky.
O cem mluvim vi asi kazdy, kdo nekdy musel editovat zdrojaky s komentari a nazvy promennych ci funkci v italstine, nebo rustine :).
Tak zacinajici programatory by se melo vest, k tomu aby pouzivaly anglictinu. U prikladi, ale muzou byt ceske nazvy k dobru. Kdyz to clovek vidi poprve a vidi cesky nazev je mu hned jasne, ze je to promenna ci vlastni funkce.
Pokud si nekdo pise program, ktery nikde nepublikuje a nebo je to jen neco maleho bezvyznamneho, tak at si to pojmenovava klidne v cinstine. Ale pokud je to vetsi projekt s dokumentaci a nejakym potencialem, tak by mel pouzivat cestinu.
Ja osobne vitam priklady, kde je pouzita cestina, ale zase se pak snazim psat vsechno v anglictine.
* Prakticke hledisko: Mam vypracovany navyk na obvykle anglicke vyrazy. Takze, kdyz moje oci vidi nazev funkce/metody "SetFileName", mozek okamzite vyhodnoti, ze funkce nastavuje jmeno souboru, aniz bych musel slovo cist. Zato, kdyz oko zahledne "NastavJmenoSouboru", musim si ten nazev nejdriv precist a pak se zamyslet, co vlastne dela. Tudiz, ackoli jsem cech, v "ceskem" zdrojaku se orientuji vyrazne pomaleji. Podobne tomu je i treba u FireFoxu. Kdyz sednu k anglickemu, a mam v nastaveni neco zmenit, okamzite koukam na "Preference". Ale kdyz jsem u pocesteneho, musim si to vsechno cist a hledat.
* Osobni nazor: cesky muze psat zdrojak jen uplnej tupec. Zdrojaku rozumi 0.0002% lidi na svete, kdo je zvyklej (jako ja) na anglictinu se v tom neorientuje, mix cestiny a anglictiny (klicova sova pocestena nejsou) pusobi komicky. A pro koho vlastne takovej zdrojak je urcenej? Pro prvnacky co se uci programovet? Tak tam to sotva, protoze gtkmm. Pro skutecne programatory? Tak to uz teprv ne, protoze opravdovemu programatorovi anglicnina nevadi a spis ji vita. Tak pro koho tedy?
Raději česky nežli čanglicky. Bohužel - úroveň angličtiny je u většiny lidí, kteří si o sobě myslí, že anglicky umějí, velice tristní - obzvláště, mají-li ji použít aktivně. Někdy je pak dost těžké dešifrovat, co dotyčný myslel, případný čanglický komentář to celé spíše ještě více zatemní.
Já jsem naopak PRO české názvy proměnných a funkcí v ukázkových příkladech - krásně to totiž odlišuje jazykově i to, co je knihovní od toho, co definuje uživatel.
P.S.: Když někoho, jehož rodným jazykem je čeština, dokáže rozhodit ruština - chápu, může to při práci trochu obtěžovat, ale programování by se měli ujímat jen lidé, jejichž intelekt je na takové úrovni, aby je zrovna toto rozhodit nemohlo. Ale aspoň jste mi dal tip na jeden z dalších testů schopností programátora. :-)
Naštěstí (doufám) se zkoušení programování nevěnujete a přenecháváte to lidem, kteří programování rozumějí. ;-) "Experti", kterým dokáže zamotat hlavu komentář nebo název proměnné v jejich rodném jazyce, beztak nadělají více škody než užitku a vzkázal bych jim ono cimrmanovské "věnujte se čemukoli jinému, jen ne programování!" :-)
Něco jiného je samozřejmě případ, kdy nějakou věc vyvíjí více lidí. Pak je to ovšem otázka domluvy - u Siemense se například komentáře psaly německy a proměnné, funkce apod. musely mít anglické názvy. Osobně na tom nevidím nic špatného.
jen na okraj, ono zname "Venujte se praci jakekoli, ale jine", nezvolal nebo nenapsal Cimrman, ale napsal to Ladislav Stroupeznicky pri obdrzeni Cimrmanova rukopisu.
A k tematu, me tedy osobne cestina v kodu prijde jako docela rusiva uz kvuli ohybani/sklonovani slov. Osobne jsem se od chvil, kdy jsem se zacinal ucit programovat, coz mozna z perspektivy jinych tu na foru neni az tak davno, snazil promene, fce, struktury, typy atd. pojmenovavat anglicky. Samozrejme, uroven toho byla poplatna znalostem a slovni zasobe v te dobe, nicmene jako navyk to neni spatne a v te dobe taky muj kod neprekrocil hranice meho disku.
takze, kdyz pominu pro me rusivy efekt cestiny v kodu, je tu dalsi vychytavka: Madarska notace. V pripade jejiho spojeni s cestinou si ten kod radsi ani nepredstavuju, protoze bych se asi musel jit prebalit.
Sice chapu, ze ten kdo prave absolvuje svoje prvni krucky ve svete programovani je asi vdecnejsi za slovo ceske nezli anglicke, ale jde o navyk, ktery se podle me casem vyplati. Jen pri praci v tymu je treba tyto navyky nejak sladit, aby nevznikkl jeste vetsi gulas.
Jinak si lae myslim ze to dost zjednodusi praci a ja uz psal nekdo nahore, vidim anglicky slovo a vidim hned vyznam, u cestiny musim premyslet, coz sice lze, ale trochju to zdrzuje a obtezuje tok myslenek.
Takze zcela jasne pro anglictinu v kodu.
Myšleno samozřejmě v nadsázce. Urputná snaha co možná maximálně lokalizovat "Hello world" mě zaujala natolik, že jsem se o článek přestal okamžitě zajímat a s pousmáním jen nahlédl do diskuze ;-)
Bohužel toto je jedna těch mnoha praktických věcí, kterou se na škole obvykle nenaučíte. Přitom v praxi vás čeká hlavně programování v týmu, kde rozhodně oceníte, že nemusíte louskat komentáře př. z japonštiny ;-)
Mnohem více mi to ale vadí v odborných publikacích (př. od Grady), kde se právě často snaží překládat kde co a většinou špatně, takže raději sáhnu po anglickém originálu.
PS: A vsadil bych se, že firemní politika Siemensu, angličtinu v komentářích nezakazuje :)
Pokud se jedná o program nebo článek, který nikdy nepřekročí hranice ČR, pak je mi to upřímně jedno. Překousl jsem i proměnné "máslo" a "sádlo". Ovšem pokud má dílo ambice překročit hranice republiky, pak jednoznačně angličtinu. A v dnešní době internetu má tyhle ambice prakticky jakýkoliv kousek SW. A dvojnásob to platí u free software, kde použití češtiny už zavání nacionalismem a pokrytectvím ("jen ať se amíci učej česky, bude se jim to hodit"). V případě tohohle článku je to podle mně jedno, protože když už je článek česky, tak ho asi nebude číst mnoho cizinců. Akorát se připojuji ke kritice, že to některé čtenáře může svádět k domění, že čeština v názvech proměnných a funkcí je normální. No, není.
promennne sadlo a maslo? proboha na co to byl program?
pojmenovavani promennych jmeny, ktere nesouvisi s obsahem je taky dobra sranda. jednou jsem videl, ze si clovek (v projektu na kterem delalo vic lidi) vytvoril svou promennou pojmenovanou ,,pavel'' a pritom se jmenoval ,,mirek''.
Je potřeba se domluvit na konvencích - když píši pro PostgreSQL, tak automaticky vše píši v angličtině - jenomže, vše co napíši po mě zkontrolují lidi, pro které je angličtina rodný jazyk. Když píši - upravuji zdejší aplikaci - která používá identifikátory a komentáře v češtině, tak používám identifikátory a komentáře v češtině.
Např. u komentářů je zásadní umět se vyjadřovat v tom či onom jazyku. Jinak máte komentáře sic v angl. ale jsou to komentáře typu proměnná je proměnná a cyklus je cyklus. Pokud editujete aplikaci která obsahuje komentáře nebo identifikárory v jazyce, kterému nerozumíte, tak je něco špatně.
V případě výuky programování jsou věci 100x důležitější než zápis komentáře v angl. nebo zápis identifikátoru. Navíc mateřský jazyk umožňujě izolovat knihovní identifikátory a funkce - a student se může soustředit na podstatné věci - ne všichni dokonale ovládají angličtinu a také jen minimum studentů programování budou psát aplikace v mezinárodních firmách. A každá firma má pak vlastní konvence, které je nutné respektovat - např. německý jazyk.
Takže s Vámi rozhodně nesouhlasím.
Já jsem pro anglické komentáře (a zejména identifikátory) z několika důvodů:
1. My dva jsme zhruba stejně staří a naše generace se ještě ve škole začínala učit rusky a angličtina nebyla samozřejmostí. Dnešní studenti začali chodit do školy až po plyšáku a neexistuje, zejména v oboru IT, žádná omluva, když student neumí anglicky na slušné úrovni.
2. Já pracuji ve firmě, ve které všichni vývojáři umí česky. Když jsme ale dělali nábor nových lidí, nevylučovali jsme a priori ani cizince (Slováky mezi cizince tak úplně nepočítám, s nimi není problém žádný). Pokud firma nesídlí v horské vísce, může se tedy "internacionalizovat" v zásadě kdykoliv. Ať už jde o doplnění vlastních řad nebo o externí výpomoc, je škoda uzavřít si ty dveře jenom proto, že se někdo rozhodl psát kód v češtině.
3. Rozumím obavám, že některé anglické komentáře nejsou tak úplně gramaticky "košer". Vím o svých komentářích i identifikátorech, které úplně správné nebyly. Není ale pro případné cizince lepší, když si přečte komentář s nesprávným gramatickým tvarem, který ale přesto pochopí? Ten příklad s komentáři "proměnná je proměnná" a "cyklus je cyklus" mi přijde dost extrémní.
4. Vždycky si vzpomenu na jeden kurs angličtiny, na který jsem docházel a tam jeden spolužák mluvil sice mizerně a měl horší slovní zásobu než já, přesto se ale dokázal lépe "vymáčknout", zatímco já jsem se ostýchal, koktal a přemýšlel, jak to co nejlépe říct, až jsem se do toho často zamotal. Z toho jsem si odnesl cenný poznatek: jazyk se učíme hlavně tím, že ho používáme. Třeba blbě, nesprávně, ale to se poddá. U nás v práci také když kolega napíše špatný komentář, vrátím mu patch zpátky a vysvětlím, co, jak a proč je špatně (nebo zase někdo jiný třeba mně). Příště je to lepší a když ne příště, tak přespříště.
Záleží na konvencích - rozhodně nebudu někoho vyhazovat od zkoušky, když mi napíše komentáře v češtině a zrovna tak raději uvidím čitelný a výstižný komentář v češtině než blábol v nějaké simple developer english. Na jednu stranu je anglicky komentovaný kód přístupnější cizincům, na druhou stranu je mnohem větší šance, že jej našinec nepochopí a z toho důvodu zavleče chybu. Je hromada proprietárních jednoúčelových kódu, kde angličtina nemá žádný smysl - a důležitější je kvalitní dokumentace.
Jinak k výuce - sám osobně nemám rád zanášení češtiny angličtinou - i když to sám dělám, takže bych si připadal hloupě - kdybych při výuce v českém jazyce používal komentáře nebo identifikátory v angličtině. Ta angličtina je přeci jen nesklonná a pak z člověka lezou perly za které se stydím. Rozhodně by kvalitní programátor neměl mít problém se přizpůsobit požadavkům a konvencím ve firmě. Přeci nejde jen o jazyk - ale taky o konvence, notace, doporučené prefixy, sufixy a nejde jenom o programování, ale také o určitou kulturu.
No já jsem docela jazykový purista a v běžné řeči se snažím používat pokud možno české výrazy. Co se týče vyučování na školách, tam na to nemám ostrý názor - podle mě to lze pojmout různě, počínaje výukou v angličtině a konče českými identifikátory a nevadí to. Slyšel jsem ale například, že Rudolf Pecinovský ve svých kursech používá dokonce identifikátory s diakritikou. To už mi přijde poněkud přehnané, ale dobrá, Java to snese.
Ve firemním prostředí jde samozřejmě o víc, než jenom o jazyk, ta poznámka se jmennými konvencemi je trefná. A je pravda i to, že občas je to s angličtinou boj; já to v extrémních případech řeším tak, že si od kolegů vyžádám zpětný překlad z angličtiny do češtiny, když mám pocit, že věta nedává smysl a vede to k přepsání do rozumné podoby. Navíc jsem toho názoru, že komentář je jenom třešinka na dortu. Kód by v ideálním případě měl být víceméně samodokumentující. Pokud je k pochopení nutné moc přemýšlet, v drtivé většině případů je kód napsán špatně.
To je právě to, co na co narážím - názornost, výstižnost komentáře. Určitě si budeme rozumět v tom, že komentář nemá primárně komentovat, co kód dělá - pokud se nejedná o složitější algoritmus, ale proč tam ten kód je. Poslední poznámka - ne v každé firmě mají pokročilé angličtináře - hůř většinou kód neprochází ani revizí.
Já bych použil BASIC, protože v něm se programuje nejrychleji a navíc skvěle hlídá chyby, a kde by výkonem nestačil, vložila by se rutina ve strojovém kódu :-D Mimochodem, ve 21. století by se už dávno neměl všeobecně používat spalovací motor ze století devatenáctého...
Nebo je to všechno úplně jinak?
<quote>Nebo je to všechno úplně jinak?</quote>
Anno je to jinak, protože to srovnání vůbec nesedí. Spíš bych to viděl tak, že chci vykopat jámu(napsat program). Buď můžu použít lopatu(C/C++), protože se to tak dělalo vždycky. Nebo můžu použít bagr(moderní jazyky). Výsledek bude skoro stejný s rozdílným úsilím akorát lopata nadělá menší nepořádek.
Ono to nebylo ani tak srovnání, jako spíš připomenutí že před ani ne třiceti lety bylo všechno jinak (například flamewary Fortran 77 versus FORTRAN IV), takže za dalších dvacet, třicet let uvidíme v nějaké diskuzi názor, že dneska už přece v tom směšném a zastaralém Pythonu přece nemůže nikdo nic vážného dělat :-P Přestože v něm desítky let programoval kdekdo a kdeco na několika různých platformách.
Místo lopaty a bagru bych do toho přirovnání použil spíš použil bagr a důlní rypadlo, řekl bych že v tomhle případě by na C-lopatu byla potřeba vyšší kvalifikace než na bagr, což poněkud neodpovídá realitě. Nakonec by stejně mohl přijít borec, vyvrtat tam ručním vrtákem malou dírku, do ní spustit patronu Dynamitu na zápalné šňůře a mít vykopáno v cuku letu ;-)
Proč nepoužít wWwidgets? To je přeci jenom o něco více multiplatformní...
třeba GTK na takovém MAC OS X...
ad vala http://code.google.com/p/vala-benchmarks/wiki/BenchResults
Dobrý den,
programování beru pouze jako koníček a po přečtení této diskuse jsem poněkud zmatený. Ovládám dle mého poměrně přijatelně C++, ovšem co jsem tady četl, tento jazyk již není tak dobrý jako byl dříve. Programuji si pouze utilitky menšího rozsahu (například QuickRun, apod.). Koukal jsem na python, ovšem venku je již verze 3.1.2 a PyGTK podporuje verzi 2.6, což mi přijde jako známka zpomaleného vývoje (přijde mi to tak, nevím jestli je na tom kapka pravdy). Takže bych se rád zeptal - jaký jazyk (a k němu i nějaký GUI toolkit) by na relaxační programování tohoto rozsahu byl dle vás nejlepší?
Předem děkuji za odpovědi.
Nechtěně jsem příspěvek odklepl předčasně, takže tady je pokračování. Byla-li poznámka o C++ myšlena tak, že jsou dnes už v mnohých ohledech lepší alternativy (to neznamená, že C++ není v něčem optimální), je to samozřejmě pravda.
Co se týče Pythonu, verze 2.x a 3.x jsou de facto dva různé jazyky, resp. dva dialekty jednoho jazyka. Verzi 3.x dosud prakticky nikdo nepoužívá, takže v případě zájmu doporučuji zatím používat klidně verzi 2.6, postupně přejít na 2.7 (podle podpory v distribucích atd.), která je určitým lehkým přechodem k verzi 3.x a na verzi 3 přejít až v době, kdy pro ni budou připravené důležité knihovny a frameworky. To znamená nejdříve někdy koncem příštího roku. Výhodou Pythonu je, že má poměrně dobře strukturované standardní knihovny a spoustu úloh lze v tomto jazyce vyřešit rychle, snadno a poměrně elegantně. Podobné jazyky jsou v tomto ohledu například Ruby (používané méně, ale má některé zajímavé vlastnosti, osobně se mi líbí více Python, ale ono je to asi srovnatelné) nebo Perl (více knihoven, ale jazyk je drsnější a méně intuitivní. V případě zájmu o některý z těchto jazyků lze kromě Gtk+ použít např. i Qt - PyQt4 je např. velice vyzrálá platforma a mám s ní dobré zkušenosti v komerčních multiplatformních aplikacích (Windows, Linux i MacOS X).
Zde někým doporučovaná Vala je podle mě trochu slepá ulička, v podstatě se asi nerozšíří za hranice Gtk+/Gnome. Je ale podobná C++, C#, Javě atd., takže koncepty, které používá (kromě explicitních názvů konstruktorů, zřejmě převzatých z Turbo Pascalu), lze využít v dalších jazycích. Podobné minoritní jazyky jsou např. D nebo Go.
No a pak je možnost zaměřit se na některou "velkou platformu" - JVM (zde bych velice důrazně doporučil jazyk Scala, ale jsou i další zajímavé alternativy, jako je Groovy nebo Clojure, hlavní jazyk je zde samozřejmě Java) nebo .NET/Mono, kde je hlavním jazykem C#, ale lze použít např. Boo, které vychází z Pythonu nebo F#, které vychází z Objective Caml.
Existují i další možnosti jako Haskell (hardcore), LISP/Scheme (hardcore), Erlang (hardcore), Free Pascal, Smalltalk, nějaké varianty Basicu a spousta dalších, ale to bych nechal raději stranou.
Podle mě lze z hlediska "relaxačního programování" pojmout odpověď dvěma způsoby:
a) Chci naprogramovat nějaké utilitky a nemám zájem se moc šťourat v teorii a zacházet moc daleko. Tady bych osobně doporučil Python, Ruby nebo možná i zůstat u toho C++.
b) Mám zájem učit se nové věci a prohlubovat pomalu svoje znalosti. V současné době neznám jazyk, který bych mohl více doporučit nadšeným experimentátorům, než je Scala 2.8+. Kolem tohoto jazyka se děje spousta zajímavých věcí, programy jsou +- stejně rychlé jako ty v Javě (a všechny knihovny určené pro Javu jsou automaticky dostupné i ve Scale), má interaktivní prostředí, existují už nějaké pluginy do IDE (Eclipse, Netbeans, IDEA), velice dobrý vývojový nástroj SBT, webový framework srovnatelný s RoR nebo Djangem (Lift, nyní už ve verzi 2) a existují už velké úspěšné projekty v tomto jazyce (Twitter, LinkedIn a pár dalších), velice slibně se vyvíjí možnosti programování distribuovaných aplikací (Akka)... Programování GUI aplikací není ale nativní (psané na míru OS), nejčastěji se používá javovská knihovna Swing.