[python] Brainstorm request: Vyuka programovani na gymplu
superman
feed na centrum.cz
Sobota Červen 14 01:10:04 CEST 2008
>
> Dispatcher (server), ktery spousti nekolik tisic vlaken si vytvori
> vlastni registracni strukturu metadat o kazdem z pustenych vlaken,
> kteremu pri startu (pokud je to nutne) preda referenci na jeho zaznam.
> Zde muze byt napriklad struktura semaforu, pripadne jineho
> synchronizacniho "nastroje", ktery dane vlakno bude kontrolovat/ridit.
> Takova konstrukce je plne zapouzdrena (objekt dispatcheru si managuje
> sve ovecky, plus poskytuje interface k vlaknum pro sve okoli) a je
> umoznena absolutni prenositelnost / zapouzdreni do slozitejsich
> struktur aplikace. Nevidim zadnou potrebu, a uz vubec ne oduvodnenou,
> pro existenci globalni promenne.
To je jedno z řešení, nicméně ne vždy šikovné. Proč by třeba bylo nutné
vytvářet něco, co musí vědět o každém z vláken? Je opravdu nutné, aby
synchronizační objekt vedl seznam všech vláken? A proč?
Globální proměnné mají jednu obrovskou výhodu (tedy v Javě ne, ale v
řadě jiných programovacích jazyků ano) - nemůže selhat jejich vytvoření.
V řadě jazycích se mohu spolehnout na to, že globální proměnná zaručeně
bude existovat a její vytvoření neskončí chybou. To mi dynamicky
vytvořené objekty zajistit nemohou - vždy je tam riziko selhání typu
"není dostatek paměti na alokaci", či "není dost místa na zásobníku".
Pokud chci udělat nezbořitelnou aplikaci, kde opravdu hodně záleží na
spolehlivosti - tahle vlastnost globálních proměnných není k zahození. A
založit modul třeba obsluhy chyb na nezbořitelných globálních proměnných
vůbec není od věci.
Další obrovskou a neoddiskuvatelnou výhodou globálních proměnných je
jejich efektivita. Neexistuje efektivnější a rychlejší přístup a práce s
proměnnou, než je globální proměnná (a statická samozřejmě) - a v
případě, kde rychlost je klíčová to nemusí být k zahození. Ona celá
režie zapouzdření taky něco stojí - a mimo jiné i tu rychlost e
efektivitu běhu celého programu.
Není v programování nic horšího, než předsudky.
Miloslav Ponkrác
Další informace o konferenci Python