מיקרוסופט מתחילה לדבר על שפת התכנות של הדור הבא שלה, C# לתכנות מערכות

סמל זמן קריאה 3 דקות לקרוא


קוראים עוזרים לתמוך ב-MSpoweruser. אנו עשויים לקבל עמלה אם תקנה דרך הקישורים שלנו. סמל טיפים

קרא את דף הגילויים שלנו כדי לגלות כיצד תוכל לעזור ל-MSPoweruser לקיים את צוות העריכה קראו עוד

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

להלן 6 המאפיינים החשובים של השפה,

) הבנה לכל החיים. ל-C++ יש RAII, הרס דטרמיניסטי והקצאה יעילה של אובייקטים. C# ו-Java משדלים מפתחים להסתמך יותר מדי על ערימת ה-GC, ומציעות רק תמיכה "רופפת" להרס דטרמיניסטי באמצעות IDisposable. חלק ממה שהצוות שלי עושה זה להמיר באופן קבוע תוכניות C# לשפה החדשה הזו, וזה לא נדיר שאנחנו נתקלים ב-30-50% זמן בילוי ב-GC. עבור שרתים, זה הורג את התפוקה; עבור לקוחות, זה מדרדר את החוויה, על ידי הזרקת חביון לאינטראקציה. גנבנו דף מ-C++ - בתחומים כמו הפניות ל-rvalue, סמנטיקה של תנועה, הרס, הפניות / השאלות - ובכל זאת שמרנו על האלמנטים הדרושים של בטיחות, ומיזגנו אותם עם רעיונות משפות פונקציונליות. זה מאפשר לנו להקצות אובייקטים באגרסיביות, להרוס באופן דטרמיניסטי ועוד.

2) הבנת תופעות לוואי. זוהי ההתפתחות של מה שפרסמנו ב-OOPSLA 2012, המעניקה לך אלמנטים של C++ const (אבל שוב עם בטיחות), יחד עם אי-שינוי ובידוד מהשורה הראשונה.

3) תכנות אסינכרון בקנה מידה. הקהילה הייתה 'עגולה' בעניין הזה, כלומר האם להשתמש בקורוטינות חוסמות המשך או קלות משקל. זה כולל C# אבל גם כמעט כל שפה אחרת על הפלנטה. החידוש העיקרי כאן הוא מערכת סוגים ניתנת להרכבה, אשר אגנוסטית למודל הביצוע, ויכולה למפות ביעילות לכל אחת מהן. זה יהיה מתנשא לטעון שיש לנו את הדרך הנכונה היחידה לחשוף את הדברים האלה, אבל עם ניסיון עם גישות רבות אחרות, אני אוהב את המקום שבו נחתנו.

4) תכנות מערכות בטוחות בסוג. נהוג לטעון שעם בטיחות סוג מגיע אובדן ביצועים מובנה. נכון שבדיקת גבולות אינה ניתנת למשא ומתן, ושאנחנו מעדיפים בדיקת הצפה כברירת מחדל. זה מפתיע מה מהדר אופטימיזציה טוב יכול לעשות כאן, לעומת קומפילציה של JIT. (וצריך רק לבחון כלאחר יד כמה עלוני אבטחה אחרונים כדי לראות מדוע יש לתכונות אלו יתרונות.) תחומים אחרים כוללים לאפשר לך לעשות יותר מבלי להקצות. כמו שיש לך ממשקי API מבוססי למבדה שניתן לקרוא להם עם אפס הקצאות (ולא השניים הרגילים: אחד לנציג, אחד לתצוגה). ויכולת לגזור בקלות מערכי משנה ותתי מחרוזות מבלי להקצות.

5) מודל שגיאה מודרני. זה עוד אחד שהקהילה לא מסכימה לגביו. בחרנו את מה שאני מאמין שהוא הנקודה המתוקה: חוזים בכל מקום (תנאים מוקדמים, תנאים פוסט-תנאים, אי-וריאנטים, קביעות וכו'), כשל מהיר כמדיניות ברירת המחדל, חריגים לכשל הדינמי הנדיר (ניתוח, קלט/פלט וכו'), והקלדת חריגים רק כאשר אתה בהחלט צריך חריגים עשירים. הכל משולב במערכת הטיפוס בצורה מחלקה 1, כך שתקבל את כל התנהגות ההקלדה הנכונה הדרושה כדי להפוך אותה לבטוחה.

6) מסגרות מודרניות. זהו דלי מקיף שמכסה דברים כמו LINQ אסינכרון, תמיכת מונים משופרת שמתחרה באיטרטורים C++ בביצועים ואינה דורשת שיגור ממשק כפול לחילוץ אלמנטים וכו'. למען האמת, זה התחום שיש לנו הרשימה הגדולה ביותר של "תכונות שתוכננו אך עדיין לא יושמו", המשתרעת על דברים כמו void-as-a-1st-class-type, non-null types, תכונות, הקלדת אפקט מחלקה 1 ועוד. אני מצפה שיהיו לנו כמה כאלה במחסום אמצע 2014 שלנו, אבל לא את כולם.

קרא עוד מהקישור כאן.

עוד על הנושאים: c#, מפתחים, מיקרוסופט