[python] Brainstorm request: Vyuka programovani na gymplu
slush
slush na centrum.cz
Sobota Červen 14 00:39:28 CEST 2008
2008/6/7 superman <feed na centrum.cz>:
>
> > 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
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/python/attachments/20080614/5623b9bd/attachment.htm
Další informace o konferenci Python