Hlavní navigace

Názor ke článku Proč je Java za zenitem od Miloslav Ponkrác - 1) Clang je IMHO kompilátor, který je určen...

  • 24. 3. 2014 13:43

    Miloslav Ponkrác (neregistrovaný)

    1) Clang je IMHO kompilátor, který je určen k vyhynutí. Jeho architektura mu dává jistou stopku v možnostech optimalizace, která zatím moc nevadí. Ale časem se stane svěrací kazajkou. Pak se bude několik let přešlapovat, až se clang opustí. I když desetiletí s námi clang ještě bude.

    2) Problém Javy je hlavně v jeho nejasnosti, kdo ho udržuje, kdo vydává standardy Javy, tedy kdo je standardizátor, stejně jako párva a patenty. Souhlasím naprosto s tím, že Java se stala druhým Cobolem, tedy jazykem, který bude mít velký význam ani ne tak kvůli kvalitě jazyka, ale kvůli nutnosti udržovat již existujícíc projekty. Jinak se Java zakopala na své nice, přičemž z řady jiných musela tvrdě ustoupit pro nekvalit (jazyka nebo programátorů, to je fuk).

    3) C++ skutečně renesanci prožívá. Jeho velkým plusem je, že nikdo na nikoho nehrozí patenty a licencemi, když C++ používáte či umplementujete. Je jasné, kdo ho standardizuje, jsou jasné standardy. Navíc není konkurenční jazyk v jeho nice – tedy maximálně efektivní výstupní binárka plus efektivní vývoj.

    4) V C++ se dá programovat stjeně efektivně a rychle jako v Javě, ObjectiveC či jiném vyšším jazyku. Chce to ale větší zkušenosti. C++ je jazyk velmi logický, v zásadě se stačí naučit několik filozofických pravidel, a ty C++ realizuje po celém jazyce bez výjimek.

    5) ARM procesor má špatnou instrukční sadu, která se hrozně špatně optimalizuje. V zásadě kvalita optimalizace závisí do značné míry na programu a problému, stejně jako na rozsahu. Někdy zvítězí to, jindy ono za kompilátor. Snaha za každou cenu udržel fixní a malou velikost strojových instrukcí vede k tomu, že ARM nedokáže ani přímo uložit jakoukoli konstantu do registru, skoky a adresy v paměti o více jak pár kilobajtů už chtějí instrukce navíc, atd. Extrémně důležité je u ARMu zvolit správnou volací konvenci, a dodnes se s tím experimentuje. Jenom Linux a gcc má několik verzí volacích konvencí, které si můžete zkompilovat.

    6) ObjectiveC je jazyk, který je výsledkem boje o objektové rozšíření C. Na jedné straně bylo C++ kopírující Simulu, na druhé straně ObjectiveC kopírující Smalltalk. Problém s ObjectiveC je licence a Apple. Jazyk sám je až druhořadý, i když těžko mít rád ObjectiveC, protože Smalltalk je Smalltalk, doporučuji si ho zkusit.

    7) Volba programovacího jazyka závisí nejenom na problému, ale též na vývoji. Pokud jste dobrý vývojář (či skupina dobrých vývojářů) a děláte one man show, můžete zvolit kvalitní, byť náročnější jazyk. Pokud jste velký tým a potřebujete napsat nějaký podnikový systém, pak musíte dbát i na láci, tedy zvolit jazyky méně schopné pro blbé, jako třeba tu Javu. Lidský faktor je důležitější při volbě jazyka, než technický.

    8) V zásadě všechny běžné programy, které se dnes dělají v mainstreamu nejsou nic jiného, než práce pro cvičenou opici. Proto jde spíše o ekonomiku, které je podřízeno vše, než o kvalitu a znalosti lidí. Naučit se programovat na úrovni pro mainstream programování zvládne každý, kdo není mentálně retardovaný. Není to nic složitého, ani náročného. Protože bouchání formulářů, volání knihoven, psaní dotazů do databáze a sem tam otestovat hodnotu, zda je v platném rozsahu – to se opravdu naučí i cvičený šimpanz s třetinou mozku. Jazyky se pak volí podle toho.

    Miloslav Ponkrác