Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Microsoft souhaite transpiler le code C# en code C++
Afin d'exécuter les programmes .Net nativement sur les plateformes dépourvues du framework .Net

Le , par Olivier Famien

66PARTAGES

7  0 
Lorsque vous écrivez un programme qui ne s’exécute pas nativement, vous aurez besoin d’installer des outils pour exécuter ce programme. Cela peut être une machine virtuelle, une chaîne de compilation et bien d’autres encore.

Microsoft qui mise beaucoup sur son langage de développement C# souhaite porter ce langage au-delà des limites qu’on lui connaît actuellement. Lorsque vous développez une application .Net, un des avantages liés à ce langage est qu’il bénéficie d’une prise en charge sur les plateformes Linux, Windows, OS X, Android, iOS. Pour que ces programmes puissent s’exécuter sur ces plateformes, ils s’appuient sur un ensemble d’outils .Net disponibles pour ces plateformes.

Dans les faits, cela signifie que le code ne s’exécute pas nativement directement, mais s’appuie sur la machine virtuelle CLR (Common Language Runtime) du framework .Net afin d’exécuter le code intermédiaire généré.

Cela constitue déjà un grand avantage, mais si l’envie vous prenait d’écrire une application en C# pour une plateforme sur laquelle il n'existe pas d'implémentation .Net, vous serez simplement bien obligé de vous tourner vers d’autres langages ou d’autres solutions.

Microsoft souhaite donc lever cette limite afin d’utiliser son langage C# là où les outils .Net ne sont pas disponibles. Pour cela, la firme a annoncé récemment qu’elle travaille ardemment sur son environnement d’exécution CoreRT afin d’offrir une compilation native à 100 % pour les programmes écrits en C#.

Actuellement, CoreRT intègre en son sein le compilateur à la volée RyuJIT qui permet de compiler le bytecode en code natif spécifique à chaque système d’exploitation (Linux, Windows, OS X). C’est sur ce principe que sont basées les applications universelles Windows.

Pour porter C# encore plus loin, c’est-à-dire dans des environnements non équipés d’outils .Net, Microsoft envisage de transpiler le code .Net en code C++ qui pourrait être compilé par la suite avec un compilateur approprié pour cibler une plateforme quelconque. Comme Microsoft le souligne, « ;cette stratégie ouvre des portes pour le développement matériel parce que l’on n’aura plus besoin d’attendre qu’un ingénieur Microsoft étende nos compilateurs pour soutenir un nouveau matériel ou un nouveau système d’exploitation afin de permettre aux développeurs .NET de travailler avec votre produit ;». Ce projet promet donc de grandes choses une fois sorti du laboratoire.

Toutefois, l’on est encore loin du compte, car C++ n’offre pas de correspondance directe pour les outils .Net. Les ingénieurs Microsoft ainsi que la communauté open source devront trouver le moyen de faire correspondre les fonctionnalités .Net à C++.

De même, plusieurs classes .Net peuvent implémenter la même interface, ce qui peut être déroutant pour le transpileur. À ce niveau-là également, les mainteneurs du projet CoreRT doivent permettre au transpileur d’être assez intelligent pour savoir quelle classe doit être instanciée et passée comme interface. Enfin, une classe .Net peut implémenter des méthodes virtuelles qui appartiennent à une autre classe ou superclasse. Il va falloir également trouver le moyen de conserver ces interactions en C++.

Tout comme CoreRT, plusieurs autres projets dont Nuitka (transpileur Python vers C++) ont vu le jour afin d’offrir aux langages de programmation une passerelle vers C++ pour améliorer les performances et aussi pouvoir porter ces langage vers d’autres plateformes. Mais à l'instar de CoreRT, plusieurs difficultés parsèment le chemin menant à la réussite de ces projets.

Source : Blog Microsoft

Et vous ?

Que pensez-vous de ce projet ;?

Voir aussi

Microsoft dévoile la feuille de route de .NET Core, l'entreprise compte apporter des concepts de programmation fonctionnelle aux langages .NET
Microsoft annonce la disponibilité générale de .NET Core 1.0 et ASP.NET Core 1.0 pour Windows, OS X et Linux
ASP.NET 5 devient ASP.NET Core 1 et .Net Core 5 est maintenant appelé .NET Core 1.0 pour mieux se démarquer des anciens frameworks

La Rubrique Dotnet, Forum Dotnet, Cours et tutoriels Dotnet, FAQ Dotnet

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Pierre Louis Chevalier
Expert éminent sénior https://www.developpez.com
Le 24/10/2016 à 17:11
Citation Envoyé par jpouly Voir le message
J'ai du mal à comprendre pourquoi M$ veut absolument que le .net se transpose en C++.
Parce que c'est peut être plus simple de créer ce transpileur et avoir accès à un très grand nombre de plateformes que de créer une clr pour toutes les plateformes.
4  0 
Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 22/10/2016 à 1:30
Citation Envoyé par 23JFK Voir le message
Facile, en abandonnant le projet parce que c'est infaisable. Ce ne sera pas le premier grand projet à finir à la poubelle.
Avec ce genre de raisonnement on en serait encore à taper sur des silex pour faire du feu... Si tu abandonnes un projet dès que tu rencontres une difficulté, tu vas pas aller bien loin .
4  1 
Avatar de zobal
Membre confirmé https://www.developpez.com
Le 22/10/2016 à 17:27
Citation Envoyé par MABROUKI Voir le message
bonjour

La transpiration c'est ce qui est fait déjà dans le C++ Cli, ce qui est une véritable usine gaz ,dont la corvée est laissé au programmeur ...!!!
ça doit être pour cela que ça fait suer
3  0 
Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 22/10/2016 à 0:12
Bonne idée, je suis curieux de voir ce que ça va donner. Je me demande notamment comment il vont gérer certaines features comme la réflexion, les métadonnées (attributs), la génération dynamique de code, le GC...
0  0 
Avatar de redcurve
Membre confirmé https://www.developpez.com
Le 22/10/2016 à 15:33
Je pense que MS devrait déterrer S# et reprendre certains mécanisme de Bartok ils ont utilisés ça pour Singularity
0  0 
Avatar de MABROUKI
Membre expert https://www.developpez.com
Le 22/10/2016 à 16:36
bonjour

La transpiration c'est ce qui est fait déjà dans le C++ Cli, ce qui est une véritable usine gaz ,dont la corvée est laissé au programmeur ...!!!
0  0 
Avatar de ac_wingless
Membre confirmé https://www.developpez.com
Le 24/10/2016 à 13:24
Citation Envoyé par dorinf Voir le message
Cela ne suffit malheureusement pas. Le seul moyen pour un ramasse-miette de savoir si une référence peut ou non être collectée, c'est de vérifier si elle est accessible. Le nombre de pointeurs référençant cette variable donne une information, mais qui n'est pas suffisante. Une référence non référencée est collectable. Une référence référencée peut l'être... ou pas ! Les pointeurs, aussi intelligents soient ils, ne permettent pas de résoudre cette problématique.
En fait si, c'est le mécanisme proposé par C++ pour résoudre le cas des données circulaires (collectables mais référencées).
0  0 
Avatar de François DORIN
Expert éminent sénior https://www.developpez.com
Le 24/10/2016 à 13:42
Citation Envoyé par ac_wingless Voir le message
En fait si, c'est le mécanisme proposé par C++ pour résoudre le cas des données circulaires (collectables mais référencées).
Si c'était réellement aussi simple, je doute fortement qu'il y aurait autant de travaux sur les ramasses-miettes, qu'ils soient encore améliorés et optimisés après des décennies de recherche, qu'ils catégorisent les objets en fonction de leur durée de vie ou de leur taille alors qu'il "suffit" d'utiliser des weak pointeurs... La libération des ressources serait quasi-instantanée et ne bloquerait donc jamais une application pendant plusieurs centaines de ms, voire plus.
0  0 
Avatar de jostroland
Futur Membre du Club https://www.developpez.com
Le 24/10/2016 à 17:06
Je pense que Microsoft l'a déjà fait.

Merci de consulter la video suivante :
(précisément à la 39min)
0  0 
Avatar de captaindj
Candidat au Club https://www.developpez.com
Le 28/10/2016 à 11:09
Ça peut être pas mal! Il est vrai que mricrosoft devra gérer de nombreux problèmes avant que cela puisse fonctionner , Et encore c'est pas dit que ce projet voit le jour !
0  0