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


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

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

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

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

دورههای آموزش آنلاین یکی از بهترین روشهای یادگیری مهارتهای مختلف برای تمامی علاقهمندان محسوب میشوند. افراد میتوانند در هر مکان و در هر ساعت از شبانه روز به یادگیری مطالب جدید بپردازند و فیلمهای آموزشی را چندین بار مشاهده کنند تا به درک جامعی از مفاهیم دست پیدا کنند. در وب سایت فرادرس، کاربردیترین و جامعترین مجموعههای آموزش در حوزه برنامه نویسی فراهم و گردآوری شده است تا افراد مشتاق به این حوزه بتوانند از آموزشهای کامل و تخصصی این حیطه بهرهمند شوند.
محتوای این فیلمهای آموزشی به نحوی فراهم شده است که مباحث تئوری و عملی را از ابتداییترین موضوعات تا مفاهیم پیچیده حوزه برنامه نویسی را شامل میشوند. بدینترتیب، افراد با سطح دانش و مهارت متفاوت در زمینه برنامه نویسی میتوانند از این آموزشها با توجه به نیاز خود بهرهمند شوند. در تصویر فوق تنها تعداد کمی از دورههای موجود در این مجموعه آموزشی به عنوان نمونه نشان داده شدهاند.
- برای دسترسی به همه فیلم های آموزش برنامه نویسی فرادرس + اینجا کلیک کنید.
قابلیت های زبان برنامه نویسی کربن گوگل چیست ؟
زبان برنامه نویسی کربن سازوکار امنی را برای انجام تست برنامههای نرمافزاری فراهم کرده که همین امر ساختار برنامه نویسی را بهبود بخشیده است. افزونبراین، میتوان قطعهکدهای زبان C++ را در این زبان اجرا کرد. همچنین زبان برنامه نویسی کربن از ابزارها، پردازشها و اصول برنامه نویسی بهصورت «دسترسی باز» (Open Source) پشتیبانی میکند و دارای «ساختار حاکمیت» (Governance Structure) شفافی برای توسعه زبان برنامه نویسی است.
بهعلاوه، این زبان همانند سایر زبانهای برنامه نویسی دارای ابزارهایی مانند «محیط توسعه یکپارچه» (Integrated Development Environment | IDE)، کتابخانههای استاندارد و کامپایلر است. نحو زبان کربن گوگل ویژگیهای مختلفی دارد که در ادامه به برخی از مهمترین آنها اشاره شده است:
- زبان برنامه نویسی کربن دارای کلمات کلیدی خاصی برای معرفی اجزای مختلف برنامه نویسی نظیرvar برای اعلان متغیرها وfn برای اعلان توابع است.
- پارامترهای ورودی توابع را نمیتوان تغییر داد و صرفاً آنها را میتوان خواند.
- زبان کربن گوگل دارای ویژگی «اشارهگر» (Pointer) است که امکان ایجاد دسترسی غیرمستقیم به متغیرها را فراهم میکند.
- «فضای نام» (Namespace) در زبان برنامه نویسی کربن بهصورت محلی استفاده میشود.
ابزارهای زبان کربن گوگل
به منظور آشنایی مقدماتی با زبان برنامه نویسی کربن گوگل میتوان به برخی از ابزارها و قابلیتهای این زبان بهطور کلی اشاره کرد. این زبان دارای ابزارهای مختلفی است که قابلیتهای مختلفی را در اختیار برنامه نویسان میگذارند. برخی از این ابزارها در ادامه فهرست شدهاند:
- ابزار Homebrew: این ابزار به عنوان مدیر «بستههای» (Packages) زبان برنامه نویسی کربن محسوب میشود که پس از نصب زبان کربن بر روی کامپیوتر، میتوان از آن استفاده کرد. با دستورbrew --version میتوان نسخه نصب شده این ابزار را نیز بررسی کرد.
- ابزار Bazel: از این ابزار به منظور تست برنامه و ساخت پروژه با دسترسی باز استفاده میشود. میتوان این ابزار را با دستورbrew install bazelisk بر روی کامپیوتر نصب کرد.
- ابزار LLVM: از ابزار LLVM به منظور کامپایل کردن قطعه کدهای زبان برنامه نویسی کربن استفاده میشود. برای نصب این ابزار بر روی کامپیوتر میتوان از دستورbrew install llvm استفاده کرد. برای استفاده از ابزار LLVM در سیستمعاملهای مک OS بایدpath را با دستور زیر بهروزرسانی کرد:
- دستور Clone: با استفاده از دستور Clone میتوان برنامه نوشته شده به زبان کربن گوگل را بر روی سیستم دانلود و از آن استفاده کرد:
- دستور Run: با استفاده از دستور Run میتوان فایل حاوی دستورات زبان برنامه نویسی کربن را اجرا کرد. چنانچه فایلی با نام format_only.carbon وجود داشته باشد که شامل دستوری برای چاپ عبارت Hello World! در خروجی باشد، میتوان این فایل را با دستور زیر اجرا کرد:
در نهایت خروجی قطعه کد به صورت زیر مشاهده میشود:

دستورات زبان برنامه نویسی کربن
در حال حاضر، نسخه آزمایشی زبان برنامه نویسی کربن را میتوان استفاده کرد و نسخه رسمی و اولیه آن در دسترس قرار نگرفته است. با این حال، میتوان به توضیح قطعه کدهای سادهای از این زبان پرداخت و دستورات ساده آن را بررسی کرد. فایلی که در مثال قبل با نامformat_only.carbonبه منظور چاپ عبارت Hello World!مورد استفاده قرار گرفت، حاوی قطعه کد زیر است:
- در این مثال، کلمه کلیدیpackage برای اعلان «بسته» (Package) کاربرد دارد.
- کلمه کلیدیfn نیز برای تعریف تابعی با عنوانMain() استفاده میشود.
- عبارتi32 نیز نوع خروجی تابعMain()را مشخص میکند که در این مثال، خروجی تابع از نوع عددی است.
- کلمه کلیدیvar نیز برای تعریف متغیر کاربرد دارد.
- با استفاده از علامت : میتوان نوع متغیر را بعد از نام متغیر تعیین کرد.
- در انتهای هر خط از قطعه کد نیز از علامت; استفاده میشود.
- از کلمه کلیدی let میتوان برای تعریف «ثابتها» (Constants) استفاده کرد.
- علامت // نیز توضیحات را مشخص میکند.
- نوع دادهها در زبان برنامه نویسی کربن عبارتاند از:
- نوع Boolean: از این نوع داده میتوان به منظور ذخیرهسازی مقادیر True و False استفاده کرد.
- نوع Integer: این نوع داده برای ذخیرهسازی مقادیر عددی استفاده میشود. نوع Integer شامل دو دسته هستند که دسته اول برای ذخیره کردن اعداد علامتدار و دسته دوم برای ذخیرهسازی اعداد بدون علامت استفاده میشوند. دسته نخست شامل انواع i8 ،i16 ،i32 ،i64 ،i128 و i256 هستند و دسته دوم انواع u8 ،u16 ،u32 ،u64 ،u128 و u256 را شامل میشود.
- نوع Float: از این نوع داده برای ذخیرهسازی مقادیر اعشاری استفاده میشود که شامل f16 ،f3 ،f64 و f128 است.
- نوع String: از این نوع داده به منظور ذخیرهسازی مقادیر رشتهای استفاده میشود. رشتهها در بین علامت "" قرار میگیرند.
دستورات شرطی در زبان برنامه نویسی کربن
دستورات شرطی زبان برنامه نویسی کربن مشابه با دستورات شرطی در سایر زبانهای برنامه نویسی به خصوص زبان C++ هستند. در این زبان، قطعه کدهای بدنه دستورات شرطی در بین دو علامت{} قرار میگیرند. در ادامه، نمونهای از دستورات شرطی در زبان برنامه نویسی کربن گوگل ملاحظه میشود.
حلقه While در زبان کربن گوگل
کاربرد حلقه While در زبان کربن نیز مانند کاربرد این حلقه در سایر زبانهای برنامه نویسی است. تا زمانی که مقدار عبارت مقابل این دستور برابر با True باشد، دستورات داخل حلقه اجرا خواهند شد. در ادامه، مثالی از این حلقه در زبان کربن ملاحظه میشود.
خروجی قطعه کد فوق به شکل زیر است:

حلقه For در زبان برنامه نویسی کربن گوگل
در زبان برنامه نویسی کربن، از حلقه For نیز همانند سایر زبانهای برنامه نویسی به منظور تکرار یک سری از دستورات به تعداد دفعات معین استفاده میشود. در مثال زیر، نحوه استفاده از این حلقه در زبان کربن گوگل ملاحظه میشود.
لازم به ذکر است که درون حلقهها میتوان از دو دستورcontinue و break استفاده کرد. دستورcontinueباعث میشود گام بعدی حلقه اجرا شود و اجرای حلقه یک واحد پیش برود. از دستور breakنیز به منظور متوقف کردن اجرای حلقه استفاده میشود.
دستور Match در زبان کربن گوگل
دستور Match به منظور بررسی چندین حالت یک عبارت استفاده میشود. در ادامه، نحوه کاربرد این دستور در قالب مثال ارائه شده است.
در مثال بالا مقدار متغیرx توسط هر یک از دستورات مقابلهاcase -ها مورد بررسی قرار میگیرد و چنانچه مقدار این متغیر برابر با مقدار مقابل دستورcase باشد، قطعه کد مربوط به بدنه آنcase اجرا میشود. بخشdefault نیز زمانی اجرا میشود که مقدار متغیرxبرابر با هیچ یک از عبارات مقابل دستوراتcaseنباشد.
ساختارهای داده در زبان کربن گوگل
زبان کربن گوگل مانند سایر زبانهای برنامه نویسی از انواع ساختار داده به منظور ذخیرهسازی دادهها استفاده میکند. در زیر، فهرستی از ساختارهای داده این زبان ملاحظه میشود:
- «تاپل» (Tuple)
- «آرایه» (Array)
- «ساختمان» (Struct)

همچنین، این زبان از شیگرایی نیز پشتیبانی میکند. از آنجا که به منظور پیادهسازی اصول شیگرایی نیاز به تعریف کلاس است، بدینترتیب، با استفاده از این زبان میتوان کلاس و توابع مختلف تعریف کرد. در ادامه، به توضیح هر یک از ساختارهای ذکر شده در زبان کربن گوگل به همراه مثال پرداخته میشود.
تاپل در زبان کربن
ساختار داده تاپل در زبان کربن به منظور ذخیرهسازی مقادیر با نوع داده مختلف استفاده میشود. طول این نوع ساختار داده ثابت است و نمیتوان پس از تعریف و مقداردهی اولیه تاپل، اندازه آن را در ادامه برنامه تغییر داد. به منظور دسترسی به مقادیر تاپل، میتوان از اندیس استفاده کرد.
در قطعه کد زیر، مثالی از تاپل در زبان کربن گوگل ملاحظه میشود. در این مثال، به متغیری با نامx ساختار داده تاپل با مقادیر(0, 1, 2, "omega") تخصیص داده شده است.
آرایه در زبان کربن
در زبان کربن از ساختار داده آرایه نیز به منظور ذخیره مقادیر با نوع یکسان استفاده میشود. به منظور تعریف آرایه از ساختار[type, number of values] استفاده میشود.type نوع آرایه وnumber of values تعداد آیتمهای درون آرایه را مشخص میکنند. با استفاده از اندیس نیز میتوان به مقادیر درون آرایه دسترسی داشت. در ادامه، مثالی از تعریف آرایه در زبان برنامه نویسی کربن ملاحظه میشود.
ساختمان در زبان کربن
این نوع ساختار امکان ذخیرهسازی مقادیر را به نحوی فراهم میکند که بتوان به جای اندیس، با استفاده از نام به مقادیر دسترسی داشت. دو نوع ساختمان در زبان برنامه نویسی کربن وجود دارند:
- «ساختمان نوع» (Struct Type): با استفاده از این ساختمان میتوان مقادیری از انواع داده به صورت{.name: String, .count: i32} تعریف کرد.
- «ساختمان مقادیر» (Struct Value): با استفاده از این ساختمان میتوان مقادیر مختلفی برای یک سری ویژگیها تعریف کرد. در مثال زیرx_var ، b_var و m_slope ویژگیهای تعریف شدهای هستند که مقادیر 3، 2 و 7 به آنها تخصیص داده شده است.
کلاس در زبان کربن
در زبان کربن میتوان با استفاده از کلمه کلیدیclass ، کلاس جدیدی را ایجاد کرد. متغیرها و توابع جدیدی میتوانند درون کلاس تعریف شوند. در ادامه، مثالی از کلاس در زبان برنامه نویسی کربن ملاحظه میشود.
در قطعه کد زیر نیز مثالی از نحوه تعریف شی جدید با نام coolWidget از کلاسWidget در زبان کربن گوگل ملاحظه میشود.
ژنریک در زبان کربن
زبان برنامه نویسی کربن مانند سایر زبانهای برنامه نویسی از توابع و کلاسهای همگانی یا ژنریک پشتیبانی میکنند. نوع پارامترهای این توابع و کلاسها در زمان اجرای برنامه مشخص میشوند.
در زبان کربن گوگل به منظور تعریف پارامتری از نوع همگانی یا ژنریک، از عبارت کلیدی T استفاده میشود. در مثال زیر نمونهای از یک تابع با پارامتر همگانیx وy ملاحظه میشود که کوچکترین مقدار را برمیگرداند. میتوان به این پارامترها، مقادیری با نوع داده متفاوت تخصیص داد.
به عنوان مثال، میتوان به پارامترهای تابعMin مقادیر عددی به شکل زیر تخصیص داد:
همچنین، میتوان به تابعMin مقادیری از نوع رشته ارسال کرد که در نهایت کوچکترین رشته را در خروجی بازگرداند:
جمعبندی
زبان برنامه نویسی کربن، جدیدترین زبان ارائه شده توسط گوگل است که به عنوان جایگزینی برای زبان برنامه نویسی C++ محسوب میشود. این زبان با هدف رفع چالشها و مشکلات زبان C++ تولید شده است. در مطلب حاضر، به معرفی اجمالی این زبان برنامه نویسی پرداخته شد و نقاط ضعف زبان C++ و دلایل تولید زبان کربن مورد بررسی قرار گرفتند. همچنین، در انتهای مطلب حاضر به دستورات ساده این زبان به همراه مثال پرداخته شد.