Hlavní navigace

Názor ke článku Kam kráčaš Borland? od Viky - C má pro začátečníka jednu obrovskou nevýhodu: nebrání...

  • 9. 6. 2008 11:17

    Viky (neregistrovaný)

    C má pro začátečníka jednu obrovskou nevýhodu: nebrání mu programovat prasecky. Vlastnosti, které činí systémové programování velmi snadným a přímočarým, jsou pro začátečníka naprostou pohromou. U Céčka je to samozřejmě velmi povrchní typová kontrola na místě prvním a poněkud volnější syntaxe na místě druhém. C je pro začátečníka zkrátka příliš "technické".
    Pascal naproti tomu přímo nutí programátora řádně si rozmyslet strukturu dat a jejich typů, přičemž poněkud ukecanější, ale jasná (až na pár notoricky známých slabších míst) a někdy poněkud omezující syntaxe, která naprosto abstrahuje od technických, implementačních detailů jazyka, není pro začátečníka vůbec naškodu.

    V Céčku musí mít začátečník na paměti věci, které jsou vlastně obvykle zbytečné pro implementaci algoritmu - ukazatele (při práci s poli, řetězci, při předávání argumentů), sice flexibilní, avšak pro začátečníka poněkud komplikované I/O, použití maker (de facto dalšího jazyka uvnitř jazyka, ovšem jehož logika oproti např. lispovským makrům snadno svede k chybám)... Chyba se v C hledá mnohem hůře, než v Pascalu, obvykle se projevuje jinde, než kde je její původ a často je její výskyt spíše stochastický za běhu.
    U LISPu (předpokládám, že u Scheme to musí ve větší či menší míře platit též) je zase začátečník nucen nejdříve vstřebat logiku seznamů, které opět nejsou na první pohled zrovna nejpřirozenější věcí k popisu algoritmů a dat (na druhý pohled platí pravý opak, ale druhý pohled není pohledem začátečníka. :-)
    C++ bych začátečníkům přímo zakazoval, neboť je to nástroj pro velmi zkušené programátory, kteří jsou zběhlí jak ve strukturovaném, tak v objektovém programování, protože tento jazyk za ně neohlídá vůbec nic a jeho syntaxe postupně zdegenerovala v poměrně značnou zhůvěřilost.
    Python, C# a Javu neznám tak, abych mohl posuzovat. Nicméně Pascal je léty prověřený a vyrostly na něm dvě generace dobrých programátorů. Nemohu se zbavit pocitu, že generace, vyrůstající na těch třech jmenovaných, má dost velké mezery a z většiny z nich se dobrý programátor nestane nikdy, nebo až za velmi dlouho. Ale nechci přeceňovat vliv jazyka, je to přeci jen nástroj. Ovšem kdo ví, jestli odklon od "poctivého" Pascalu není příznakem dnešní doby, kdy se každý floutek cítí jako největší mistr světa a "takovýhle nesmysly a prudění přece k ničemu nepotřebuje a nebude s nimi ztrácet čas".