Programavimas

„Microsoft“ „CoreRT“ paverčia C # „cross-platform C ++“

„Microsoft“ pamažu keičia .Net įrankių grandinę, kad būtų galima anksčiau kaupti programas platformose, kur nėra .Net įrankių grandinės.

Atvirojo kodo „CoreRT“ projektas atsisako naudoti .Net standartinį komandų eilutės vykdymo laiką (CLR) programoms paleisti. Vietoj to, jis generuoja C ++ kodą iš nurodyto .Net C # programos kodo, kurį tada galima sukompiliuoti ir susieti bet kurioje tikslinėje platformoje, palaikančioje C ++.

Įraše „Microsoft“ „AlphaGeek“ kūrimo tinklaraštyje „Microsoft“ trumpai išdėstė savo planus, kaip veiks „CoreRT“, kartu su jo kūrimo pagrindais.

„Jei aš tikrai noriu parašyti šiek tiek C # kodo ir kad jis„ tiesiog veiktų “naujame IoT įrenginyje, - rašė„ Microsoft “, - aš neturiu jokių galimybių, kol„ RyuJIT “nesugeba sugeneruoti mašininio kodo, veikiančio su tuo procesoriumi, ir Operacinė sistema." Kryžminiu būdu kompiliuodami C # į C ++, .Net kūrėjai gali pateikti savo programas, nelaukdami, kol .Net bus įdiegtas tam tikroje platformoje, sako „Microsoft“.

„Microsoft“ pažymėjo, kad per metus padarė reikšmingą procesą šio tikslo link, nors pripažino, kad užduotis yra lengviau pasakyti nei atlikti. Ryškiausia problema būdinga projektams, kurie apima vienos kalbos vertimą į kitą. C ++ ir .Net neturi tarpusavio atitikimo tarp jų funkcijų - sintaksės, duomenų struktūrų, kalbos logikos ir pan. Todėl „CoreRT“ turi elegantiškai susieti tam tikras .Net funkcijas į C ++.

Vienas kitas didelis projektas, kuris perkelia kalbą į C ++, kad pagreitintų jos vykdymą, yra „Nuitka“, kuris „Python“ programas paverčia C ++. „Nuitka“ yra tęstinis projektas, kuris susiduria su daugeliu tų pačių problemų, kaip ir „CoreRT“, ir galbūt dar sunkiau laiko jas derinti. Dėl dinamiško „Python“ pobūdžio sunku konvertuoti į anksčiau sudarytą kalbą, nes kiekviena kalbos konstrukcija yra objektas, turintis labai kintamų savybių. C # šiuo požiūriu yra mažiau problemiškas, nes jis naudoja statinį kintamųjų tipavimą, tačiau, kaip minėta pirmiau, vis tiek kyla daugybė sunkumų.

Yra daug apie „CoreRT“, kuris tiesiogiai priklauso nuo „Microsoft“ vykdomo pertvarkymo aplink atvirojo kodo ir populiarias ne „Microsoft“ technologijas. Tačiau „Microsoft“ visada buvo pragmatiška, kodėl taip daro, o čia pragmatiškumas yra apie tai, kaip .Net programos gali veikti platformose ir ekosistemose, kurios anksčiau jų nepalaikė.

„CoreRT“ teoriškai gali išplėsti .Net ekosistemos pasiekiamumą be „Microsoft“ nereikalaujančių pernelyg didelių pastangų. Paprasčiau parašyti vienkartinę transpiliacijos sistemą iš C # į C ++, nei sukurti bet kurio kito skaičiaus kitų tikslinių platformų vykdymo laiką. Žinoma, trečiosios šalys gali sukurti tokius vykdymo darbus, nes .Net dabar yra atviro kodo rūpestis. Tačiau „Microsoft“ planuoja rasti vieną būdą, kaip juos ir save išgelbėti.