Jojo, co bychom si bez pánů K&R počali....
C je geniální nástroj ve kterém se dá dělat vše :-). Dost nízko na to, aby byl člověk blízko u stroje a dost vysoko na to, aby to bylo pohodlné a snadno portovatelné. Nic neodpouští a proto jej frikulíni nemají rádi.
Když před pár lety Dennis Ritchie umřel, skoro nikdo si toho nevšiml(byl zrovna v kurzu jakýsi užvaněný kšeftař s ovocem). Přitom jeho význam byl naprosto zásadní. Divný svět.
Bezpečnostním problémům vděčíme programátorům, ne C jako nástroji. Vysloveně nějaká bezpečnostní zrada tam není. Velká část chyb byla způsobena nedomyšlenou prací se stringy a buffery. Laik si to může představit takto :-)
https://www.youtube.com/watch?v=Hwin1V4kLb8
Jestlize je predpokladana chybovost programatoru nejaka v jazyce A, jina v jazyce B a jeste jina v jazyce C a jde nam o snizeni chybovosti, nepomuze nam lamentovat nad tim, ze jsou programatori jelita, ale pouze volba jazyka, ktery povede k mensim chybam. Samozrejme, jeste muzeme najmout lepsi programatory. Pokud jsou. Je to podobne jako v jinych oborech, velka cast bezpecnostnich opatreni je zavadeno proto, ze lidi delaji chyby.
... jo, kde ja to jen ... ze prej java/c#/... nemuzou mit memoryleak ... protoze ono si to prej vsechno samo ... A proc by sme kontrolovali jestli do toho intu leze int, sak ono si to nejak samo, a kdyztak to prej vyhodi exepsnu ...
Prodobny mrvilove v Ccku chvala bohu nezvladnou ani helo world. Zhruti se jim to uz pri kompilaci.
Tvrdil tu někdo, že Java nemůže mít memoryleak? (Nutno ovšem říct, že možností, jak ho vyrobit je o dost méně než v C).
Java úplně stejně jako C požaduje u primitivních typů downcasty, takže by mne zajímalo, jaký konkrétní případ máš na mysli? Co přesně se ti v C zhroutí už při kompilaci a v Javě projde?
Zase to obracíš. Tvrdil jsi, že v sofistikovanějším jazyce vznikají sofistikovanější chyby a nepřímo, že vyšší jazyky pustí to, co C odmítne už při kompilaci.
Bohužel nebo bohudík jsem v C a C++ nějakou dobu dělal a vím, co všechno dokážou borci napsat. A to jsem zcela jistě nepracoval s nejhoršími kusy, které kdy kdo pustil k programování v těchto jazycích a to Hello World uměli napsat.
Netusim, co si takovy j predstavuje pod sofistikovanejsim jazykem, ale urcite neplati, ze nizkourovnovej jazyk je bezpecnejsi v tom, ze prasarnu neprelozi. Ocividne
- C prelozi spoustu prasaren
- naopak vysokourovnove jazyky (rekneme Haskell nebo jeste dal Agda) spoustu prasaren odhali
(Netvrdim, ze nutne kazdy vysokourovnovy jazyk chrani pred vsemi prasarnami, jen ze to tvoje tvrzeni je mimo. Z velke casti je to spis otazka typoveho systemu a ne "vysokourovnovosti")
Pamet je asi nejbolavejsi misto, ale ne jedine. Ocividne spatne je navrzeny switch, diky goto jsme se dockali gotofailu v Apple SSL, spatne se v C navrhuji API s jednoduchou obsluhou chyb...
Samozrejme, ze vsechno to jsou veci, kterym se v principu muzes postavit, byt opatrny a napsat spravny kod. Prakticky se ukazuje, ze zbytecne chyby proklouznou i schopnym vyvojarum v jinak dost opatrnych projektech. (Casto je to napoprve napsane spravne, ale casem to nekdo rozbije, protoze se programatorum nedari udrzet v hlave kontext.)
moje slova, moje slova.
Toto jsem si dal na fejsbuk kdysi:
http://www.maniacworld.com/steve-jobs-vs-dennis-ritchie.html
Všeříkající anglický komentář.