חיה ובועטת: ++C רלוונטית מתמיד ב-2021

המקום של ++C לא נעלם, ותקנים חדשים של השפה לצד הבנה שהיתרונות שהשפה מציעה נשארו חשובים - משאירים את השפה פופולרית ובשימוש נרחב

12/09/2021 12:22
אמיר קירש, בית הספר למדעי המחשב, האקדמית תל אביב-יפו. צילום: אייל וייס

בשבוע שעבר התקיים במכללה האקדמית ת"א-יפו כנס בן יומיים בשם Core C++ 2021. אירוע כזה מעלה מספר שאלות:

  1. איך מנהלים כנס תחת מגבלות קורונה?
  2. עדיין מפתחים ב-++C?
  3. ומה יש עוד לחדש בתחום?

השאלה הראשונה היא די פשוטה: הכנס התקיים תחת מגבלות התו הירוק ובנוסף נערכו בדיקות קורונה מהירות לכל באי הכנס. כולם יצאו שליליים. ממשאל חלקי נראה שכל המשתתפים, כ-230 במספר, היו מחוסנים ב-2 או 3 מנות חיסון. כנראה שמי שמאמין ב-++C מאמין גם בחיסונים.

עדיין מפתחים ב-++C?

מסתבר שכן.

++C היא אמנם שפה עם ותק של כ-35 שנים בתעשייה, אבל עדיין חיה ובועטת. לפני כ-15-20 שנה כבר התחילו להספיד את השפה, כאשר שפות כמו Java ו-#C תפסו את מקומן בשוק. אבל המקום של ++C לא נעלם, ותקנים חדשים של השפה לצד הבנה שהיתרונות שהשפה מציעה נשארו חשובים – משאירים את השפה פופולרית ובשימוש נרחב. פרויקטים חדשים במגוון רחב של תעשיות ותחומים נכתבים ב-++C: מתעשיית הרכב ועד לפינטק, מכשור רפואי, משחקים ומנועי אנימציה, תקשורת, מודלים של למידה עמוקה, תשתית לשפות פיתוח עיליות ועוד.

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

אז מה יש עוד לחדש בתחום?

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

ההתפתחות של ++C במהלך השנים, באמצעות ועדת התקינה של השפה – הISO C++ Committee, נעשית בזהירות רבה, כאשר ההצדקה לכל תכונה חדשה שמוצעת לשפה נבדקת בקפידה. עם זאת, השפה מתפתחת עם תכונות חדשות ומשמעותיות – לתקן C++20, למשל, נכנסו ה-"Big Four":

Modules – שיטה חדשה לניהול יחידות קומפילציה שונות, שבאה להחליף את השיטה הישנה של קובצי header ושימוש ב-include# – באופן שיפשט ניהול פרוייקט ++C ויקצר זמני קומפילציה.

Ranges – תחליף מסוים לשימוש באיטורטורים שמאפשר כתיבת קוד פשוט יותר, לצד יכולות חזקות של שרשור פעולות על מבני נתונים ועל views.

Concepts – המלך החדש של Duck Typing ב-++C – הגדרת interfaces סטטיים על פי הדרישות שהטיפוס נדרש לקיים, תחליף ראוי למנגנון ה-SFINAE האהוב ושנוא בו-זמנית על רבים.

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

אז לאן ממשיכים מכאן?

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

 

הכותב הינו מרצה בבית הספר למדעי המחשב באקדמית תל אביב-יפו, ממארגני כנס ++Core C וכן משמש כ-Developers Advocate בחברת אינקרדיבילד.

תגובות

(0)

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

אין לשלוח תגובות הכוללות דברי הסתה, דיבה, וסגנון החורג מהטעם הטוב

אירועים קרובים