کربن (زبان برنامهنویسی)
توسعهدهنده | گوگل |
---|---|
ظهوریافته در | ۱۹ ژوئیه ۲۰۲۲ |
انتشار آزمایشی | 0.1
/ ۱۹ ژوئیه ۲۰۲۲ |
ایستا، مبتنی بر نام، تشخیص نوع | |
زبان پیادهسازی | سیپلاسپلاس |
سیستمعامل | چندسکویی |
.carbon ، .co2 | |
وبگاه | [[۱]] |
متأثر از | |
سیپلاسپلاس، راست |
کربن (به انگلیسی: Carbon)، زبان برنامهنویسی آزمایشی همهمنظوره است که توسط گوگل ایجاد شده تا جانشین سیپلاسپلاس باشد. این زبان اولینبار توسط Chandler Carruth در کنفرانس CppNorth در ژوئیه ۲۰۲۲ به عموم ارائه شد.[۱][۲][۳] این زبان قصد دارد چندین کمبود اساسی از سیپلاسپلاس را برطرف کند،[۴] در غیر این صورت مجموعهای از ویژگیهای مشابه را ارائه میدهد. اهداف اصلی کربن خوانایی و «قابلیت توسعه دو جهته» است، یعنی فراخوانی همزمان در سیپلاسپلاس و بالعکس، بنابراین مشکلات زبانی مانند راست وجود نخواهد داشت. این زبان برخلاف فرایند ISO که سیپلاسپلاس استفاده میکند، در گیتهاب طراحی و توسعه مییابد.[۵][۶][۷]
کربن به عنوان یک پروژه رایگان و متنباز تحت مجوز آپاچی (نسخه ۲) توسعه یافتهاست.[۸]
وضعیت پروژه
[ویرایش]زبان کربن در حال حاضر یک پروژه آزمایشی است. هیچ کامپایلر یا زنجیره ابزاری برای آن وجود ندارد؛ ولی میتوانید مفسر آزمایشی کربن را در کامپایلر اکسپلورر ببینید.
در حال حاضر توسعهدهندگان این زبان چندین جنبه اصلی زبان کربن را بیان کردهاند:
- استراتژی زبان کربن و پروژه.
- ساختار پروژه متنباز، مدل حاکمیت و فرایند تکامل.
- جنبههای مهم و اساسی طراحی زبان که از تجربه توسعهدهندگان با ++C و سختترین چالشهایی که پیشبینی میکردند، بهدست میآید و شامل طرحهایی برای این موارد میباشد:
- جنریکها
- انواع کلاس
- وراثت
- سربارگذاری عملگرها
- ساختار لغوی و نحوی
- سازماندهی کد و ساختار ماژولار[۹]
مثالها
[ویرایش]سلام دنیا!
package sample api;
fn Main() -> i32 {
Print("Hello, world!");
return 0;
}
اگر قبلاً یک توسعه دهنده ++C باشید، کربن باید منحنی یادگیری ملایمی داشته باشد. این زبان از مجموعهای از ساختارهای زبانی ساخته شدهاست که باید احساس آشنایی داشته باشند و خواندن و درک آن آسان باشد.
package Geometry api;
import Math;
class Circle {
var r: f32;
}
fn PrintTotalArea(circles: Slice(Circle)) {
var area: f32 = 0;
for (c: Circle in circles) {
area += Math.Pi * c.r * c.r;
}
Print("Total area: {0}", area);
}
fn Main() -> i32 {
// A dynamically sized array, like `std::vector`.
var circles: Array(Circle) = ({.r = 1.0}, {.r = 2.0});
// Implicitly constructs `Slice` from `Array`.
PrintTotalArea(circles);
return 0;
}
میتوانید کربن را از ++C بدون سربار فراخوانی کنید و برعکس. این بدان معناست که شما یک کتابخانه ++C را به کربن در یک برنامه منتقل میکنید یا کد کربن جدید را در بالای کد موجود در ++C خود مینویسید. مثلا:
// C++ code used in both Carbon and C++:
struct Circle {
float r;
};
// Carbon exposing a function for C++:
package Geometry api;
import Cpp library "circle.h";
import Math;
fn PrintTotalArea(circles: Slice(Cpp.Circle)) {
var area: f32 = 0;
for (c: Cpp.Circle in circles) {
area += Math.Pi * c.r * c.r;
}
Print("Total area: {0}", area);
}
// C++ calling Carbon:
#include <vector>
#include "circle.h"
#include "geometry.carbon.h"
auto main(int argc, char** argv) -> int {
std::vector<Circle> circles = {{1.0}, {2.0}};
// Carbon's `Slice` supports implicit construction from `std::vector`,
// similar to `std::span`.
Geometry::PrintTotalArea(circles);
return 0;
}
جستارهای وابسته
[ویرایش]منابع
[ویرایش]- ↑ "CppNorth2022 Keynote" (به انگلیسی). 2022-07-21. Retrieved 2022-07-21.
- ↑ "Carbon Language: An experimental successor to C++ - Chandler Carruth - CppNorth 2022" (به انگلیسی).
- ↑ Bradshaw, Kyle (19 July 2022). "Carbon, a new programming language from Google, aims to be C++ successor". 9to5Google.
- ↑ "Difficulties improving C++" (به انگلیسی). 2022-07-21. Retrieved 2022-07-21.
- ↑ Illidge, Myles (2022-07-21). "Google's Carbon programming language aims to replace C++". MyBroadband. Retrieved 2022-07-24.
- ↑ Jackson, Joab (2022-07-20). "Google Launches Carbon, an Experimental Replacement for C++". The New Stack. Retrieved 2022-07-24.
- ↑ Mustafa, Onsa (2022-07-20). "Carbon, A New Programming Language from Google As A C++ Successor". PhoneWorld. Retrieved 2022-07-24.
- ↑ "carbon-lang/LICENSE". GitHub. 2020-06-16. Retrieved 2022-07-24.
- ↑ Carbon Language: An experimental successor to C++, carbon-language, 2022-08-04, retrieved 2022-08-04