خرید بک لینک

1 1 1 1'>کربن (Carbon Programming Language) یکی از جدیدترین زبانهایی به حساب میآید که اخیراً توسط شرکت 1 معرفی شده است. این شرکت بهصورت مداوم به ارائه پلتفرمها و زبانهای برنامه نویسی جدید با قابلیتها و ابزارهای نوین و کارامد میپردازد. زبان کربن گوگل، جایگزینی برای زبان برنامه نویسی C++ محسوب میشود. مقاله حاضر، با محوریت پاسخ به این پرسش که «زبان برنامه نویسی کربن چیست» و به منظور ارائه دلیل ظهور این زبان و شرح ویژگیهای آن نوشته شده است و دستورات مقدماتی این زبان برنامه نویسی به همراه مثال توضیح داده میشوند.

فهرست مطالب این نوشته

زبان برنامه نویسی کربن چیست ؟

توسعه دهندگان گوگل، زبان برنامه نویسی آزمایشی جدیدی را با نام «کربن» (Carbon) ارائه کردهاند. این زبان میتواند به عنوان زبانی جایگزین برای زبان برنامه نویسی C++ محسوب شود که از امکانات جدیدی نظیر امنیت حافظه و «برنامه نویسی همگانی» (Generic) پشتیبانی میکند.

زبانهای برنامه نویسی جایگزین زبانهای جاوا اسکریپت، جاوا و C++
زبانهای برنامه نویسی جایگزین زبانهای جاوا اسکریپت، جاوا و C++

زبان کربن گوگل مانند زبانهای برنامه نویسی Typescript و Kotlin است که به منظور بهروزرسانی و افزایش قابلیتهای زبانهای جاوا اسکریپت و جاوا ارائه شدند. این زبان اخیراً (در سال 2022) برای نخستین بار در کنفرانس CCP North تورنتو توسط «چندلر کاروث» (Chandler Carruth) معرفی شد. در ادامه، به نقاط ضعف زبان برنامه نویسی C++ و اهداف زبان جایگزین آن، یعنی زبان کربن، پرداخته میشود.

نقطه ضعف زبان برنامه نویسی C++ چیست ؟

زبان برنامه نویسی C++ در سال 1982 ساخته شد و در سال 1985 در دسترس عموم قرار گرفت. این زبان، به عنوان یکی از زبانهای 1منظوره تلقی میشود که دارای ویژگیهای مختلفی مانند حساس بودن به حروف بزرگ و کوچک و «اشارهگرها» (Pointers) است و از شیگرایی پشتیبانی میکند. همچنین، این زبان دارای انواع مختلفی از کتابخانهها است که با استفاده از آنها میتوان عملیات مختلفی را بر روی دادهها اعمال کرد.

زبان C++ جایگزین زبان C
زبان C++ جایگزین زبان C

زبان C++ به عنوان جایگزینی برای زبان برنامه نویسی C محسوب میشود. این زبان یکی از زبانهای پرکاربرد برای توسعه پروژههای نرمافزاری است و اهدافی به منظور بهبود این زبان در نظر گرفته شده است که عبارتاند از:

  • تحول و تغییر در ساختار زبان و شیوه طراحی نرمافزار
  • خواندن، نوشتن و درک قطعه کدها به شیوهای آسان
  • تعریف سازوکار جدید برای تست و امنیت برنامهها
  • توسعه سریع برنامهها و مقیاسپذیر بودن آنها
  • پشتیبانی از پلتفرمهای جدید سیستمعاملها، محیطها و معماریهای سختافزاری

با این حال، در مسیر توسعه زبان C++، مشکلات جدی وجود دارد. یکی از مهمترین مسائل چالشبرانگیز این زبان، «بدهیهای فنی» (Technical Debts) است که در طی سالیان بسیار بر روی هم انباشه شدهاند. بدهیهای فنی شامل مجموعه اقداماتی هستند که تیم برنامه نویسی به منظور طراحی برنامه یا بخشی از پروژه انجام میدهند تا محصول هر چه سریعتر در اختیار کاربران و مشتریان قرار گیرد، اما اغلب باید این اقدامات در بازه زمانی دیگری اصلاح یا بهروزرسانی شوند.

همچنین، در طی دورانی که زبان C++ مورد استفاده عموم قرار گرفت، ویژگیها و قابلیتهای جدیدی به این زبان اضافه شد. بخشی از این ویژگیها باید جایگزین قابلیتهای قبلی این زبان میشد. با این حال، ویژگیها و قابلیتهای قبلی از این زبان حذف نشدهاند و در حال حاضر، ویژگیهای ناقص و تکراری در این زبان وجود دارند.

اهداف زبان کربن گوگل چیست ؟

تیم برنامه نویسی زبان کربن زمان بسیاری را صرف طراحی این زبان کردهاند تا مشکلات موجود در زبان برنامه نویسی C++ را در این زبان حل کنند. به عبارتی، زبان برنامه نویسی کربن به منظور ایجاد تحول در قابلیتهای برنامه نویسی و توسعه نرمافزار به وجود آمد. هدف برنامه نویسان این زبان، ارائه زبانی با «نحو | سینتکس» (Syntax) ساده است، به گونهای که نوشتن و خواندن قطعه کدهای برنامه به شکل ساده انجام شود.

زبان برنامه نویسی کربن به عنوان جایگزین زبان C++
زبان برنامه نویسی کربن به عنوان جایگزین زبان C++

همچنین، از دیگر اهداف این زبان، فراهم کردن امکان مقیاسپذیری برنامه نویسی است تا با استفاده از ابزارهای آن بتوان پروژههای برنامه نویسی را بهسرعت توسعه داد. بهعلاوه، این زبان به نحوی ارائه خواهد شد تا از محیطها و پلتفرمهای سیستمعاملهای جدید نیز پشتیبانی کند.

معرفی فیلم های آموزش برنامه نویسی

فیلم های آموزش برنامه نویسی فرادرس

دورههای آموزش آنلاین یکی از بهترین روشهای یادگیری مهارتهای مختلف برای تمامی علاقهمندان محسوب میشوند. افراد میتوانند در هر مکان و در هر ساعت از شبانه روز به یادگیری مطالب جدید بپردازند و فیلمهای آموزشی را چندین بار مشاهده کنند تا به درک جامعی از مفاهیم دست پیدا کنند. در وب سایت فرادرس، کاربردیترین و جامعترین مجموعههای آموزش در حوزه برنامه نویسی فراهم و گردآوری شده است تا افراد مشتاق به این حوزه بتوانند از آموزشهای کامل و تخصصی این حیطه بهرهمند شوند.

محتوای این فیلمهای آموزشی به نحوی فراهم شده است که مباحث تئوری و عملی را از ابتداییترین موضوعات تا مفاهیم پیچیده حوزه برنامه نویسی را شامل میشوند. بدینترتیب، افراد با سطح دانش و مهارت متفاوت در زمینه برنامه نویسی میتوانند از این آموزشها با توجه به نیاز خود بهرهمند شوند. در تصویر فوق تنها تعداد کمی از دورههای موجود در این مجموعه آموزشی به عنوان نمونه نشان داده شدهاند.

قابلیت های زبان برنامه نویسی کربن گوگل چیست ؟

زبان برنامه نویسی کربن سازوکار امنی را برای انجام تست برنامههای نرمافزاری فراهم کرده که همین امر ساختار برنامه نویسی را بهبود بخشیده است. افزونبراین، میتوان قطعهکدهای زبان C++ را در این زبان اجرا کرد. همچنین زبان برنامه نویسی کربن از ابزارها، پردازشها و اصول برنامه نویسی بهصورت «دسترسی باز» (Open Source) پشتیبانی میکند و دارای «ساختار حاکمیت» (Governance Structure) شفافی برای توسعه زبان برنامه نویسی است.

بهعلاوه، این زبان همانند سایر زبانهای برنامه نویسی دارای ابزارهایی مانند «محیط توسعه یکپارچه» (Integrated Development Environment | IDE)، کتابخانههای استاندارد و کامپایلر است. نحو زبان کربن گوگل ویژگیهای مختلفی دارد که در ادامه به برخی از مهمترین آنها اشاره شده است:

  • زبان برنامه نویسی کربن دارای کلمات کلیدی خاصی برای معرفی اجزای مختلف برنامه نویسی نظیر var u200aبرای اعلان متغیرها و fn u200aبرای اعلان توابع است.
  • پارامترهای ورودی توابع را نمیتوان تغییر داد و صرفاً آنها را میتوان خواند.
  • زبان کربن گوگل دارای ویژگی «اشارهگر» (Pointer) است که امکان ایجاد دسترسی غیرمستقیم به متغیرها را فراهم میکند.
  • «فضای نام» (Namespace) در زبان برنامه نویسی کربن بهصورت محلی استفاده میشود.

ابزارهای زبان کربن گوگل

به منظور آشنایی مقدماتی با زبان برنامه نویسی کربن گوگل میتوان به برخی از ابزارها و قابلیتهای این زبان بهطور کلی اشاره کرد. این زبان دارای ابزارهای مختلفی است که قابلیتهای مختلفی را در اختیار برنامه نویسان میگذارند. برخی از این ابزارها در ادامه فهرست شدهاند:

  • ابزار Homebrew: این ابزار به عنوان مدیر «بستههای» (Packages) زبان برنامه نویسی کربن محسوب میشود که پس از نصب زبان کربن بر روی کامپیوتر، میتوان از آن استفاده کرد. با دستور brew --version u200aمیتوان نسخه نصب شده این ابزار را نیز بررسی کرد.
  • ابزار Bazel: از این ابزار به منظور تست برنامه و ساخت پروژه با دسترسی باز استفاده میشود. میتوان این ابزار را با دستور brew install bazelisk u200aبر روی کامپیوتر نصب کرد.
  • ابزار LLVM: از ابزار LLVM به منظور کامپایل کردن قطعه کدهای زبان برنامه نویسی کربن استفاده میشود. برای نصب این ابزار بر روی کامپیوتر میتوان از دستور brew install llvm u200aاستفاده کرد. برای استفاده از ابزار LLVM در سیستمعاملهای مک OS باید path u200aرا با دستور زیر بهروزرسانی کرد:
export PATH="$(brew --prefix llvm)/bin:${PATH}"
  • دستور Clone: با استفاده از دستور Clone میتوان برنامه نوشته شده به زبان کربن گوگل را بر روی سیستم دانلود و از آن استفاده کرد:
$ git clone https://github.com/carbon-language/carbon-lang
$ cd carbon-lang
  • دستور Run: با استفاده از دستور Run میتوان فایل حاوی دستورات زبان برنامه نویسی کربن را اجرا کرد. چنانچه فایلی با نام format_only.carbon u200aوجود داشته باشد که شامل دستوری برای چاپ عبارت Hello World! u200aدر خروجی باشد، میتوان این فایل را با دستور زیر اجرا کرد:
$ bazel run //explorer -- ./explorer/testdata/print/format_only.carbon

در نهایت خروجی قطعه کد به صورت زیر مشاهده میشود:

زبان برنامه نویسی کربن

دستورات زبان برنامه نویسی کربن

در حال حاضر، نسخه آزمایشی زبان برنامه نویسی کربن را میتوان استفاده کرد و نسخه رسمی و اولیه آن در دسترس قرار نگرفته است. با این حال، میتوان به توضیح قطعه کدهای سادهای از این زبان پرداخت و دستورات ساده آن را بررسی کرد. فایلی که در مثال قبل با نام format_only.carbon به منظور چاپ عبارت Hello World! مورد استفاده قرار گرفت، حاوی قطعه کد زیر است:

package ExplorerTest api;
fn Main() -> i32 {
  var s: auto = "Hello world!";
  Print(s);
  return 0;
}
  • در این مثال، کلمه کلیدی package u200aبرای اعلان «بسته» (Package) کاربرد دارد.
  • کلمه کلیدی fn u200aنیز برای تعریف تابعی با عنوان Main() u200aاستفاده میشود.
  • عبارت i32 u200aنیز نوع خروجی تابع Main() را مشخص میکند که در این مثال، خروجی تابع از نوع عددی است.
  • کلمه کلیدی var u200aنیز برای تعریف متغیر کاربرد دارد.
  • با استفاده از علامت : u200aمیتوان نوع متغیر را بعد از نام متغیر تعیین کرد.
  • در انتهای هر خط از قطعه کد نیز از علامت ; u200aاستفاده میشود.
  • از کلمه کلیدی let u200aمیتوان برای تعریف «ثابتها» (Constants) استفاده کرد.
  • علامت // u200aنیز توضیحات را مشخص میکند.
  • نوع دادهها در زبان برنامه نویسی کربن عبارتاند از:
    • نوع Boolean: از این نوع داده میتوان به منظور ذخیرهسازی مقادیر True و False استفاده کرد.
    • نوع Integer: این نوع داده برای ذخیرهسازی مقادیر عددی استفاده میشود. نوع Integer شامل دو دسته هستند که دسته اول برای ذخیره کردن اعداد علامتدار و دسته دوم برای ذخیرهسازی اعداد بدون علامت استفاده میشوند. دسته نخست شامل انواع i8 ،i16 ،i32 ،i64 ،i128 و i256 هستند و دسته دوم انواع u8 ،u16 ،u32 ،u64 ،u128 و u256 را شامل میشود.
    • نوع Float: از این نوع داده برای ذخیرهسازی مقادیر اعشاری استفاده میشود که شامل f16 ،f3 ،f64 و f128 است.
    • نوع String: از این نوع داده به منظور ذخیرهسازی مقادیر رشتهای استفاده میشود. رشتهها در بین علامت "" u200aقرار میگیرند.

دستورات شرطی در زبان برنامه نویسی کربن

دستورات شرطی زبان برنامه نویسی کربن مشابه با دستورات شرطی در سایر زبانهای برنامه نویسی به خصوص زبان C++ هستند. در این زبان، قطعه کدهای بدنه دستورات شرطی در بین دو علامت {} u200aقرار میگیرند. در ادامه، نمونهای از دستورات شرطی در زبان برنامه نویسی کربن گوگل ملاحظه میشود.

fn AgeLogger(var age: i32) {
  if(age == 0){
   Print("Carbon is {0} years old", age);
  } else {
   Print("Carbon is not {0} years old", age);
  }  
}

حلقه While در زبان کربن گوگل

کاربرد حلقه While در زبان کربن نیز مانند کاربرد این حلقه در سایر زبانهای برنامه نویسی است. تا زمانی که مقدار عبارت مقابل این دستور برابر با True باشد، دستورات داخل حلقه اجرا خواهند شد. در ادامه، مثالی از این حلقه در زبان کربن ملاحظه میشود.

var x: i32 = 0;
while (not (x == 3)) {
    Print("I am number {0}", x);
    x = x + 1;
}
Print("Done!");

خروجی قطعه کد فوق به شکل زیر است:

زبان برنامه نویسی کربن

حلقه For در زبان برنامه نویسی کربن گوگل

در زبان برنامه نویسی کربن، از حلقه For نیز همانند سایر زبانهای برنامه نویسی به منظور تکرار یک سری از دستورات به تعداد دفعات معین استفاده میشود. در مثال زیر، نحوه استفاده از این حلقه در زبان کربن گوگل ملاحظه میشود.

var names: [String;3] = ("str1", "str2", "str3");
  for (var name: String in names) {
    Print(name);
  }

لازم به ذکر است که درون حلقهها میتوان از دو دستور continue u200aو break u200aاستفاده کرد. دستور continue باعث میشود گام بعدی حلقه اجرا شود و اجرای حلقه یک واحد پیش برود. از دستور break نیز به منظور متوقف کردن اجرای حلقه استفاده میشود.

دستور Match در زبان کربن گوگل

دستور Match به منظور بررسی چندین حالت یک عبارت استفاده میشود. در ادامه، نحوه کاربرد این دستور در قالب مثال ارائه شده است.

fn TheMatcher() -> String {
  Print("I am here");
  var x: i32 = 2;
  match (x) {
    case (0) => {
      return "Matching zero";
    }
    case (1) => {
      return "Matching one";
    }
    case (2) => {
      return "Matching two";
    }
    default => {
      return "Matching none";
    }
  }
}

در مثال بالا مقدار متغیر x u200aتوسط هر یک از دستورات مقابل هاcase u200a-ها مورد بررسی قرار میگیرد و چنانچه مقدار این متغیر برابر با مقدار مقابل دستور case u200aباشد، قطعه کد مربوط به بدنه آن case u200aاجرا میشود. بخش default u200aنیز زمانی اجرا میشود که مقدار متغیر x برابر با هیچ یک از عبارات مقابل دستورات case نباشد.

ساختارهای داده در زبان کربن گوگل

زبان کربن گوگل مانند سایر زبانهای برنامه نویسی از انواع ساختار داده به منظور ذخیرهسازی دادهها استفاده میکند. در زیر، فهرستی از ساختارهای داده این زبان ملاحظه میشود:

ساختارهای داده در زبان برنامه نویسی کربن
ساختارهای داده در زبان برنامه نویسی کربن

همچنین، این زبان از شیگرایی نیز پشتیبانی میکند. از آنجا که به منظور پیادهسازی اصول شیگرایی نیاز به تعریف کلاس است، بدینترتیب، با استفاده از این زبان میتوان کلاس و توابع مختلف تعریف کرد. در ادامه، به توضیح هر یک از ساختارهای ذکر شده در زبان کربن گوگل به همراه مثال پرداخته میشود.

تاپل در زبان کربن

ساختار داده تاپل در زبان کربن به منظور ذخیرهسازی مقادیر با نوع داده مختلف استفاده میشود. طول این نوع ساختار داده ثابت است و نمیتوان پس از تعریف و مقداردهی اولیه تاپل، اندازه آن را در ادامه برنامه تغییر داد. به منظور دسترسی به مقادیر تاپل، میتوان از اندیس استفاده کرد.

در قطعه کد زیر، مثالی از تاپل در زبان کربن گوگل ملاحظه میشود. در این مثال، به متغیری با نام x u200aساختار داده تاپل با مقادیر (0, 1, 2, "omega") u200aتخصیص داده شده است.

fn UseStruct() {
  var data: auto = {.x_var = 3, .b_var = 2, .m_slope = 7};
  var y: i32 = data.m_slope * data.x_var + data.b_var;
  Print("y: {0}", y);
}


// output: 
y: 23

آرایه در زبان کربن

در زبان کربن از ساختار داده آرایه نیز به منظور ذخیره مقادیر با نوع یکسان استفاده میشود. به منظور تعریف آرایه از ساختار [type, number of values] u200aاستفاده میشود. type u200aنوع آرایه و number of values u200aتعداد آیتمهای درون آرایه را مشخص میکنند. با استفاده از اندیس نیز میتوان به مقادیر درون آرایه دسترسی داشت. در ادامه، مثالی از تعریف آرایه در زبان برنامه نویسی کربن ملاحظه میشود.

var array: [i32; 4] = (0, 1, 2, 3);
// It is possible to omit the number of values 
// when the size of the array can be inferred
var array: [i32;] = (0, 1, 2, 3);
// access elements using square brakets
Print(array[0]);
مطلب پیشنهادی:
آرایه در برنامه نویسی چیست ؟ — Array به زبان ساده
در این مقاله به این سوال پاسخ داده شده که آرایه در برنامه نویسی چیست و همچنین مثالهای متعددی به زبانهای مختلف آن ارائه شده است.

ساختمان در زبان کربن

این نوع ساختار امکان ذخیرهسازی مقادیر را به نحوی فراهم میکند که بتوان به جای اندیس، با استفاده از نام به مقادیر دسترسی داشت. دو نوع ساختمان در زبان برنامه نویسی کربن وجود دارند:

  • «ساختمان نوع» (Struct Type): با استفاده از این ساختمان میتوان مقادیری از انواع داده به صورت {.name: String, .count: i32} u200aتعریف کرد.
  • «ساختمان مقادیر» (Struct Value): با استفاده از این ساختمان میتوان مقادیر مختلفی برای یک سری ویژگیها تعریف کرد. در مثال زیر x_var u200a، b_var u200aو m_slope u200a ویژگیهای تعریف شدهای هستند که مقادیر 3، 2 و 7 به آنها تخصیص داده شده است.
fn UseStruct() {
  var data: auto = {.x_var = 3, .b_var = 2, .m_slope = 7};
  var y: i32 = data.m_slope * data.x_var + data.b_var;
  Print("y: {0}", y);
}

// output: 
y: 23

کلاس در زبان کربن

در زبان کربن میتوان با استفاده از کلمه کلیدی class u200a، کلاس جدیدی را ایجاد کرد. متغیرها و توابع جدیدی میتوانند درون کلاس تعریف شوند. در ادامه، مثالی از کلاس در زبان برنامه نویسی کربن ملاحظه میشود.

class Widget {
  var x: i32;
  var y: i32;
  var payload: String;
  
  fn Sum[me: Self]() -> i32 {
      var total: i32 = me.x + me.y;
      return total;
  }
}

در قطعه کد زیر نیز مثالی از نحوه تعریف شی جدید با نام coolWidget u200aاز کلاس Widget u200aدر زبان کربن گوگل ملاحظه میشود.

fn Main() -> i32 {
  var coolWidget: Widget = {.x = 6, .y = 7, .payload = "load"};
  var total: i32 = coolWidget.Sum();
  Print("Total sum {0}" , total);
  return 0;
}
// output:
Total sum 13

ژنریک در زبان کربن

زبان برنامه نویسی کربن مانند سایر زبانهای برنامه نویسی از توابع و کلاسهای همگانی یا ژنریک پشتیبانی میکنند. نوع پارامترهای این توابع و کلاسها در زمان اجرای برنامه مشخص میشوند.

در زبان کربن گوگل به منظور تعریف پارامتری از نوع همگانی یا ژنریک، از عبارت کلیدی T u200aاستفاده میشود. در مثال زیر نمونهای از یک تابع با پارامتر همگانی x u200aو y u200aملاحظه میشود که کوچکترین مقدار را برمیگرداند. میتوان به این پارامترها، مقادیری با نوع داده متفاوت تخصیص داد.

fn Min[T:! Ordered](x: T, y: T) -> T {
  return if x <= y then x else y;
}

به عنوان مثال، میتوان به پارامترهای تابع Min u200aمقادیر عددی به شکل زیر تخصیص داد:

var a: i32 = 1;
var b: i32 = 2;
Assert(Min(a, b) == 1);

همچنین، میتوان به تابع Min u200aمقادیری از نوع رشته ارسال کرد که در نهایت کوچکترین رشته را در خروجی بازگرداند:

var a: String = "abc";
var b: String = "xyz";
Assert(Min(a , b) == "abc");

جمعبندی

زبان برنامه نویسی کربن، جدیدترین زبان ارائه شده توسط گوگل است که به عنوان جایگزینی برای زبان برنامه نویسی C++ محسوب میشود. این زبان با هدف رفع چالشها و مشکلات زبان C++ تولید شده است. در مطلب حاضر، به معرفی اجمالی این زبان برنامه نویسی پرداخته شد و نقاط ضعف زبان C++ و دلایل تولید زبان کربن مورد بررسی قرار گرفتند. همچنین، در انتهای مطلب حاضر به دستورات ساده این زبان به همراه مثال پرداخته شد.

اگر این مطلب برای شما مفید بوده است، آموزشها و مطالب زیر نیز به شما پیشنهاد میشوند:

مینو نساجیان دانشآموخته کارشناسی ارشد رشته زبانشناسی رایانشی است؛ به حوزه هوش مصنوعی علاقه دارد و در مجله فرادرس به عنوان تولیدکننده محتوا در زمینههای علوم کامپیوتر، هوش مصنوعی و برنامهنویسی فعالیت میکند.

برچسب: نویسنده: خنجی تاريخ: سه شنبه 19 مهر 1401 ساعت: 2:55

صفحه بندی

خبرنامه