CoreRT של מיקרוסופט הופך את C # ל- C ++ חוצה פלטפורמות

מיקרוסופט משנה לאט את שרשרת הכלים של .Net כדי לאפשר אוסף מבעוד מועד ליישומים בפלטפורמות שבהן אין שרשרת כלים של .Net.

פרויקט CoreRT בקוד פתוח מבטל את השימוש בשורת הפקודה Runtime (CLR) של .Net להפעלת יישומים. במקום זאת, הוא מייצר קוד C ++ מקוד אפליקציה .Net C # נתון, שאותו ניתן לאסוף ולקשר בכל פלטפורמת יעד שתומכת ב- C ++.

בפוסט שפורסם בבלוג הפיתוח AlphaGeek של מיקרוסופט, פירסמה מיקרוסופט בקצרה את תוכניותיה כיצד CoreRT יעבוד, יחד עם נימוקיה ליצירתו.

"אם אני באמת רוצה לכתוב קוד C # כלשהו ושהוא 'פשוט עובד' על מכשיר IoT חדש", כתבה מיקרוסופט, "אין לי שום אפשרות עד שה- RyuJIT מסוגל ליצור קוד מכונה שעובד עם אותו מעבד ו מערכת הפעלה." על ידי קומפילציה של C # ל- C ++, מפתחי .Net יכולים לספק את היישומים שלהם ללא צורך להמתין לפריסת .Net בפלטפורמה נתונה, אומרת מיקרוסופט.

מיקרוסופט ציינה כי היא עשתה תהליך משמעותי כלשהו למטרה זו במהלך השנה, אם כי היא הודתה שהמשימה קלה יותר ממה שנעשתה. הבעיה הבולטת ביותר נפוצה בפרויקטים הכוללים העברת שפה לשפה אחרת. ל- C ++ ו- .Net אין התכתבויות אחד לאחד בין התכונות שלהם - התחביר, מבני הנתונים, לוגיקת השפה וכן הלאה. לכן, על CoreRT למפות באלגנטיות תכונות .Net מסוימות ל- C ++.

פרויקט מרכזי נוסף שמעביר שפה ל- C ++ כדי לזרז את ביצועה הוא Nuitka, הממיר תוכניות Python ל- C ++. Nuitka הוא פרויקט מתמשך שמתמודד עם הרבה מאותן נושאים כמו CoreRT ויש לו אולי זמן קשה אפילו יותר ליישב ביניהם. האופי הדינמי של פייתון מקשה על ההמרה לשפה מורכבת מראש, מכיוון שכל קונסטרוקציה בשפה היא פוטנציאלית אובייקט בעל מאפיינים ניתנים לשינוי. C # פחות בעייתי מנקודת מבט זו, מכיוון שהוא משתמש בהקלדה סטטית עבור משתנים, אך כפי שצוין לעיל, הוא עדיין מגיע עם שורה של קשיים.

יש הרבה על CoreRT שיורד ישירות מההתאמה השוטפת של מיקרוסופט סביב קוד פתוח וטכנולוגיות פופולריות שאינן מיקרוסופט. אבל מיקרוסופט תמיד הייתה פרגמטית לגבי הסיבה שהיא עושה זאת, וכאן הפרגמטיות היא לראות כיצד יישומי .Net יכולים לפעול בפלטפורמות ובמערכות אקולוגיות שבעבר לא תמכו בהן.

תיאורטית CoreRT יכולה להרחיב את טווח ההגעה של המערכת האקולוגית של .Net מבלי שמיקרוסופט תצטרך להתאמץ יתר על המידה. קל יותר לכתוב מערכת שינוע חד פעמית מ- C # ל- C ++ מאשר ליצור זמן ריצה למספר פלטפורמות יעד אחרות. בטח, צדדים שלישיים יכולים ליצור זמן הפעלה כזה הודות לכך ש- NET הוא כעת דאגה למקור פתוח. אבל התוכנית של מיקרוסופט היא למצוא דרך אחת להציל אותם - ואת עצמה - את הצרות.