במאמץ להחליף את ה-C++ המכובד אך האיטי, החוקרים של גוגל הציגו שפת תכנות "ניסיוני" חדשה לגמרי בשם Carbon.
Carbon יכולה לשמש כשפת יורשת של C++, כזו המספקת נקודת התחלה פשוטה למפתחים לשפה חדשה יותר שמתייחסת למושגי פיתוח עכשוויים כמו בטיחות זיכרון וגנריות.
זה יהיה דומה לאופן שבו מיקרוסופט בנתה את Typescript כדי לעדכן JavaScript ו-Kotlin כדי לחזק את החולשות ב-Java.
גוגל פיתחה מספר שפות תכנות לאורך השנים, שחלקן זכו למוניטין ובולטות משמעותית.
לדוגמה, Golang (או סתם Go) פותחה כדי להקל על יצירת שרתים ומערכות מבוזרות, ולאחר מכן אומצה על ידי הציבור הרחב.
החץ שפת תכנות, שנוצר כתחליף ל-JavaScript, לא הפך ידוע עד השקת Flutter.
צ'נדלר קארות', עובד גוגל, הציג את הרעיון שלו לשפת תכנות חדשה בשם Carbon ב-19 ביולי 2022, בכנס Cpp North בטורונטו, לפי קונור הוקסטרה, שנכחו והקליטו את השקופיות.
על מנת לקבוע את התרחיש, קארות' הדגים כיצד לכמה משפות התכנות האהובות ביותר של ימינו היו צאצאים המאפשרים למפתחים להיות פרודוקטיביים במהירות וגם להפיק תועלת מעיצוב שפה עכשווי.
נתחיל בהיכרות כללית של שפת התכנות Carbon, כולל תכונותיה, מטרת המצאתה של גוגל ועוד.
מבוא לשפת תכנות פחמן
ב-19 ביולי 2022, גוגל חשפה את Carbon כשפת התכנות החדשה ביותר שיצרה. זה נועד להחליף את C++ באופן ניסיוני.
תודה מערכת גנרית, מה שמבטל את הצורך לבדוק שוב את הקוד עבור כל מופע, Carbon ייבנה על בסיס של מושגי תכנות מודרניים.
עד סוף השנה, התכנון מתכנן לספק גרסה תפעולית בסיסית (גרסה 0.1).
שלמות הזיכרון היא מרכיב חיוני שחסר ב-C++. אחד המקורות העיקריים לליקוי אבטחה הוא בעיות גישה לזיכרון.
פיתוח של בדיקות גבולות דינמיות, מעקב גדול יותר אחר מצבים לא מאותחלים ומצב בניית ברירת מחדל יסודי של ניפוי באגים הם כולם מטרות של צוות Carbon. היוצרים מתכוונים ליצור תת-קבוצה מאובטחת של Carbon לאורך זמן.
עם זאת, להלן כמה מאפיינים מכריעים של שפת התכנות החדשה:
- כדי לתת שם לסוגים, השתמש בביטויים.
- גנריות חזקות עם בדיקות הגדרה
- סוגים מבצעים ממשקים במיוחד
- ביטויי מבוא ודקדוק בסיסי
- מצביעים מאפשרים גישה בלתי מוגבלת ומוטציה.
- ערכים עבור פרמטרי קלט של פונקציה הם לקריאה בלבד.
- מרחב השמות הבסיסי הוא החבילה.
- ניתן לייבא ממשקי API באמצעות שמות החבילות שלהם.
- שיטה מוכרזת באמצעות פרמטר אובייקט מפורש.
- השיעורים הם סופיים כברירת מחדל; יש רק ירושה אחת
תכונות של פחמן
מודרני ומתפתח
- השדרוגים בין גרסאות Carbon הם פשוטים ומבוססים על כלים.
- בסיס שפה חזק, במיוחד אם השתמשת ב-C++, ופשוט ללמידה
- יסודות בטוחים יותר וגישה שלב אחר שלב לתת-קבוצה בטוחה בזיכרון
מברכים את קהילת הקוד הפתוח
- קהילה השואפת להיות חמה, מקבלת ומזמינה
- מטרותיה וסדרי העדיפויות שלה הם ממשל מובחן וחזק
- אסטרטגיית הכל באחד עם מהדר, ספריות, תיעוד, כלים, ניהול חבילות ועוד
מהיר ותואם עם C++
- עבודה יחד עם קוד C ++ כבר יש לך, כולל ירושה ותבניות
- עם LLVM, ביצועים דומים ל-C++ וגישה ברמה נמוכה לביטים וכתובות
- מבנים מהירים וניתנים להרחבה ותואמים למערכות ה-C++ הקיימות שלך
מדוע גוגל בנתה את שפת התכנות Carbon?
תוכנה קריטית לביצועים ממשיכה להיכתב בעיקר ב-C++, שיש לה בסיסי קוד והשקעות אדירים ומתרחבים.
עם זאת, היא מתקשה להתקדם ולעמוד בדרישות של מפתחים כאמור לעיל, בעיקר בשל צבירת חובות טכנולוגיים של שנים.
קשה מאוד לשפר בהדרגה את C++ בגלל החוב הטכני שצבר כמו גם קשיים בתהליך ההתפתחות שלו.
הגישה האידיאלית לפתרון בעיות אלו היא להתחיל עם בסיס שפה חזק, כגון מערכת גנרית עכשווית, מבנה קוד מודולרי ותחביר עקבי ופשוט, במקום לרשת ישירות את המסורת של C או C++.
Go, Swift, Kotlin, Rust ועוד הרבה שפות עכשוויות אחרות כבר מציעות חווית פיתוח יוצאת דופן. מפתחים שמסוגלים להשתמש באחת מהשפות הנוכחיות הללו צריכים לעשות זאת.
למרבה הצער, אימוץ והגירה מ-C++ נפגעים קשות על ידי העיצובים של שפות אלה. מכשולים אלה כוללים תקורה של ביצועים ושינויים בעיצוב האידיומטי של התוכנה.
פחמן אינו ניסיון לשפר בהדרגה את C++; אלא, זוהי אסטרטגיית שפה ממשיכה. ההתמקדות שלו היא ב-C++ יכולת פעולה הדדית, כמו גם קבלה והעברה נרחבת עבור מפתחים ובסיסי קוד המשתמשים כיום ב-C++.
שפת תחליף C++ חייבת לכלול:
- ביצועים דומים ל-C++ הם מאפיין מכריע עבור מפתחים.
- עקומת למידה ניתנת לניהול ורמת היכרות למתכנתי C++
- הגירה ניתנת להרחבה וכוללת תרגום קוד אידיומטי ממקור למקור C++.
- אקספרסיביות ותמיכה דומים בארכיטקטורה ובעיצוב של תוכנות עדכניות.
- יכולת פעולה הדדית עם C++ שהיא חלקה ודו-כיוונית, המאפשרת לכל ספרייה לאמץ את Carbon ללא צורך לנייד את שאר הערימה.
בעזרת אסטרטגיה זו, גוגל מוסיפה לאקוסיסטם שכבר קיים עבור C++ ומשלבת השקעות נוכחיות, בסיסי קוד וקהילות פיתוח.
כמה שפות אימצו גישה זו עבור מערכות אקולוגיות שונות, ו-Carbon מבקש לשחק פונקציה דומה ל-C++ במצבים אלה:
- ג'אווה – קוטלין
- JavaScript - TypeScript
- C++ - פחמן
C++ VS קוד פחמן
ל-Carbon צריכה להיות עקומת למידה נמוכה אם אתה כבר מפתח C++. הוא מורכב מקבוצה קבועה של מבנים דקדוקיים שאמורים להישמע טבעיים ולהיות פשוטים לקריאה והבנה.
דוגמה לקוד C++:
קוד פחמן זה מתאים ל:
פחמן נגד חלודה
שפה עכשווית נוספת שתוכננה במפורש לעמוד בדרישות של יישומי ביצועים בטוחים בזיכרון נקראת Rust.
אז למה לא פשוט להשתמש בחלודה?
בעוד שיש הטוענים שרוסט, שהחל כפרויקט מוזילה ולאחר מכן צמח לקהילת קהל נכבדה, הוא יורש של C++, קארות' מטיל ספק אם ההקבלה עדיין תקפה.
Rust היא ללא ספק שפה פנטסטית שאפשר להתחיל איתה פרויקט חדש, אבל מכיוון שהיא חסרה "התפעול דו-כיווני" של שפות כמו Java ו-Kotlin, זה מאתגר לעבור אליה בהדרגה.
קארות' נתן הרצאה ב-CPP North ועודד אנשים שכבר השתמשו ב-Rust להמשיך לעשות זאת. מפתחים שכבר יש להם בסיסי קוד C++ גדולים שקשה להמיר ל-Rust צריכים להשתמש ב-Carbon.
בפרט, פחמן הוא מה שקראת' כינה "שפת יורשת", אשר בנויה על גבי מערכת אקולוגית קיימת, במקרה זה C++.
לשם כך, Carbon אמור להיות תואם לחלוטין לקוד C++ הנוכחי, גם אם יש לו מטרות רבות עם Rust, כמו סיוע למתכנתים ביצירת "יישומים קריטיים לביצועים".
בנוסף, הוא נועד להפוך את המעבר מ-C++ ל-Carbon לפשוט ככל האפשר.
סיכום
לבסוף, יוצרי שפת פחמן התאמצו לשים לב לתהליך היצירה. קוד הפרויקט זמין לבקשת ומאוחסן בגלוי ב GitHub, ותרבותה מוגדרת כמכילה ופתוחה הן לאזרחים פרטיים והן למגזר ה-IT.
צוות Carbon חשב ש-Carbon צריך להיות פרויקט אוטונומי המונע על ידי הקהילה ולא רק פרויקט שמתודלק על ידי גוגל כדי להתפתח בעתיד.
קארות' הוסיף כי למרות התעניינות מצד מספר עסקי IT, הרעיון הזה עדיין בשלב הניסוי.
השאירו תגובה