S puvodnim nazorem vicemene souhlasim a ano - uz jsem zkusil vicero jazyku. Kdysi davno na osmibitech jsem zacal s basicem, pres pascal se dostal k C a C++. Na skole jsme pricichnul k smalltalku, lispu a prologu. Ze zajmu jsem zkousel javu. Vetsinu sveho profesionalniho zivota jsem stravil s C++. Pote, co jsme si nejaky cas rochnil v kombinaci gcc + vim, tak jsem vyzkousel nekolik IDE (eclipse, anjuta, vide...) a pak dlouha leta travil nad C++ builderem a kylixem. Pres znacny odpor jsem byl v praci dotlacen do sveta MS k visual studiu a C#. Chvili jsem nadaval a nevidel na tom ani chlup dobry, po tydnu jsme prestal a po cca rocnim projektu v C# za pouziti VS2003 s resharperem jsme se vracel hodne nerad. Pozdeji jsme uz jen prechazel na vyssi verze VS a totalne propadl mezi MS fanatiky - aspon co se vyvojovych nastroju tyce. Ne ze bych nemel na co nadavat, ale kdyz to srovnam s cimkoliv jinym, co jsme zkusil a jeste obcas zkusim, tak jde o mimoradne dobre navrzeny jazyk a kvalitni prostredi. Co se tyce rychlosti - na zacatku jsem o tomto jazyce nic moc nevedel a veril, ze je to neustale interpretovani bytekodu. Napsal jsem si nekolik ruznych testu, kde melo jasne zvitezit C++. Typicky zvitezilo o nejaka 3%. Nejhorsi testy byly asi o 5% pomalejsi v C#. Co me ale tenkrat vydesilo, ze v pokusech, kde jsem intenzivne alokoval a dealokoval pamet, nebo kde jsem pouzival slozitejsi rekurzi, dokazalo o par procent zvitezit C#. Dneska, kdyz uz docela slusne znam slabiny tohoto jazyka, dokazu napsat priklady na prvni pohled ekvivalentnich kodu C# a C++, kde C++ zvitezi skoro o 10%. Ale taky dokazu napsat priklady spatne vymyslenych trid, kde diky nevypnutelne optimalizaci bude C# nekolikanasobne rychlejsi dokonce i bez ulozeni do GAC.
Samozrejme - dobre vymysleny a dobre napsany algoritmus bude vzdy rychlejsi a mene narocny na zdroje, pokud ho napiseme v asm, neznatelne horsi, kdyz bude v C, opet o trochu horsi, kdyz zacneme pouzivat C++ a jeho objekty, virtualni metody a o znatelny kus hure dopadnu, kdyz to zacnu psat v .NET. Jenze ta ztrata vykonu programu je v jednotkach procent a zisk na usetrenem case a tim i financich na vyvoj, je v desitkach procent. Je zapotrebi si vybirat spravne nastroje - pokud jde o RT system, tak pouzit neco s garbage collectorem proste nejde. Kdyz budu psat neco, co ma bezet na mnoha platformach, kde mi nejde v prvni rade o vykon, neni nad javu. Na vetsine aplikaci se ale neni treba ohlizet na to, jestli mam odezvu na stisk tlacitka milisekundu nebo dvacet. Ovsem koukam, jestli me vyvoj a zakaznika pak soft, bude stat o pulku vic, protoze se budu nimrat v optimalizacich, ktere nakonec nikdo neoceni. Ale C# a .NET nejsou nijak pomale - uz i pomerne narocna hra se s v C# napsat da, jak bylo jasne ukazano na projektu Quake II .NET. Vysledek je, co se tyce zatizeni CPU, prakticky stejny jako v pripade puvodni verze. Narostla pametova narocnost - o nekolik desitek MB, coz je sice dle meho nazoru hodne, ale da se.