posts - 504, comments - 1656, trackbacks - 139

Visual C++ in primo piano con VS2005

Con molto affanno torno sul VC++ Day ... le due giornate passate con April, Ronald e Nikola sono state entusiasmanti.

Non ho memoria di un evento su VC++ e se c'erano voci che il C++ stesse per andare in cantina, all'evento sono state smentite con i fatti. Circa 140 persone, 55 tester e 16 PM si occupano di questo gioiello che serve a sviluppare il 95% del codice prodotto da Microsoft.

Riassumere tutto sarebbe veramente lunghissimo e quindi mi terrò argomenti per futuri blog, dopo aver approfondito i singoli punti, però alcune cose mi fa piacere ricordarle:

  • Adeguamento allo standard ISO. Questo è un punto importante perchè permette di mettere al sicuro il nostro codice sorgente. Spesso i sorgenti VC++ sono algoritmi privi di interfaccia grafica che possono veramente sopravvivere a lungo, a priori del sistema operativo o delle tecnologie che li circondano. Usare un compilatore standard significa che con le future versioni non ci saranno sorprese nel compilare il nostro codice.
    Spesso questo punto mette in crisi chi migra da VC++ 6.0 che non era affatto aderente allo standard, ma tra le altre cose si guadagna la possibilità di usare librerie note come Boost e Loki.
  • Ottimizzazioni. Solo ricompilando il codice con le nuove ottimizzazioni si guadagna in performance fino al 30% rispetto a VC++ 6.0 e cifre simili anche da VC++ 2003 ... per una ricompilata non è male :-)
    Le ottimizzazioni ora tengono conto dell'intero codice e non sono più applicate solo sui singoli file obj.
  • Supporto del compilatore per la compilazione parallela su più CPU o su più Core in una singola CPU
  • Supporto del compilatore alle specifiche OpenMP di cui avevo visto una demo della Intel allo scorso TechEd. In pratica con la direttiva:
    #pragma omp parallel for
    for(int i=0; i<=n; ++i) {a[i] = b[i] + c[i] }
    si ottimizza l'esecuzione del loop su più thread contemporaneamente.
  • Profilazione statica del codice. Questa analisi permette di ottimizzare il codice sulla base di un run di prova. Si lancia l'applicazione in una modalità particolare usando le sole funzionalità critiche, quelle per cui vogliamo il massimo della performance. I dati collezionati da questa modalità vengono poi usati dal compilatore per ottimizzare la compilazione vera e propria.
  • Sempre una profilazione statica del codice permette l'individuazione di potenziali problemi, vulnerabilità, etc. suggerendo se possibile la fix da adottare.
  • Supporto del compilatore managed e unmanaged per la compilazione a 64bit
  • Side-by-side libraries del CRT (e non solo) per evitare il più che noto DLL Hell
  • Supporto all'attach del debugger a più processi oltre che a più thread come già fattibile in VS.NET 2003
  • Unico ambiente di sviluppo sia per la piattaforma Full che quella embedded
  • Secure version delle librerie CRT (tanto per intenderci quelle usate per la XP SP2 e Win2K3 SP1). Il codice va rivisto ma con queste librerie si evitano i buffer overrun e quindi ne vale la pena. In molti casi non è necessario modificare nulla grazie ad una speciale versione templated delle funzioni che permette di 'dedurre'  la dimensione del buffer se questa viene allocata nello stack locale.
  • Nuova sintassi C++/CLI in fase di standardizzazione ECMA ed ISO. Il nuovo standard è molto più semplice da usare e permette di usare con semplicità le facilities di una piattaforma costruita sulla Common Language Infrastructure (standard ECMA). Grazie alla riga di comando /CLR si compila secondo la nuova sintassi.
    Per chi ha usato le managed extensions, sarà disponibile un tool di conversione automatizzata che lo stesso Stan Lippman ci ha mostrato lo scorso Aprile a Redmond.
  • Linker di VC++ potrà costruire immagini miste (file come le dll) con codice managed (generato non solo da C++/CLI ma anche da C# o altri linguaggi) ed unmanaged. Questo può tornare utile a tutti coloro che volessero linkare in un unico assembly da VS.NET codice IL sviluppato in linguaggi diversi.
  • Deterministic Finalization. In pratica il distruttore delle classi C++ non è mappato come in C# sulla Finalize ma sulla Dispose. Questo consente l'implementazione automatica del pattern Dispose risparmiando non pochi grattacapi vista la complessità di quel pattern.
  • Possibilità di inserire le Winform (ed in futuro Avalon) in progetti MFC o WTL, grazie alla creazione di immagini miste managed/unmanaged. Per esempio MFC può usere le winform al posto di una classica CView senza perdere il routing dei messaggi, etc..
  • ... sicuramente me ne sto dimenticando molte altre ...

Tutto questo per non parlare dell'IDE che fa veramente invidia anche a C#.... more to come ...

Print | posted on giovedì 12 maggio 2005 22.04 | Filed Under [ .NET [Italiano] C++ [Italiano] ]

Feedback

Gravatar

# re: Visual C++ in primo piano con VS2005

Avrei proprio voluto esserci!!! :-(
12/05/2005 23.55 | Lorenzo Barbieri
Gravatar

# re: Visual C++ in primo piano con VS2005

Salve a tutti......sto cercando di creare i un programma con visual c++ e vorrei saper come si fa ad collegare una finestra di dialogo con un pulsante in modo da pter essere richiamata.......Grazie
20/06/2005 9.31 | Mimmo
Gravatar

# re: Visual C++ in primo piano con VS2005

Ciao Mimmo,
il blog non è lo strumento giusto per fare domande.
Puoi andare sui forum di UGIdotNET (www.ugidotnet.org) oppure sui newsgroup microsoft, scegliendo il gruppo opportuno.
Devi anche essere più preciso nella tua domanda perchè C++ può usare tante librerie diverse e questo implica che ci sono tante diverse soluzioni al problema.
20/06/2005 10.45 | Raffaele Rialdi
Gravatar

# re: Visual C++ in primo piano con VS2005

Salve a tutti, io ho un problema con il visual c++ di un programma chiamato SopCast(per trasmettere file multimediali e fare iptv). Dopo qualke minuto ke sop è attivo va in buffer overrun e mi crasha.Sapreste dirmi come poter risolvere questo inkonveniente per favore?
21/08/2006 8.13 | Ronin
Gravatar

# re: Visual C++ in primo piano con VS2005

Ronin, i blog non servono per fare domande. Per questo ci sono i newsgroup e i forum. Inoltre se hai un problema specifico con un applicazione, dovresti chiedere a chi l'ha fatto.
21/08/2006 13.38 | Raffaele Rialdi
Gravatar

# re: Visual C++ in primo piano con VS2005

vabbe se non si possono fare domande cioè che blog è kon solo affermazioni, potresti dare una mano invece di dire agli altri di nn fare dmnd, nn kapisko kome fai a scrivere cose kosi.... "non si possono fare dmnd nei blog..." ma che stai a di? dv vivi?


Hack£r £t!c0
16/10/2007 18.09 | Simix92
Gravatar

# re: Visual C++ in primo piano con VS2005

@Simix92. Posso capire una domanda in-topic sul post del blog ma la domanda in questione è totalmente OT.
Inoltre sono perennemente presente online su forum e newsgroup quindi la mia disponibilità c'è e c'è sempre stata, mai nei luoghi appropriati.
Dove vivo? 365 giorni all'anno sui newsgroup.
17/10/2007 10.58 | Raffaele Rialdi

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 4 and 2 and type the answer here:

Powered by: