L'idea stessa di .Net è che puoi usare qualsiasi lingua con cui ti trovi già a tuo agio e usare la piattaforma DotNet senza dover imparare una nuova lingua da capo. Un modo di guardarlo è come un'inversione della piramide di Java. Java può essere spiegato come "single language-single executable (IL) -many OS". dot net è "many languages-one executable-one OS" (ovviamente il bit di un sistema operativo non è corretto poiché abbiamo Mono ma non penso che fosse quello che Microsoft aveva in mente :-P).
Sì, C # doveva essere IL linguaggio per DotNet, ma non "L'UNICO". Probabilmente Microsoft sperava di far migrare i programmatori C ++ in C # a lungo termine, se non immediatamente. Ma sembra che non stia succedendo. Il C ++ è ancora la terza lingua più popolare. La familiarità con un linguaggio e lo sforzo necessario per eseguire il porting di un'applicazione da C ++ a C # hanno reso la maggior parte degli sviluppatori riluttanti. Dopo tutto, perché aggiustare qualcosa che non è rotto? Ecco perché Microsoft ha creato C ++ / CLI. È un modo meraviglioso per ottenere programmatori C ++ sul vagone DotNet senza dover imparare una nuova lingua. Mi ci è voluto pochissimo tempo per abituarmi al C ++ / CLI. L'unico inconveniente che ho visto è che la nuova notazione del puntatore per le classi gestite può confondere chi ha una scarsa comprensione dei puntatori in C ++. Non mi ha influenzato però.