Programiranje

Microsoftov CoreRT pretvori C # v medplatformni C ++

Microsoft počasi spreminja verigo orodij .Net, da omogoča predčasno prevajanje za programe na platformah, kjer orodjarnice .Net ni.

Odprtokodni projekt CoreRT odpravlja uporabo standardnega izvajalnega okolja ukazne vrstice (CLR) .Net za zagon aplikacij. Namesto tega generira kodo C ++ iz dane kode aplikacije .Net C #, ki jo je nato mogoče zbrati in povezati na kateri koli ciljni platformi, ki podpira C ++.

V objavi na Microsoftovem razvojnem blogu AlphaGeek je Microsoft na kratko predstavil svoje načrte, kako bo CoreRT deloval, skupaj z utemeljitvijo za njegovo ustvarjanje.

"Če resnično želim napisati nekaj kode C # in naj" samo deluje "na novi napravi IoT," je zapisal Microsoft, "nimam nobene možnosti, dokler RyuJIT ne bo mogel ustvariti strojne kode, ki deluje s tem procesorjem operacijski sistem. " Z navzkrižnim prevajanjem C # v C ++ lahko razvijalci .Net nato dostavijo svoje aplikacije, ne da bi morali čakati, da se .Net uvede na določeni platformi, pravi Microsoft.

Microsoft je opozoril, da je tekom leta naredil pomemben postopek za dosego tega cilja, čeprav je priznal, da je to nalogo lažje reči kot narediti. Najvidnejša težava je skupna projektom, ki vključujejo prevajanje enega jezika v drugega. C ++ in .Net nimata medsebojne korespondence med svojimi značilnostmi - sintakso, podatkovnimi strukturami, jezikovno logiko itd. Zato mora CoreRT nekatere elemente .Net elegantno preslikati v C ++.

Še en velik projekt, ki jezik pretvori v jezik C ++ za pospešitev njegovega izvajanja, je Nuitka, ki pretvori programe Python v jezik C ++. Nuitka je stalen projekt, ki se sooča z enakimi težavami kot CoreRT in jih morda še težje usklajuje. Pythonova dinamična narava otežuje pretvorbo v predčasno sestavljeni jezik, saj je vsaka konstrukcija v jeziku potencialno predmet z zelo spremenljivimi lastnostmi. C # je s tega stališča manj problematičen, saj za spremenljivke uporablja statično tipkanje, vendar, kot je navedeno zgoraj, ima še vedno številne težave.

O CoreRT je veliko, kar izhaja neposredno iz Microsoftove stalne preusmeritve okoli odprtokodnih in priljubljenih ne-Microsoftovih tehnologij. Toda Microsoft je bil vedno pragmatičen glede tega, zakaj to počne, tu pa gre za to, kako lahko .Net aplikacije delujejo na platformah in v ekosistemih, ki jih prej niso podpirali.

CoreRT lahko teoretično razširi doseg ekosistema .Net, ne da bi se Microsoftu bilo treba preveč truditi. Lažje je napisati sistem za enkratno prevajanje iz C # v C ++, kot pa ustvariti čas izvajanja za poljubno število drugih ciljnih platform. Seveda lahko tretje osebe ustvarijo takšne izvedbe zahvaljujoč .Netu, ki je zdaj odprtokodna skrb. Toda Microsoftov načrt je najti en način, da jih reši - in tudi sam - težave.

$config[zx-auto] not found$config[zx-overlay] not found