Wednesday, July 12, 2006

Le C++/CLI, et le Managed C++ s'en vas

Le Managed C++ (ou plutôt Managed Extensions C++ : MC++) est un moyen de concilier .NET et C++, proposé par Microsoft dans les frameworks 1.0 et 1.1. Ce langage proposait grâce à la technologie Just In Time d’exécuter du code non managé (C++ standard) dans des assemblies. Le MC++ permettait ainsi aisément de profiter des facilités du .NET au sein de projet C++ standard et ceux avec un impact de performance minime (quelques % d’après Microsoft, qui n’est certes pas le plus objectif pour en juger).


Un exemple : vous possédez un ensemble de classes réalisant des fonctionnalités métiers. Si ces classes sont énormes vous n’envisagerez sans doute pas leur réécriture dans un langage purement .NET (C# …). Le MC++ était alors la solution parfaite.


Bref une très bonne initiative qui encourage réellement la transition vers le .NET de manière plus douce, cependant de nombreux défauts entachaient le C++ :

  • Les assemblies générées n’étaient pas « pure » c'est-à-dire que leurs exécutions n’étaient assurées que par le framework Microsoft. Les autres frameworks (Mono par exemple) n’étaient que très partiellement capable de les exécuter.
  • La syntaxe était une horreur. Même symbole pour les références d’objets managés et les pointeurs natifs, ajout de __ devant les mots clefs managés, …
  • Séparation complète des fonctionnalités managées et natives.

Et bien bonne nouvelle, à l’occasion du passage à la version 2.0 du .NET (et suite aux remarques des utilisateurs) Microsoft a revu sa copie pour nous présenter le remplaçant du MC++ : Le C++/CLI (Common Language Infrastructure).


Ce nouveau langage standardisé par l’ECMA améliore grandement les choses (au détriment de la compatibilité, uniquement partielle, des projets MC++ et C++/CLI). Les points ci-dessus se voient ainsi réglés.

Bref si vous voulez profiter des facilités du .NET au sein de vos projets C++, pensez à ce nouveau langage.


Plus d’informations : http://msdn.microsoft.com/visualc/default.aspx?pull=/msdnmag/issues/04/05/visualc2005/default.aspx

No comments: