Microsoft vil oversætte C# til C++ for at få .Net-applikationer til at virke på Internet of Things

Microsofts CoreRT-projekt skal gøre det muligt at køre applikationer skrevet i C# på platforme, hvor .Net endnu ikke findes.

Microsoft har gjort størstedelen af .Net til open source, og derfor findes .Net allerede til blandt andet Linux, men der er stadig et stort antal platforme, der især bruges til Internet of Things-enheder, hvor .Net endnu ikke er tilgængelig.

Derfor arbejder Microsoft nu på et projekt, der skal gøre det muligt alligevel at køre en applikation skrevet i C# .Net på disse platforme. Projektet kaldet CoreRT går ud på at oversætte C#-applikationen til C++. Det skriver InfoWorld.

C++ findes til næsten alle hardwareplatforme og styresystemer til Internet of Things-enheder, så ved at oversætte, eller helt præcist transpile, til C++ vil applikationen derfor kunne afvikles på disse enheder.

Grundlæggende forskelle på programmeringssprog

Transpiling er imidlertid ikke ukompliceret, når der er tale om programmeringssprog, der har grundlæggende strukturelle forskelle, så koden ikke bare kan oversættes én-til-én.

I et blogindlæg skriver Microsofts Jeffrey T. Fritz, hvordan Microsoft blandt andet har arbejdet med at konvertere brugen af interfaces i C# til C++. Som det fremgår af koden til at håndtere dette, så er det kompliceret, men kan lade sig gøre ved at opstille en række støttefunktioner i transpileren.

En anden Microsoft-udvikler, Jan Kotas, uddyber, at Microsoft i princippet også kunne have oversat til C, men Microsoft har valgt C++, fordi det giver bedre debugging-muligheder.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (2)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Ivo Santos

Jeg tror nu også C++ er det rigtige valg, for hvordan havde de tænkt sig at håndtere klasser, og specielt arrays af klasser, det kan godt blive problematisk. At konvertere fra en pointer til en klasse og til måske en Handle i stil med win32 modellen, vil helt sikkert være temmelig besværligt, og så er der de der avancerede c++ /C# med nedarvning, altså hvor af en klasse en baseret på en moder klasse, hvordan gør man det i C sprog, det kunne vist godt blive temmelig 'uggly' kan jeg forestille mig.

  • 0
  • 1
#2 Søren Løvborg

Spilenginet Unity benytter samme teknik (i en proprietær udgave kaldet IL2CPP) til at køre C#-kode på en lang række platforme, herunder iOS og Android.

Mest kringlet bliver det med HTML 5/WebGL, hvor C# kompileres til IL (via Mono), der kompileres til C++ (via IL2CPP), der så kompileres til JavaScript (via Emscripten), hvorefter koden køres i browseres JS-engine – i enkelte benchmarks endda med bedre performance end den oprindelige C#/IL-kode under Mono.

  • 1
  • 0
Log ind eller Opret konto for at kommentere