Newsgroup: it.hobby.elettronica.digitale
Titolo: variabili globali in C

Ciao a tutti!
Volevo chiedere un parere a voi che ne sapete piu' di me, l'uso di variabili 
globali in un progetto che usa un micro ad 8 bit 18F24xx e' indice di non 
conoscenza specifica del programmare in C? 

 conoscenza specifica del programmare in C? 
Io dovrei essere tra gli ultimi a disquisire su questi argomenti perché 
non mi ritengo affatto un programmatore.
Comunque penso di non sbagliare dicendo che non ha senso dire "variabili 
globali si o no" in termini assoluti.
E' corretto utilizzarle quando sono necessarie. Sono convinto che in 
nessun caso una presa di posizione assoluta possa essere indice di una 
grande "capacità di programmazione" - in C come in qualsiasi altro 
linguaggio.
Quindi, per riassumere, secondo me occorre valutare i casi specifici ma 
in generale non ci vedo nulla di male nell'utilizzarle, anzi!
Marco

 generale non ci vedo nulla di male nell'utilizzarle, anzi!
hai posta, se vuoi dammi un parere 

 hai posta, se vuoi dammi un parere 
Ci posso provare, ma tu sei sicuro di avere rimosso l'antispam? :)
Marco

 Ci posso provare, ma tu sei sicuro di avere rimosso l'antispam? :)
edit: ricevuto.
Marco

 indice di non conoscenza specifica del programmare in C?
Il non uso di variabili globali a volte ti complica un sacco il passaggio di 
parametri a funzione, ma allo stesso tempo ti impedisce di fare casini. Il 
fatto di risparmiare memoria č gestito dal compilatore (se decente): anche 
se il binding č a livello di compilazione, il compilatore puņ accorgersi se 
due funzioni non verranno mai chiamate assieme (call tree) e utilizzare le 
stesse celle di memoria per le variabili locali
Ciao
CG 

 di parametri a funzione, ma allo stesso tempo ti impedisce di fare casini.
Ma non si incolpa il basic che non puo' usare variabili locali? 

 conoscenza specifica del programmare in C?
La comune vulgata č che le variabili globali rappresentino il male, e
probabilmente in un mondo perfetto č vero.
Invece nel mondo reale - e specialmente nell'ambito embedded - le variabili
globali sono spesso un male necessario, anche se quando si comincia a fare
sul serio esse tornano ad essere viste malino anche in questi contesti
(vedi le regole MISRA).
-- 
emboliaschizoide.splinder.com

 Ma non si incolpa il basic che non puo' usare variabili locali? 
?
-- 
IBM: Insipidly Bankrolling Millions
News 2002 [v 2.3] / StopDialer / PopDuster - 
http://www.socket2000.com
Akapulce portal: 
http://www.akapulce.net

 ?
In vecchi post quando vengono fatti confronti nell' uso del Basic o del C 
per la programmazione dei Pic o altri micro ad 8 bit, fra i vari argomenti a 
favore del C viene citato che nel Basic non si possono dichiarare variabili 
locali

 probabilmente in un mondo perfetto è vero.
Credo che dipenda tutto da quanti programmatori sono coinvolti.
Se è uno solo, le variabili sono sempre locali.

 locali
Pura disinformazione. Anche il basic può usare le variabili locali. 
Da un bel pezzo tra l'altro.
-- 
Do files get embarrassed when they get unzipped?


simte ha scritto:

Faccio fatica a ricordare un programma "serio" che non usi variabili 
globali, almeno un puntatore a cui allocare una struttura.
A livello teorico e accademico si può dire che vanno evitate, forse si 
può farne a meno, però in pratica vedo fior di esempi di programmatori 
ultraprofessionali che le usano più o meno liberamente.
Migliaia di esempi li puoi trovare nell'open-source.
Certo vanno definite come globali solo le strutture di dati condivise, 
documentate e definite in modo che tutti quelli che lavorano al progetto 
possano usarle in modo sicuro.
Le variabili usate solo da una funzione dovrebbero essere sempre locali.
In un micro ad 8 bit, con uno stack limitato, mi viene da dire che 
piuttosto bisogna fare attenzione a non usare troppe variabili locali.
Ciao!


Potresti dirmi quale compilatore basic per Pic permette l'uso delle varibili 
locali? 

 locali? 
Il primo che mi viene in mente č MikroBasic.
-- 
Never test for an error condition you don't know how to handle.  - Steinbach


 Il primo che mi viene in mente č MikroBasic.
vero, hai ragione 

 piuttosto bisogna fare attenzione a non usare troppe variabili locali.
Perchč?
E' proprio un modo per recuperare RAM, visto che dalla CallTree il 
compilatore č in grado di usare la stessa cella di memoria da parte di piů 
funzioni che non sono mai concorrenti!
Ciao
CG 


Purtroppo questi hanno i gli occhi bendati, credono che l'unico sistema di 
programmare i micro sia il C, il Basic non e' preso in considerazione. 

Salvy ha scritto:

Ricordo che partecipai attivamente alla discussione Basic vs C e fui uno 
dei tanti che si scandalizzava dell'impossibilità di dichiarare 
variabili locali nelle funzioni. Ma si parlava non di Basic in generale, 
ma della schifezza PicBasic. Se poi travisate, avete poca memoria o non 
capite i termini tecnici della discussione, non dire che noi abbiamo gli 
occhi bendati, per favore.


Nella discussione c'ero anche io e quoto quanto detto da pozz.
-- 
  _|/ Francesco Sacchi - Develer S.r.l., R&D dept.
   |\ 
http://www.develer.com/
 - 
http://www.bertos.org

 discussione, non dire che noi abbiamo gli occhi bendati, per favore.
Se invece, come al solito, polemizzano solo per sport, chi gli risponde ha
evidentemente gli occhi bendati.
Hai mai letto un intervento uno di Salvy di una qualche utilità?


Come hanno già detto, non necessariamente.
Bisognerebbe vedere il codice, in ogni caso le variabili globali, a 
volte, sono il minore tra due mali.
Vorrei però dire alcune cose in merito alle pratiche di buona 
programmazione in generale.
Molto spesso nel mondo embedded (ed anche in questo thread) viene 
espresso il concetto che sì, esistono delle linee guida (tipo non 
usare variabili globali) che vanno bene in teoria, ma nella pratica, 
nel mondo vero, non vanno bene. Vengono spesso viste solo come 
esercizi di stile accademici fini a se stesse.
Ora queste linee guida non vengono dettate da Dio in persona ma 
provengono comunque dall'esperienza che nel tempo è stata acquisita 
sulla programmazione *nel mondo reale*.
Dopotutto quello che conta è che il firmware funzioni, sia veloce, 
occupi poca memoria e si faccia alla svelta a svilupparlo.
Non usare variabili globali può richiedere più tempo per il progetto 
di un'architettura di un fw, e può anche richiedere un po' di spazio 
di memoria in più *ora*.
Quello che però si trascura è che il codice diventa più complesso, è 
più facile inserirci bug e contemporaneamente più difficile 
risolverli. Con l'andare del tempo l'aggiungere funzioni diventa un 
lavoro sempre più arduo e che richiede più risorse, fino ad arrivare 
al punto che il progetto è un garbuglio tale da essere virtualmente 
impossibile da espandere ulteriormente a causa della complessità e 
della mancanza di spazio.
Siccome i progetti una volta fatti non durano un giorno (devono essere 
in genere prodotti e mantenuti per anni), è bene non sottovalutare 
l'investimento per la manutenzione futura.
Queste scelte possono essere fatte consapevolmente (se il firmware è 
solo una demo che morirà tra una settimana, me ne frego se il codice 
non è manutenibile) , ma nell'embedded, dove il background del 
firmwarista è di solito prettamente elettronico, si tende in genere a 
sottostimare le conseguenze che si avranno in futuro.


"F. Bertolazzi"  ha scritto nel messaggio:

Probabilmente ha letto interventi di una certa importanza di un tale 
chiamato Coglionazzi 

 bendati, per favore.
hai qualche link per poter rivedere quella discussione? puoi dire secondo il 
tuo parere se esiste un buon compilatore Basic per i Pic? cosa ha di 
schifoso il PicBasic Pro? 

 schifoso il PicBasic Pro? 
rileggiti quella discussione

 programmare i micro sia il C, il Basic non e' preso in considerazione.
Mi sembra un'ottima cosa non prendere in considerazione il basic, denota
buon senso e anche buon gusto.
-- 
emboliaschizoide.splinder.com

 ha scritto nel messaggio
news:gkcipf$iuv$1...@nnrp.ngi.it...

istruttivo per me,grazie

 istruttivo per me,grazie
Ti consiglio, visto che evidentemente ne hai bisogno, di istruirti anche su
http://wiki.news.nic.it/QuotarBene

"F. Bertolazzi" <TOGL...@MAIUSCOLEtdd.it> ha scritto nel messaggio
news:1qvlw4aiuciob.q...@40tude.net...

grazie Bertolo