2008/6/7 superman <[EMAIL PROTECTED]>:

>
> >     Globální proměnné nejsou prasení v rozumném počtu. Stejně tak jako
> >     leccos dalšího.
> >
> >
> > V tomhle si dovolim nesouhlasit. Pokud programator potrebuje pouzit
> > globalni promennou, udelal v navrhu datovych struktur chybu.
> >
>
> Já tenhle názor nesdílím. Globální proměnná je zkrátka jenom datová
> proměnná viditelná pro všechny moduly programy. Představte si třeba, že
> máte multithreadovou aplikaci, která po startu
>
neudělá nic jiného, než rozjede x threadů (třeba několik tisíc), a
> všechny thready budou synchronizovány v určitých fázích pomocí jednoho
> synchronizačního objektu. Pak nevidím důvod, proč synchronizační objekt
> neprohlásit za globální proměnnou, byť uznávám, že je to věcí názoru.


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.


> Stejně tak jsou přirozené globální proměnné - například parametry
> procesu, nebo třeba časové pásmo používané vaším procesem, jazyk ve
> kterém pracuje proces, aktuální adresář procesu, stavy obsluh signálu a
> obslužné funkce, proměnné procesu (myšleno environment procesu), a řada
> dalších.


Priznavam, ze takove reseni mi nevadi, presto se mi vice libi konstrukt jako
napr.

import sys
sys.path ....

nez napriklad $PATH, jako ma BASH. Protoze nedelam slozite konstrukty v
bashi casto, uz nekolikrat jsem si omylem prepsal systemove cesty ve skriptu
jen nevhodnym pojmenovanim vnitrni promenne. Pak se divite, ze kdyz v bashi
udelate napriklad

PATH=$1
....
bash skript.sh $PATH

skonci vam to s chybou, ze nelze najit interpreter bash :). Priznavam, moje
blbost, ale to je dusledek pouzivani globalnich promennych :). Konec OT...

Marek
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem