Προγραμματισμός

Το CoreRT της Microsoft μετατρέπει το C # σε cross-platform C ++

Η Microsoft αλλάζει αργά την αλυσίδα εργαλείων .Net για να επιτρέπει εκ των προτέρων συλλογή για εφαρμογές σε πλατφόρμες όπου δεν υπάρχει .Net εργαλειοθήκη.

Το έργο ανοιχτού κώδικα CoreRT καταργεί τη χρήση του τυπικού Command Line Runtime (CLR) .Net για την εκτέλεση εφαρμογών. Αντ 'αυτού, δημιουργεί κώδικα C ++ από έναν δεδομένο κώδικα .Net C # app, ο οποίος μπορεί στη συνέχεια να μεταγλωττιστεί και να συνδεθεί σε οποιαδήποτε πλατφόρμα στόχου που υποστηρίζει C ++.

Σε μια ανάρτηση στο blog ανάπτυξης της AlphaGeek της Microsoft, η Microsoft παρουσίασε εν συντομία τα σχέδιά της για το πώς θα λειτουργήσει το CoreRT, μαζί με τη λογική της για τη δημιουργία του.

"Αν θέλω πραγματικά να γράψω κάποιο C # κώδικα και να το" δουλέψω "σε μια νέα συσκευή IoT", έγραψε η Microsoft, "Δεν έχω καμία επιλογή έως ότου το RyuJIT είναι σε θέση να δημιουργήσει κώδικα μηχανής που να λειτουργεί με αυτόν τον επεξεργαστή και λειτουργικό σύστημα." Με τη διασταύρωση C # σε C ++, οι προγραμματιστές .Net μπορούν στη συνέχεια να παραδώσουν τις εφαρμογές τους χωρίς να χρειάζεται να περιμένουν το .Net να αναπτυχθεί σε μια δεδομένη πλατφόρμα, λέει η Microsoft.

Η Microsoft σημείωσε ότι είχε πραγματοποιήσει κάποια σημαντική διαδικασία προς αυτόν τον στόχο κατά τη διάρκεια του έτους, αν και αναγνώρισε ότι η εργασία είναι πιο εύκολη από ό, τι γίνεται. Το πιο εμφανές πρόβλημα είναι κοινό σε έργα που περιλαμβάνουν τη μεταφορά μιας γλώσσας σε άλλη. Τα C ++ και .Net δεν έχουν αντιστοίχιση μεταξύ των χαρακτηριστικών τους - τη σύνταξη, τις δομές δεδομένων, τη λογική της γλώσσας και ούτω καθεξής. Επομένως, το CoreRT πρέπει να χαρτογραφήσει κομψά ορισμένες δυνατότητες .Net σε C ++.

Ένα άλλο μεγάλο έργο που μεταδίδει μια γλώσσα σε C ++ για να επιταχύνει την εκτέλεση είναι το Nuitka, το οποίο μετατρέπει τα προγράμματα Python σε C ++. Το Nuitka είναι ένα συνεχιζόμενο έργο που αντιμετωπίζει πολλά από τα ίδια ζητήματα με το CoreRT και ίσως έχει ακόμη πιο δύσκολο χρόνο να τα συνδυάσει. Η δυναμική φύση του Python καθιστά δύσκολη τη μετατροπή σε μια μεταγλωττισμένη γλώσσα στο παρελθόν, καθώς κάθε κατασκευή στη γλώσσα είναι δυνητικά ένα αντικείμενο με ιδιαίτερα μεταβλητές ιδιότητες. Το C # είναι λιγότερο προβληματικό από αυτή την άποψη, καθώς χρησιμοποιεί στατική πληκτρολόγηση για μεταβλητές, αλλά όπως σημειώνεται παραπάνω, εξακολουθεί να έρχεται με πολλές δυσκολίες.

Υπάρχουν πολλά για το CoreRT που απορρέει απευθείας από τη συνεχιζόμενη ευθυγράμμιση της Microsoft γύρω από το ανοιχτό λογισμικό και τις δημοφιλείς τεχνολογίες εκτός της Microsoft. Αλλά η Microsoft ήταν πάντα ρεαλιστική για το γιατί το κάνει αυτό, και εδώ ο ρεαλισμός είναι να δει πώς. Οι καθαρές εφαρμογές μπορούν να εκτελούνται σε πλατφόρμες και σε οικοσυστήματα που προηγουμένως δεν τα υποστήριξαν.

Το CoreRT μπορεί θεωρητικά να διευρύνει την εμβέλεια του οικοσυστήματος .Net χωρίς να χρειάζεται η Microsoft να καταβάλει αδικαιολόγητη προσπάθεια. Είναι ευκολότερο να γράψετε ένα σύστημα μεταβίβασης εφάπαξ από C # σε C ++ από το να δημιουργήσετε χρόνους εκτέλεσης για οποιονδήποτε αριθμό άλλων πλατφορμών στόχων. Σίγουρα, τρίτα μέρη μπορούν να δημιουργήσουν τέτοιους χρόνους εκτέλεσης χάρη στο .Net που αποτελεί ζήτημα ανοιχτού κώδικα. Αλλά το σχέδιο της Microsoft είναι να βρει έναν τρόπο για να τους σώσει - και τον εαυτό του - το πρόβλημα.