منذ إنشائها ، كانت C ++ هي الخيار الأول لبناء تطبيقات كثيفة الأداء. لكن اللغة لا تزال تحتوي على بعض الممارسات التي عفا عليها الزمن بسبب "التصميم من قبل اللجنة".

في 19 يوليو 2022 ، خلال مؤتمر CPP North C ++ في تورنتو ، قدم مهندس Google Chandler Carruth مادة الكربون.

اكتشف ما هو الكربون وكيف ينوي أن يحل محل C ++.

ما هو الكربون؟

طور مهندسو Google ملف كربون لغة البرمجة لمعالجة أوجه القصور في C ++.

كثير الموجودة لغات مثل Golang والصدأ موجودان بالفعل يعكسان أداء C ++ دون عيوبه. لسوء الحظ ، تمثل هذه اللغات حواجز كبيرة أمام ترحيل قواعد رموز C ++ الحالية.

يهدف الكربون إلى أن يكون ما هو TypeScript لجافا سكريبت، و Kotlin تعني Java. إنها ليست بديلاً ، ولكنها لغة لاحقة مصممة حول إمكانية التشغيل البيني مع C ++. وهي تهدف إلى اعتماد وترحيل على نطاق واسع لقواعد البرمجة والمطورين الحاليين.

الميزات الرئيسية للكربون

تتضمن بعض الميزات الرئيسية لـ Carbon إمكانية التشغيل البيني C ++ والأدوية الحديثة وسلامة الذاكرة.

إمكانية التشغيل البيني مع C ++

يهدف Carbon إلى توفير منحنى تعليمي لطيف لمطوري C ++ ، مع مجموعة قياسية ومتسقة من تراكيب اللغة.

instagram viewer

على سبيل المثال ، خذ كود 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.