<br><br><div class="gmail_quote">2008/6/7 superman <<a href="mailto:feed@centrum.cz">feed@centrum.cz</a>>:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br>
> Globální proměnné nejsou prasení v rozumném počtu. Stejně tak jako<br>
> leccos dalšího.<br>
><br>
><br>
> V tomhle si dovolim nesouhlasit. Pokud programator potrebuje pouzit<br>
> globalni promennou, udelal v navrhu datovych struktur chybu.<br>
><br>
<br>
</div>Já tenhle názor nesdílím. Globální proměnná je zkrátka jenom datová<br>
proměnná viditelná pro všechny moduly programy. Představte si třeba, že máte multithreadovou aplikaci, která po startu<br></blockquote><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
neudělá nic jiného, než rozjede x threadů (třeba několik tisíc), a<br>
všechny thready budou synchronizovány v určitých fázích pomocí jednoho<br>
synchronizačního objektu. Pak nevidím důvod, proč synchronizační objekt<br>
neprohlásit za globální proměnnou, byť uznávám, že je to věcí názoru.</blockquote><div><br>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. <br>
</div><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Stejně tak jsou přirozené globální proměnné - například parametry<br>
procesu, nebo třeba časové pásmo používané vaším procesem, jazyk ve<br>
kterém pracuje proces, aktuální adresář procesu, stavy obsluh signálu a<br>
obslužné funkce, proměnné procesu (myšleno environment procesu), a řada<br>
dalších.</blockquote><div><br>Priznavam, ze takove reseni mi nevadi, presto se mi vice libi konstrukt jako napr.<br><br>import sys<br>sys.path .... <br></div><div><br>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<br>
<br>PATH=$1<br>....<br>bash skript.sh $PATH<br><br>skonci vam to s chybou, ze nelze najit interpreter bash :). Priznavam, moje blbost, ale to je dusledek pouzivani globalnich promennych :). Konec OT...<br><br>Marek<br></div>
</div>