Newsgroup: it.comp.lang.vo-clipper
Titolo: VO e variabili d'istanza statici

Ho appena terminato una piccola ricerca sull'implementazione delle variabili
d'istanza di tipo STATIC (vedi il C++); Interessa a quacuno?
Se si, potrei metterla a disposizione in questo NG. Fatemi sapere.
Ciao,
    Fabrizio Malaguti
P.S.
Magari si potrebbe integrare con le vostre future riflessioni e critiche
(Senza tirarmi le uova marce se ho scritto castronate - non vorrei pulire
troppo spesso il monitor dal tuorlo).

 ha scritto nel
messaggio news:MPgs8.72936$S52.2...@news2.tin.it...



Ok.
Il succo è quello di creare una classe come questa:
CLASS Pippo
  PROTECT  ......... AS .......
  STATIC   ......... AS .......
Dove il membro STATIC è legato alla classe e non all'istanza della classe.
Per il momento mi fermo qui con le spiegazioni in futuro metto tutta la
relazione a disposizione nel NG (se interessa).
Ciao,
    Fabrizio Malaguti
P.S.
Il mio è un esperimento per trasformare il NG in uno scambio di
documentazione tecnica .


relazione a disposizione nel NG (se interessa).
a me interessa.
ciao

relazione a disposizione nel NG (se interessa).
Il tuo discorso mi stuzzica, pero' non riesco a coglierne il senso.
Cosa te ne fai di una variabile static legata alla classe? Una
variabile PROTECT, ad esempio, non è già legata alla classe ?
===============================================
Antonello Negrone - Biella - Italy
anto...@anc-software.it
www.anc-software.it

 variabile PROTECT, ad esempio, non č gią legata alla classe ?
Potrebbe servire per eseguire dei semafori tra le varie istanze di apertura
della classe... credo.
Per validare dei dati senza usare variabili globali, per contatori e
progressivi... credo.

 variabile PROTECT, ad esempio, non č gią legata alla classe ?
No, la variabile PROTECT esiste in ragione di un'istanza per ogni
istanza della classe mentre della variabile STATIC esiste un'unica
istanza visibile da tutte le istanze della classe (ad esempio, puoi
contarci quante istanze vengono create di quella classe).
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

contarci quante istanze vengono create di quella classe).
Interessante, pero'  nel caso di VO mi pare si possa accedere solo
alle istanze, oppure no ?



No è legata all'istanza della classe.
Ciao,
    Fabrizio Malaguti



Esattamente. Sapevo che un esperto di C++ come te avrebbe colto la
sostanziale differenza. Inoltre se dirņ castronate sono sicuro che mi
correggerai prontamente.
Ciao,
    Fabrizio Malaguti


No è legata all'istanza della classe.
Ora ho capito cosa intendi dire, pero' quello che non ho capito è se
in VO è possibile farlo ( a me pare di no)
ciao



Esatto. Io pero', almeno credo, ho trovato una soluzione che potrebbe
simulare in VO questa caratteristica di altri linguaggi quale il C++.
Appena ho terminato la relazione ve la propongo.
Ciao,
    Fabrizio Malaguti


Appena ho terminato la relazione ve la propongo.
Ok, posso confermare il mio interesse all'argomento :-)
Saluti



Diciamo che non è stato implementato direttamente ma è facilmente
simulabile.
Ciao,
    Fabrizio Malaguti


 Appena ho terminato la relazione ve la propongo.
Un nuovo modo di usare il NG. Complimenti per l'iniziativa.

 ottimizzare prestazioni, memoria, gestione delle classi ecc.
Come, esattamente?


 sostanziale differenza.
Grazie, ma non mi sento poi così esperto, vista la complessità
insostenibile di quel linguaggio. Più lo studio e meno sono propenso ad
utilizzarlo in progetti reali...


 Un nuovo modo di usare il NG. Complimenti per l'iniziativa.
Senza voler togliere nulla alla lodevole iniziativa dell'amico Fabrizio,
ti ricordo però la lunga avventura riguardo i problemi
dell'arrotondamento in Clipper (poi, sembra, felicemente portata a
compimento)... :-)



Ottimizzazione di memoria in quanto esiste una sola variabile d'istanza di
tipo STATIC indipendentemente da quanti oggetti della classe istanziata.
Di prestazioni in quanto queste variabili sono create a livello di
compilazione e non a Run time ( ovviamente sto parlando fdella mia
implementazione su VO; in C++ non lo so).
Di gestione delle classi perchč comunque senza questi tipi di variabili in
VO si era costretti a utilizzare variabili GLOBAL al di fuori della classe.
Il risultato era quello di creare programmi ibridi parte OOP e in parte
programmazione non OOP.
Ciao,
    Fabrizio Malaguti



In effetti non è semplice. Però ci sono alcune caratteristiche che mi
piacerebbe fossero implementate in VO:
Una è l'oggetto della discussione; Altra sono i TEMPLATE e i NAMESPACE.
Ciao,
    Fabrizio Malaguti


 programmazione non OOP.
Ok, su questo hai ragione.


 Una è l'oggetto della discussione; Altra sono i TEMPLATE e i NAMESPACE.
I templates in C++ sono un vero incubo. Spero che se li implementeranno
in VO non assomiglino a quelli. Basti pensare che rappresentano un
linguaggio di programmazione autonomo all'interno del C++, che lavora
non durante l'esecuzione del programma ma in fase di compilazione. =:-|


start-up del programma e vengono rilasciate al corrispondente clean-up.
Una variabile dichiarata "static" non puo' risiedere sullo stack, che
viene rilasciato al termine della funzione (mi riferisco al caso di
una static dichiarata all'interno di una funzione).
Di solito (in C) questo tipo di variabili viene chiamato non-stack e
solitamente viene allocato sull'extra segment (reg. ES)
Le prestazioni variano a seconda dei casi. Se nella funzione NON ci
sono variabili locali (stack) si risparmia un setup di stack,
altrimenti non cambia nulla, inoltre bisogna vedere se le statiche si
trovano nello stesso segmento.
Ad ogni modo siamo alla ricerca del classico pelo nell'uovo!
ciao, acc.   
a...@libero.it

 solitamente viene allocato sull'extra segment (reg. ES)
Appunto, allocato. Significa in esecuzione, no?


 di compilazione. 
in VO sono i DEFINE che vengono creati al momento della compilazione. Altro 
esempio sono le stringhe o altre variabili definite nelle sorgenti:
"Questa variabile viene creata al momento della compilazione"
Questo tipo di variabili esiste anche in Clipper, e in C/C++, e credo in tutti i 
linguaggi compilati.
Saluti
Wolfgang
Merano

 linguaggi compilati.
Ma io parlavo di variabili (vedi sopra) invece tu di costanti. Sono due
cose ben diverse. In particolare, il C per alcuni tipi di costanti non č
neanche detto che utilizzi memoria.


Appunto, allocato. Significa in esecuzione, no?
Mi sono espresso male intendevo dire che e' "puntato" da ES.
L'inizializzazione della variabile, nel caso cio' avvenga in fase di
dichiarazione, viene effettuata attraverso una costante che quindi
sara' allocata assieme alle altre costanti. La parte importante pero'
e' che le var statiche vengono create durante il caricamento del
programma e non durante l'esecuzione dello stesso. Anche nel caso di
una var static dichiarata all'interno di una procedura la variabile
esiste gia' alla partenza del programma, poco conta se non e'
visibile, comunque esiste.
ciao, acc.   
a...@libero.it

 corrispondenti valori.
sono costanti, non variabili.

 visibile, comunque esiste.
E' vero, ma il lifetime di una static a me risulta essere dalla fase di
start-up a quella di clean-up, quindi comunque in esecuzione (anche se,
rispettivamente, nelle primissime e ultimissime fasi).
