5. září, 2013
Z mého hlediska programátora je jednoznačně lepší jazyk či platforma Java. Protože platforma Java je promyšlenější, mnohem lépe zdokumentovaná, open-source, a i knihovny třetích stran v jazyce Java jsou zpravidla open-source.
Na jazyku Java mi vadí jen jedna věc, a sice to, že už nepatří firmě Sun, ale firmě Oracle.
Na jazyce C# (C Sharp, sí šárp) mi nejvíc vadí to, že jsou v něm lokalizovány věci, které by se správně lokalizovat neměly, viz následující seznam.
-
Když se nějaké číslo převede na řetězec, tak je v C# výsledek zpravidla lokalizovaný. Takže záleží na nastavení v operačním systému, jestli se použije desetinná tečka nebo desetinná čárka. V Javě je výsledek lokalizovaný jen, když to programátor požaduje, ale v C# musí člověk psát hodně dodatečného kódu, když chce, aby se číslo vždy konvertovalo na řetězec stejným způsobem. Hraje to roli zejména, když ta čísla převedená na řetězec někam ukládáte nebo odesíláte.
-
Při XML serializaci a deserializaci nějakého objektu se rovněž používá lokalizace čísel. Takže když vytvoříte a uložíte nějaký XML dokument, a potom v nastavení operačního systému změníte desetinný oddělovač, tak už ten XML dokument nepůjde načíst, protože v číselných hodnotách bude neočekávaný oddělovač desetinných míst.
-
V C-Sharpu je lokalizovaná dokonce i interní číselná reprezentace aktuálního času. Takže čas v C# není absolutní, je relativní k časové zóně, kterou operační systém zrovna používá. Takže když ten čas uložíte někam do souboru, potom změníte časovou zónu, a ten čas zase načtete, tak je potom ten načtený čas o hodinu až 23 hodin chybný.
-
Veškeré chybové hlášky v jazyce C# jsou přeložené do jazyka operačního systému. Takže například místo obvyklé hlášky "Assertion Failed" se zobrazí "Chyba při vynucení přístupu". Také jsem si kdysi marně lámal hlavu nad tím, co to znamená. Naštěstí je tu online služba Unlocalize.com.
Ještě hůř to Microsoft zařídil v Excelu. Tam jsou lokalizované dokonce i identifikátory funkcí, což je extrém.
Zatímco Java používá formát formátovacího řetězce převzaný z jazyka C (viz String.format), tak C# používá svůj vlastní formát (viz String.Format). A na něm mi vadí to, že člověk musí pro každý parametr zadávat index.
Zatímco Java bez problémů funguje na operačních systémech Windows, Mac OS X, Linux, a Solaris, tak C# se používá jen ve Windows.
U desktopových programů pro Windows je C# asi používanější. Na serveru ale vítězí Java. Vím, že některé velké české firmy používající na serveru technologie Microsoftu přešly na Javu.