29 votes

C++/CLI: pourquoi devrais-je l'utiliser?

Je suis assez familier avec le C++, j'ai donc considéré que l'apprentissage .NET et tous ses dérivés (notamment C#).

Le long du chemin, je suis tombé sur le C++/CLI, et je veux savoir si il n'y a aucune utilisation spécifique pour cette langue? C'est juste de supposer pour être un langage intermédiaire pour la transformation de natif C++ C#?

Une autre question qui m'est venu à ma tête est pourquoi il y a encore beaucoup de langages de programmation .NET framework? (VB, C++/CLI, C#...)

30voto

Hans Passant Points 475940

Oui, C++/CLI a une cible bien précise de l'utilisation, de la langue (et son compilateur, la plupart de tous), il est très facile d'écrire du code qui doit l'interopérabilité avec du code non managé. Il a un support intégré pour le marshaling entre gérés et non gérés types. Il a utilisé pour être appelé IJW (Il Fonctionne, tout Simplement), appelée aujourd'hui C++ Interop. D'autres langues ont besoin d'utiliser le P/Invoke marshaller qui peut s'avérer inefficace et a des capacités limitées par rapport à ce que le C++/CLI peut faire.

L' .NET framework contient du code qui a été écrit en C++/CLI, notamment dans le Système.Données et WPF PresentationCore. Si vous n'avez pas non géré interop besoins ou de ne pas avoir à travailler avec un héritage de la base de code puis il y a quelques raisons de choisir C++/CLI. C# ou VB.NET sont le meilleur choix. C++/CLI ensemble de fonctions de suis gelé autour de 2005, il n'a pas de support pour les plus récents ajouts tels que les lambdas ou la syntaxe Linq. Ni l'IDE en charge de nombreuses cloches et de sifflets disponible dans le C# et VB.NET IDEs. Remarquable, c'est que VS2010 sera d'abord navire sans IntelliSense soutien pour le C++/CLI. Un peu d'un baiser de la mort.

Mise à JOUR: relancé dans VS2012, prise en charge IntelliSense est de retour. Pas le moins du monde grâce à C++/CX, une extension du langage qui simplifie l'écriture d'applications WinRT en C++. Sa syntaxe est très similaire à C++/CLI.

14voto

Clifford Points 29933

Premier C# n'est pas un "derivitive" de .NET. .NET n'est pas une langue, c'est un cadre d'application et de la bibliothèque de classe basée sur la CLR, pour lequel un certain nombre de langues existent.

Cela dit, la raison la plus convaincante à utiliser .NET, c'est que c'est un bien conçu, à la bibliothèque de la classe et un moyen beaucoup plus facile de développer pour Windows que Win32 ou MFC. Cependant, personnellement, j'ai décidé que j'avais plutôt l'apprentissage d'une nouvelle langue au total que d'apprendre des extensions à l'ancienne, et parce que le C# a été conçu à partir du sol en place pour travailler avec .NET, je suggère qu'est la langue de choix pour .NET.

C++/CLI est utile si vous voulez utiliser .NET avec un code existant, et je l'ai utilisé pour la création de Fenêtres de Formes d'Interfaces graphiques et le collage pour le code d'application existant. Ses autres raison d'être , c'est qu'il est le seul .NET de la langue qui prend en charge mélangées code natif et géré dans un seul module de charge, il est donc à la fois de la performance et de la réutilisation de code existant.

Concernant le nombre de langues, Microsoft voulez toutes les applications de Windows pour être sur .NET parce que c'est mieux pour la sécurité et la stabilité de leur système d'exploitation. Le seul moyen qui va arriver, c'est par la prise en charge de plusieurs langues. Penser .NET est une plateforme d'application ou de système d'exploitation de l'API, et la question fait moins de sens; il y aura de nombreuses langues, pour .NET pour la même raison qu'il y a beaucoup de langues pour toute plate-forme. Les raisons sont nombreuses, y compris un avantage commercial, de l'application de l'ajustement, de la politique, à l'appui de développeurs, de choix et sans doute de plus en plus.

10voto

Alexander Gessler Points 26717

C'est en effet principalement conçu comme langue intermédiaire pour lier facilement .net code natif, le C++. Faites-vous une faveur, ne l'utilisez pas si vous n'en avez pas besoin. C++/CLI syntaxe est un gâchis.

Concernant votre deuxième question ... je pense qu'aujourd'hui C# est la langue dominante dans .net, mais pas tout le monde aime son style et ses paradigmes. .net architecture du fait de l'ajout de nouvelles langues facile (voir F#, qui vise à la programmation fonctionnelle).

9voto

jalf Points 142628

Microsoft a changé son point de vue sur ce à quelques reprises. Il a été initialement conçu comme un véritable langage, essentiellement quelque chose qu'ils voulaient tous les développeurs de passer à, l'abandon de C++ natif autant que possible.

Ensuite, il y a quelques années, ils ont réalisé que ce n'était tout simplement pas ce que voulaient leurs clients. Les développeurs qui sont à déménager .De toute façon NETTE généralement sauter d'un langage comme le C#, et le reste ont des raisons de garder leur code dans le monde indigène, de sorte qu'ils restent avec C++.

Alors maintenant, Microsoft a l'intention de C++/CLI pour être un "pont" entre les indigènes du code C++ et le code managé écrit dans certains .NET de la langue. Ce n'est plus une langue qu'ils vous recommandons de commutation de l'ensemble de votre base de code pour.

5voto

J'ai utilisé le C++/CLI pour créer .NET de l'API pour certains C++ bibliothèques. De passage et de rassemblement de paramètres prend un peu de s'habituer à (selon les types), mais une fois que vous avez pris le coup, c'est vraiment une belle façon de combler le fossé entre les administrés et non administrés monde.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X