[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