OT - Prosim o radu s C

Jindrich Kubec kubecj@asw.cz
Úterý Srpen 29 21:17:56 CEST 2006


At 20:54 29.8.2006, Jiri Foldyna wrote:
>Vidim, ze jste Pascalem nepoliben :-)

No este ze tak ;)

>Zdrojak, ktery jste uvedl vyse, implementuje range-check, ktery se v Pascalu
>da direktivou kompilatoru ve zdrojaku prubezne zapinat/vypinat. Krome toho
>muzete samozrejme pouzit globalni nastaveni pro range-check. Jediny rozdil
>je v tom, ze misto Vaseho else pouzijete osetreni Exception. A samozrejme,
>uplne stejny postup muzete pouzit i v Pascalu, s tim, ze si range-check
>vypnete.

Cela moje diskuse s p. Waclawkem vysla z toho, ze jsem prohlasil, ze je 
odpudiva pascalstina, kdyz je delka pole soucasti typu, na coz mi bylo 
odporovano, ze kvuli tomu, ze to C nehlida, ze je tolik buffer overrunu. A 
pak to jelo. Tj. bavim se celou dobu o mojem tvrzeni, ze automaticky range 
check na poli je nesmysl a zbytecnost po pojidace kolacu. ;-)

>Nikoliv, v tomto konkretnim priklade ne (samozrejme pokud je definovana
>konstanta rozumna_hodnota). Ale napr. pokud volate externi proceduru/funkci,
>kde limity indexu neznate (neboli neznate konstantu rozumna_hodnota), je
>nanejvys vhodne osetreni vyjimky pouzit. Stejne tak v pripade dynamickych
>poli nebo pointerovych operaci nad cizimi buffery.

Mno ale to se dostavame nekam uplne jinam. Tady se opravdu muzeme dostat k 
tomu, co je 'krasna teorie' - tj. dostanu objekt a ten se postara, popr. 
dostanu objekt, ktery se nepostara, ale dostanu staraci funkce nebo si je 
napisu podle spravne dokumentace. Nebo praxe - napsalo to prase a ja se 
kvuli tomu muzu zblaznit.

Doufam, ze se muzeme shodnout aspon na tom, ze v okamziku, kdy pouziju 
'spatny' pointer, tak uz je pozde cokoli resit - exception me nezachrani.

Takze chyby preteceni bufferu apod. me netrapi. A moje oblibene - 
nedostatecna dokumentace a 'vecne' smycky, tak tam mi zadny runtime 
tentononc nepomuzou.


Jindroush (kubecj@avast.com)
http://www.kostky.org - Pro fany stavebnic LEGO.




Další informace o konferenci Hw-list