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

18. oktober 2016 kl. 10:592
Microsofts CoreRT-projekt skal gøre det muligt at køre applikationer skrevet i C# på platforme, hvor .Net endnu ikke findes.
Artiklen er ældre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

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.

Artiklen fortsætter efter annoncen

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.

2 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
2
19. oktober 2016 kl. 02:30

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
18. oktober 2016 kl. 14:04

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.