منذ إنشائها ، كانت C ++ هي الخيار الأول لبناء تطبيقات كثيفة الأداء. لكن اللغة لا تزال تحتوي على بعض الممارسات التي عفا عليها الزمن بسبب "التصميم من قبل اللجنة".
في 19 يوليو 2022 ، خلال مؤتمر CPP North C ++ في تورنتو ، قدم مهندس Google Chandler Carruth مادة الكربون.
اكتشف ما هو الكربون وكيف ينوي أن يحل محل C ++.
ما هو الكربون؟
طور مهندسو Google ملف كربون لغة البرمجة لمعالجة أوجه القصور في C ++.
كثير الموجودة لغات مثل Golang والصدأ موجودان بالفعل يعكسان أداء C ++ دون عيوبه. لسوء الحظ ، تمثل هذه اللغات حواجز كبيرة أمام ترحيل قواعد رموز C ++ الحالية.
يهدف الكربون إلى أن يكون ما هو TypeScript لجافا سكريبت، و Kotlin تعني Java. إنها ليست بديلاً ، ولكنها لغة لاحقة مصممة حول إمكانية التشغيل البيني مع C ++. وهي تهدف إلى اعتماد وترحيل على نطاق واسع لقواعد البرمجة والمطورين الحاليين.
الميزات الرئيسية للكربون
تتضمن بعض الميزات الرئيسية لـ Carbon إمكانية التشغيل البيني C ++ والأدوية الحديثة وسلامة الذاكرة.
إمكانية التشغيل البيني مع C ++
يهدف Carbon إلى توفير منحنى تعليمي لطيف لمطوري C ++ ، مع مجموعة قياسية ومتسقة من تراكيب اللغة.
على سبيل المثال ، خذ كود C ++ هذا:
// C ++:
#تضمن
#تضمن
#تضمن
#تضمنهيكلدائرة {
يطفو ص ؛
};فارغPrintTotalArea(الأمراض المنقولة جنسيا::يولد
الدوائر) {
يطفو المنطقة = 0;إلى عن على (مقدار ثابت دائرة & ج: دوائر) {
المنطقة + = M_PI * c.r * c.r ؛
}الأمراض المنقولة جنسيا::كوت << "المساحة الإجمالية:" << منطقة << إندل;
}تلقاءيرئيسي(int أرجك شار** ARGV) ->; int {
الأمراض المنقولة جنسيا::المتجهالدوائر = {{1.0}, {2.0}};
// يبني ضمنيًا "الامتداد" من "المتجه".
PrintTotalArea (دوائر) ؛
إرجاع0;
}
تُترجم إلى الكربون ، تصبح:
// كربون:
حزمة الهندسة api
يستوردرياضيات;صف دراسيدائرة{
فار ص: f32 ؛
}الجبهة الوطنية PrintTotalArea(الدوائر: شريحة (دائرة)) {
فار المساحة: f32 = 0;لـ (c: دائرة في دوائر) {
المنطقة + = رياضيات.Pi * c.r * c.r ؛
}مطبعة("المساحة الإجمالية: {0}"، منطقة)؛
}الجبهة الوطنية رئيسي() ->; i32 {
// مصفوفة ذات حجم ديناميكي ، مثل `std:: vector`.
فار الدوائر: مجموعة مصفوفة(دائرة) = ({.r = 1.0} ، {.r = 2.0});
// ينشئ "شريحة" ضمنيًا من "مصفوفة".
PrintTotalArea (دوائر) ؛
إرجاع0;
}
يمكنك أيضًا ترحيل مكتبة C ++ واحدة إلى Carbon داخل أحد التطبيقات أو إضافة رمز كربون جديد أعلى كود C ++ الحالي. فمثلا:
// كود C ++ المستخدم في كل من Carbon و C ++:
هيكلدائرة {
يطفو ص ؛
};// تعريض الكربون لدالة لـ C ++:
حزمة الهندسة api ؛
يستورد مكتبة CPP "دائرة.h "؛
يستورد الرياضيات.الجبهة الوطنية PrintTotalArea(الدوائر: شريحة (Cpp. دائرة)){
منطقة فار: f32 = 0;إلى عن على (ج: Cpp. دائرة في دوائر) {
المنطقة + = الرياضيات. Pi * c.r * c.r ؛
}طباعة ("المساحة الإجمالية: {0}"، منطقة)؛
}// C ++ استدعاء الكربون:
#تضمن
#تضمن "دائرة. h"
#تضمن "geometry.carbon.h"تلقاءيرئيسي(int أرجك شار** ARGV) ->; int {
الأمراض المنقولة جنسيا::المتجهالدوائر = {{1.0}, {2.0}};
// تدعم "شريحة" Carbon البناء الضمني من `std:: vector` ،
// مشابه لـ `std:: span`.
الهندسة:: PrintTotalArea (الدوائر) ؛
إرجاع0;
}
نظام وراثي حديث
يوفر الكربون نظامًا حديثًا للأدوية الجنسية مع تعريفات محددة. لكنه لا يزال يدعم قوالب الاشتراك من أجل التشغيل البيني السلس لـ C ++.
يوفر نظام الأدوية هذا الكثير من المزايا لقوالب C ++:
- يتحقق النوع من التعريفات العامة. هذا يتجنب تكلفة وقت الترجمة لإعادة التحقق من التعريفات لكل مثيل.
- واجهات قوية ومحددة. تعمل هذه على تقليل التبعيات العرضية على تفاصيل التنفيذ وإنشاء عقد أكثر وضوحًا.
سلامة الذاكرة
يسعى Carbon إلى معالجة سلامة الذاكرة ، وهي مشكلة رئيسية تعاني منها C ++ ، من خلال:
- تتبع الحالات غير المهيأة بشكل أفضل ، وزيادة إنفاذ التهيئة ، والتشديد ضد أخطاء التهيئة.
- تصميم واجهات برمجة التطبيقات والتعابير الأساسية لدعم عمليات التحقق الديناميكية من الحدود في تصحيح الأخطاء والبنيات القوية.
- وجود وضع بناء تصحيح أخطاء افتراضي يكون أكثر شمولاً من أوضاع البناء الحالية لـ C ++.
الشروع في استخدام الكربون
يمكنك استكشاف الكربون الآن عن طريق التحقق من التعليمات البرمجية واستخدام مستكشف الكربون:
# تثبيت bazelisk باستخدام Homebrew.
$ brew install bazelisk# تثبيت Clang / LLVM باستخدام البيرة.
# لا يتم إنشاء العديد من إصدارات Clang / LLVM بالخيارات التي نعتمد عليها.
$ brew install llvm
$ يصدّر PATH = "$ (المشروب --prefix llvm) / الصندوق:$ {المسار}"# تنزيل كود الكربون.
بوابة $ استنساخ https://github.com/carbon-language/carbon-lang
$ قرص مضغوط الكربون لانج
# بناء وتشغيل المستكشف.
$ bazel run // explorer - ./explorer/testdata/مطبعة/format_only.carbon
تكشف خارطة طريق الكربون عن التفكير طويل الأمد
وفقًا لخارطة طريق الكربون ، ستعلن Google عن التجربة بإصدار نسخة عمل أساسية (0.1) بحلول نهاية عام 2022. وهم يخططون لمتابعة ذلك بإصدار 0.2 في 2023 وإصدار 1.0 كامل في 2024-2025.
لم يتضح بعد ما إذا كانت Google ستتمكن من إعادة إنتاج النجاح الذي حققته لغتها الأخرى ، مثل Golang و Kotlin.