Curiosità sui linguaggi...

Fabrizio Soppelsa fsoppelsa@oltrelinux.com
Dom 30 Dic 2007 16:33:07 CET


Lucia De Pasqual (2007-12-30, 15:57):
> ma scusa questo non e' semplicemente C? e per estensione ereditato dal C++?

Era una metafora per dire che tante cose si fanno, funzionano, ma
malauguratamente sono errori.

> Non capisco cosa c'entra con un garbage collector, che appunto in C/C++ 
> non c'e' visto che non ci sono virtual machine:

Come ben saprai, un compilatore C++ alloca gli oggetti di classe
automatic sullo stack, ma l'allocazione di un Activation Record per lo
scope dell'array (statico) dichiarato (con limiti non-costanti),
costringe il generatore di codice a produrre codice che alloca sullo
stack il puntatore a un'area dello heap in cui e` contenuto il vero e
proprio array, cio` non solo (come da eredita` del C) perche` non puo`
fare diversamente, ma anche perche` cio` e` necessario per impedire il
micidiale del troncaggio d'oggetto (nell'eventualita` di una chiamata al
costruttore per copia o dell operator=) in caso di late binding su un'istanza
della classe che contiene eventualmente il nostro bell'array statico C.

I compilatori C++ sono privi di GC non perche` non c'e` una VM, ma per 
le ereditate similitudini da C, tra puntatori e interi, che rendono
effettivamente il linguaggio non type-safe e quindi un GC completo
(che possa gestire correttamente anche l'aritmetica dei puntatori e 
i cast di oggetti) impossibile da implementare.

> Uno dell'ISIB (cnr) qualche anno fa ha tenuto un corso di oo con 
> particolare focus su smalltalk e, oltre a spiegarci che si tratta 
> dell'unico linguaggio eticamente utilizzabile da un programmatore oo, ne 
> ha dimostrato le potenzialita' nel calcolo con i numeri grandi: alla 
> fine della lezione ha dovuto spegnere tutto perche' dovevamo andare a 
> casa ^_^

Peccato :)

Ciao
fs.


-- 
/"\
\ /       ASCII Ribbon Campaign  
 X   against HTML email & .doc files
/ \



Maggiori informazioni sulla lista blug