No, před rokem jsem ve škole ukazoval učiteli při zkoušce program v C++. Mělo se zadávat číslo a výsledek byla nějaká funkca. Najednou přišel spolužák, ukaž já to vyzkouším. Začal tam psát nějaký znaky, a já na něj, že tam má být číslo... Nějak to tam nastrkal a program se zacykloval (asi nějak šikovně přepsal návratovou adresu).
Moje otázka zní, jak se proti tomu jednoduše bránit. Například chci číslo, 5 znaků, jak to udělat (nejjednodušeji).
Jo, taková maličkost, proč je to C++ tak děsně blbý? Vyšší programovací jazyky (Delphi, Pascal atd.) tyhle problémy vůbec nemaj... Maximálně spadne program, ale v C++ je každá prkotina přetečení zásobníku :-(
Nejsem si tak uplne jisty, ze slo zrovna o preteceni bufferu. Pokud jste pouzil klasicky 'cin' a to do nejakeho int/long, tak se neni cemu divit. Cteni selze a vsechna nasledujici take (tim padem se program vetsinou tvari, ze se zacyklil). Podobne je na tom ovsem aji scanf v C, takze si nevyberete. Ano, daji se testovat navratove hodnoty ... ale to je opruz (a nez tuto vetu nekdo napadne - daleko lepsi nez periodicke checkovani a'la errno jsou samozrejme vyjimky). Zlate vlastni funkce a nebo jine (inteligentni) jazyky :)
Asi jsem divny, ale v mych programech mi jeste zasobnik nikdy nepretekl. V C++ je mozne take programovat "bezpecne", ale je potreba vedet, na co si davat pozor. Pro zacatecnicke hrani si na programatora a vyuku programovani bych doporucoval Python. V C a C++ by asi nemeli lidi programovat, dokud se jazyk trosku nenauci. ;-)
No, me prijde, ze je nesmysl se ucit programovat v pythonu a pak prechazet na C++, kdyz maji uplne jinou syntaxi ;-).
Snad by bylo logictejsi na vyuku pouzit napr. Perl.
K te bezpecnosti, C++ je hodne zaludne, napr. ve statickem/dynamickem volani metod, nebo pretezovani operatoru. Je potreba vedet jak je implementovane to, co pouzivam a to je nejvetsi potiz. Kdyz programator pise neco vetsiho, problemum se stejne nevyhne.
Protoze me osobne bezpecnost velmi trapi, presunul jsem se k jave.
1. Perl bych pro vyuku programovani nedoporucil, protoze mi jako jazyk pripadne dost spatne navrzeny.
2. Pokud se pracuje v tymu, mela by se urcit jasna pravidla ohledne psani kodu, jeho dokumentace apod.
3. Je jasne, ze C/C++ psani bezpecneho kodu moc nenapomaha, ale at se nam to libi nebo ne, ma porad jeste sve opodstatneni a navic se v mnoha dalsich pripadech pouziva "ze zvyku". Proto si myslim, ze by bylo dobre na tento dvojclanek navazat nejakym delsim serialem. Autore, slysite, nechcete neco sepsat?