[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