Re: Jádro pudla (Cernobily svet) :-)
Ales Prochaska
prochaska@alsoft.cz
Neděle Březen 5 22:04:35 CET 2006
Tyhle kontrolni funkce se normalne pouzivaji jen pri ladeni, pak se
vypnou. Ale nemely by vadit ani v ostrem provozu (kde se ovsem
exception osetruje zapisem do logu a tise se doufa, ze si toho
zakaznik nevsimne driv nez dodavatel), protoze malokdy se narazi na
misto kde by to vadilo z hlediska rychlosti. Program je totiz ve
vetsine realnych pripadu bud s obrovskou rezervou dostatecne rychly,
ze unese jeste spoustu dalsich veci a nebo je naopak natolik pomaly,
ze se prislusna cast programu musi zgruntu predelat.
Jinak aby nedochazelo k mateni nezasvecenych: u Ady je tahle typova
kontrola jakasi drobna samozrejmost, jeji hlavni sila je v perfektne
propracovane synchronizaci tasku (threadu) a mezitaskove komunikaci a
v portabilite na urovni zdrojaku dotazene ad absurdum.
Ales Prochaska
> Zdravim,
> Z reakci Marka Pasky na c/c++, programators, OS, konfetách vim, co je jeho
> hoby a co je jeho studijni/pracovni zajem.
> Je to 100% informatik, ktery zije na velkých systémech, to dokazuje i veta,
> cituji:
> "Pro kontrolu celočíselných mezí existuje v současných procesorech speciální
> instrukce, takže režie s tím spojená se u reálných aplikací počítá na
> jednotky procent."
> Ocividne zapomina na 99% ostatich procesoru mimo domenu velkych
> procesoru:(((. Ale to jen takovy my lehky zhodnoceni, kampak Marek Paska by
> chtel Adu pouzit:).
> Jinak to jedine, co mi prislo zajimave neni moznost nadefinovat nove
> typy(C++ umi, pretizeni operatoru taky) a nechat se Adou privazat k posteli
> a vydat se do raje sadomaso:), ale explicitne vymezit rozsah typu.
> Tohle muze byt z bezpesnostniho hlediska opravdu velke plus, jenze na druhe
> strane to znamena, ze kazda operace s takovym typem musi po skonceni byt
> otestovana, zda nahadou nedoslo k přetečeni.
> Jasne, da se rict, ono se to ted stejne dela, jenze je propastny rozdil,
> jestli mam hranice datoveho typu dane binarni soustavou a tim padem testuji,
> jestli pretekl bit nebo a nebo tam mam meze jako cisla, ktera nelze testovat
> jednim bitem.
> Co tim myslim? :
> UINT16 0 - 65535
> Nula je OK, kdyz pretece 65535->65536 tak se mi nastavi carry v CPU a je to
> OK.
> UserTyp 0 - 32456
> A jsem v haji, test po kazde operaci, pokud chci testovat, zda doslo k
> preteceni musim resit jako rozdil hranice a hodnoty v takovem typu.
> Vetsina procesoru bude mit nutne rychlejsi praci s typem, jehoz meze jsou
> 2^k-1 respektive -2^k ...
> Tohle se asi tezko da udelat rychleji, prtoze musim dat procesoru radove
> vetsi mnozstvi informaci, aby tu typovou kontrolu program zpracoval, nez jen
> stare dobre testovani příznaku :(...
> S pozdravem,
> Marek Pavlu
> // -----Original Message-----
> // From: hw-list-bounces@list.hw.cz
> [mailto:hw-list-bounces@list.hw.cz] On
> // Behalf Of Ales Prochaska
> // Sent: Sunday, March 05, 2006 7:12 PM
> // To: hw-list@list.hw.cz
> // Subject: Re: Jádro pudla (Cernobily svet) :-)
> //
> // Uz zminovana Ada zadny "int" nema. Ma jen prostredky jak popsat
> // celociselny typ, napriklad
> // type int is range -32768..32767;
> // nebo jinak
> // type int is range -2**15 .. 2**15-1;
> // nebo
> // type int is digits 6;
> // jak je libo. A ted prekvapko:
> // var jablka is range -32768..32767;
> // var hrusky is range -32768..32767;
> // deklaruje dve _nekompatibilni_ promenne "jablka" a "hrusky". Ale
> // radeji se podivejte do clanku Marka Pasky
> // http://www.root.cz/clanky/bezpecne-programovani-ala-ada , tam je to
> // velmi prehledne shrnute.
> //
> // Ales Prochaska
> //
// >> Zdravim,
> //
// >> Jak?
// >> Prece kazdy jazyk v základech dostane do vinku něco na způsob
> // celociselnych
// >> cisel a jejich operace, takze datovy typ. Dobře, nektere jazyky to
> // nemai tak
// >> dobře videt, ze to je int, ale ty operace a typy tam na pozadi jsou.
> //
// >> Jaky jazyk nema datovy typ int(alespon schovany), ze do nej nemuzu
> // vlozit
// >> zadne cislo??? Protože JEN TAKOVY JAZYK BY SPLNIL VASE POZADAVKY...
> //
// >> S pozdravem,
// >> Marek Pavlu
> //
// >> // -----Original Message-----
// >> // From: hw-list-bounces@list.hw.cz
// >> [mailto:hw-list-bounces@list.hw.cz] On
// >> // Behalf Of Ales Prochaska
// >> // Sent: Sunday, March 05, 2006 9:12 AM
// >> // To: hw-list@list.hw.cz
// >> // Subject: Re: Jádro pudla (Cernobily svet) :-)
// >> //
// >> // Jazyk to muze ovlivnit tak, ze programator je primo nucen zvolit
// >> // datovy typ (ruzny od int). Pokud i potom poplete jednotky neni to
> // uz
// >> // omyl ale sabotaz ;-)
// >> //
// >> // Ales Prochaska
// >> //
// // >>> Zdravim,
// >> //
// // >>> Asi takoto, v C si muzu udelat extra datovy typ
// >> //
// // >>> typedef mile int;
// // >>> typedef meter int;
// >> //
// // >>> A k tomu sadu konverznich funkci a MAM TYPOVOU KONTROLU :))).
// >> //
// // >>> V C++ si vytvorim objekty mCmile a mCmeter, kterym pretizim
> // operatory
// >> // pro
// // >>> +,-,*,/,^ a mam ještě lepsi typovou kontrolu nez v C.
// >> //
// >> //
// // >>> Tohle není problem jazyka, ale toho, ze 95% programatoru to
> // neudela,
// >> // ale
// // >>> udela toto:
// >> //
// // >>> int mile, meter;
// >> //
// // >>> mile = 1235;
// // >>> meter = 5;
// >> //
// // >>> mile += k*meter;
// >> //
// // >>> //a nebo toto:
// >> //
// // >>> mile += meter;
// >> //
// // >>> // a spadne jim sonda za 100 milionu USD na budku,
// // >>> // protože ZAPOMNELI VYNASOBIT METR KONSTANTOU!!!
// // >>> // :)))))))))))))))))...
// >> //
// // >>> Tak to je a i Pascal se z toho posere, respektive ta sonda, kdyz
// >> // programátor
// // >>> je prase a promenne s ruznymi jednotkami v kritických systémech
// >> // nazabali do
// // >>> tridy nebo neobali datovy typ funkcemi, aby typova kontrola byla
> // i k
// >> // necemu,
// // >>> nez jen k hovnu:(.
// >> //
// >> //
// // >>> S pozdravem,
// // >>> Marek Pavlu
// >> //
// // >>> // -----Original Message-----
// // >>> // From: hw-list-bounces@list.hw.cz
// // >>> [mailto:hw-list-bounces@list.hw.cz] On
// // >>> // Behalf Of Ales Prochaska
// // >>> // Sent: Saturday, March 04, 2006 11:16 PM
// // >>> // To: hw-list@list.hw.cz
// // >>> // Subject: Re: Jádro pudla (Cernobily svet) :-)
// // >>> //
// // >>> // No, kdyz neni bordel v navrhu, ani si nevsimnete ze nejaka
> // typova
// // >>> // kontrola existuje.
// // >>> //
// // >>> // Ales Prochaska
// // >>> //
// // // >>>> At 22:54 4.3.2006, Ales Prochaska wrote:
// // // >>>>>To co predevsim nemivaji nekteri programatori radi je
// // // >>>>>silna typova kontrola kterou povazuji za zbytecnou
> // administrativu
> //
// >> // a
// // // >>>>>brzdu tvurciho rozletu. Pak tvurcim zpusobem interpertuji
> // hodnotu
> //
// >> // v
// // // >>>>>metrech jako udaj ve stopach a spadne jim Mars Polar Lander
> // :-)
// // >>> //
// // // >>>> To neni problem typove kontroly (int je int i kdyz jsou to
> // hrusky
> //
// >> // nebo
// >> //
// // // >>>> jabka), ale bordelu v navrhu.
// // >>> //
// // // >>>> (A to je presne problem tehle debaty: micha jabka a hrusky
> // :o) )
// // >>> //
// // >>> //
// // // >>>> Jindroush (kubecj@avast.com)
// // // >>>> http://www.kostky.org - Pro fany stavebnic LEGO.
// // >>> //
// // // >>>> _______________________________________________
// // // >>>> HW-list mailing list - sponsored by www.HW.cz
// // // >>>> Hw-list@list.hw.cz
// // // >>>> http://list.hw.cz/mailman/listinfo/hw-list
// // >>> //
// // >>> //
// // >>> // _______________________________________________
// // >>> // HW-list mailing list - sponsored by www.HW.cz
// // >>> // Hw-list@list.hw.cz
// // >>> // http://list.hw.cz/mailman/listinfo/hw-list
// >> //
// >> //
// >> //
// // >>> _____
// >> //
// // >>> avast! Antivirus <http://www.avast.com> : Odchozi zprava cista.
// >> //
// >> //
// // >>> Virova databaze (VPS): 0609-3, 03.03.2006
// // >>> Testovano: 5.3.2006 7:55:40
// // >>> avast! - copyright (c) 2000-2003 ALWIL Software.
// >> //
// >> //
// >> //
// // >>> _______________________________________________
// // >>> HW-list mailing list - sponsored by www.HW.cz
// // >>> Hw-list@list.hw.cz
// // >>> http://list.hw.cz/mailman/listinfo/hw-list
// >> //
// >> //
// >> // _______________________________________________
// >> // HW-list mailing list - sponsored by www.HW.cz
// >> // Hw-list@list.hw.cz
// >> // http://list.hw.cz/mailman/listinfo/hw-list
> //
> //
> //
// >> _____
> //
// >> avast! Antivirus <http://www.avast.com> : Odchozi zprava cista.
> //
> //
// >> Virova databaze (VPS): 0609-3, 03.03.2006
// >> Testovano: 5.3.2006 18:29:38
// >> avast! - copyright (c) 2000-2003 ALWIL Software.
> //
> //
> //
// >> _______________________________________________
// >> HW-list mailing list - sponsored by www.HW.cz
// >> Hw-list@list.hw.cz
// >> http://list.hw.cz/mailman/listinfo/hw-list
> //
> //
> // _______________________________________________
> // HW-list mailing list - sponsored by www.HW.cz
> // Hw-list@list.hw.cz
> // http://list.hw.cz/mailman/listinfo/hw-list
> _____
> avast! Antivirus <http://www.avast.com> : Odchozi zprava cista.
> Virova databaze (VPS): 0609-3, 03.03.2006
> Testovano: 5.3.2006 21:48:24
> avast! - copyright (c) 2000-2003 ALWIL Software.
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list