posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

C++ managed extensions: bye bye

Lo sapevo già dalla alpha di Luglio ed ero saltato sulla sedia: le managed extension sono abbandonate. Calma, come sempre sono mantenute per garantire la compatiblità, ma a chi sono mai piaciute? Brandon Bray introduce le straordinarie novità. Purtroppo è assente l'illustre Herb Sutter, responsabile dell'ISO C++ committee e team leader del compilatore VC++.

Nel mondo managed il nuovo operatore di moda è l'handle "^" (pronunciato hat) che, come ho già accennato, introduce un nuovo modo di gestire i puntatori del mondo managed.
^ è come * con la differenza che ^ punta ad un oggetto su cui non ho responsabilità sulla disallocazione perchè viene gestito dal Garbage Collector. Ovviamente non esiste (void ^). Un esempio è Widget ^w2 = gcnew Widget; dove gcnew è l'equivalente dell'operatore new per il garbage collector. L'operatore -> si usa nello stesso modo.
Altro nuovo operatore è %, l'equivalente del &:  string %s = *s2.

Quanto si vuole raggiungere è una nuova sintassi che permetta di lavorare in C++ rispettando le regole del CLR ottenendo un ok dalla ISO per questi addendum.

N, R, V, I, E sono i nuovi prefissi aggiunti alle classi per ottenere Native, Reference, Value, Interface ed Enum classes. E su tutte queste si possono usare i template!
Non manca il supporto per le properties in una sintassi simile a quella di C#.

L'operatore gcnew crea un piccolo proxy che gestisce l'oggetto allocato nella memoria managed.

Quando uso gcnew il compilatore genera automaticamente la Dispose per il distruttore. Attenzione che questo significa che gli oggetti così allocati verranno distrutti subito e quindi la loro distruzione sarà deterministica, una novità assoluta per il framework.

Oltre ai templates, ci saranno i generics che vengono prodotti al runtime ed hanno il pregio di essere cross-language e cross-assembly. Ovviamente i template rimangono più potenti perchè permettono la specializzazione. Inoltre è possibile usare un generic come parametro di templates.

Non da poco è la completa trasparenza nell'uso di STL nel mondo managed. la for_each per esempio diventa equivalente al for each a cui siamo già abitutati in C#.

Se i programmatori C++ credevano di essere stati abbandonati, questa è una risposta forte, che richiama tutti sulla potenza e l'importanza di contninuare ad usare C++. La standardizzazione ISO di queste numerosissime novità metterà un sigillo alla nuova generazione di applicazioni dei prossimi 10 anni.

Print | posted on mercoledì 29 ottobre 2003 00:47 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET