(attention: réponse longue)
Visual C++.Net ne convient pas parceque ce n'est pas du C++ !
C'est une tromperie de la part de Microsoft d'avoir gardé le nom C++, parcequ'il y a de grosses différences.
Pour les machines virtuelles:
Quand tu compile un programme C, C++, VB ou autre, le compilateur va traduire les instructions du langage en langage machine (c'est le langage que comprend ton microprocesseur (Pentium, AMD ou autre)).
Le programme, une fois compilé, ne fonctionnera que avec ce processeur (et avec ce système d'exploitation).
C'est pour cela que les programmes pour Pentiums ne fonctionnent pas sur Macintosh (à base de processeur PowerPC) ou stations Sun (à base de processeurs Sparc).
Certains compilateurs ont été inventé pour compiler dans le langage machine d'un microprocesseur fictif.
Le programme "compilé" est incompréhensible par ton microprocesseur physique.
Il faudrait un processeur qui le comprenne, ou bien un programme qui simule ce processeur fictif.
C'est ce que font les machines virtuelles.
La machine virtuelle Java contient un émulateur de microprocesseur "Java". Il est capable de comprendre les programmes compilés Java (.class) et les faire tourner.
C'est la même chose en Python et en .Net.
(La machine virtuelle de .Net s'appelle la CLR: Common Runtime Library).
L'avantage avec les machine virtuelles, c'est que ton programme, une fois compilé, fonctionnera tel quel sur tous les ordinateurs sur lesquelles la machine virtuelle existe.
Tu n'es plus dépendant ni du microprocesseur, ni du système d'exploitation.
La machine virtuelle Java existe sur des tas de systèmes différents (processeurs Intel, AMD, Sparc, Alpha, PowerPC... sous Windows, MacOS, Linux, Unix, Solaris...).
La machine virtuelle Python existe sur des tas de machines et OS aussi (Windows, Dos, Linux, MacOS, OS/2, Solaris, Amiga, VMS...)
Là où Microsoft n'a absolument rien compris de l'intérêt des machines virtuelles, c'est que la machine virtuelle .Net fonctionne exclusivement sous Windows 2000/XP avec des processeurs Intel.
Donc, aucun avantage à utiliser .Net sur ce plan là (à part le garbage collector).
C'est débile.
Au moins quand je fais un programme Python, il tourne sans modification sous n'importe quel OS (Windows, Unix, MacOS et les autres).