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