در تلاش برای جایگزینی C++ ارجمند اما کند، محققان گوگل یک زبان برنامه نویسی متن باز "تجربی" جدید با نام Carbon را معرفی کرده اند.
Carbon می تواند به عنوان یک زبان جانشین برای C++ عمل کند، زبانی که یک نقطه شروع ساده برای توسعه دهندگان به یک زبان جدیدتر است که به مفاهیم توسعه معاصر مانند ایمنی حافظه و ژنریک می پردازد.
این شبیه به نحوه ساخت تایپ اسکریپت برای به روز رسانی جاوا اسکریپت و کاتلین برای تقویت نقاط ضعف در جاوا است.
گوگل چندین زبان برنامه نویسی را در طول سال ها توسعه داده است که برخی از آنها شهرت و شهرت قابل توجهی به دست آورده اند.
به عنوان مثال، Golang (یا فقط Go) برای تسهیل ایجاد سرورها و سیستم های توزیع شده توسعه داده شد و متعاقباً مورد استقبال عموم قرار گرفت.
دارت زبان برنامه نویسی، که به عنوان یک جایگزین جاوا اسکریپت ایجاد شد، تا زمان راه اندازی Flutter مشهور نشد.
چندلر کاروت، یکی از کارمندان گوگل، ایده خود را برای یک زبان برنامه نویسی جدید به نام کربن در 19 ژوئیه 2022 در کنوانسیون Cpp North در تورنتو ارائه کرد. به گفته کانر هوکسترا، که در اسلایدها حضور داشتند و ضبط کردند.
به منظور تنظیم سناریو، Carruth نشان داد که چگونه چندین زبان برنامه نویسی محبوب امروزی دارای فرزندانی هستند که توسعه دهندگان را قادر می سازند تا به سرعت سازنده باشند و همچنین از طراحی زبان های معاصر بهره مند شوند.
بیایید با معرفی کلی زبان برنامه نویسی کربن، از جمله ویژگی های آن، هدف گوگل از اختراع آن و موارد دیگر شروع کنیم.
مقدمه ای بر زبان برنامه نویسی کربن
در 19 جولای 2022، گوگل Carbon را به عنوان جدیدترین زبان برنامه نویسی خود معرفی کرد. در نظر گرفته شده بود که به طور تجربی جایگزین C++ شود.
با تشکر از سیستم ژنریک، که نیاز به بررسی مجدد کد برای هر نمونه را از بین می برد، Carbon بر اساس مفاهیم برنامه نویسی مدرن ساخته خواهد شد.
تا پایان سال، طراحی قصد دارد نسخه عملیاتی اولیه (نسخه 0.1) را ارائه دهد.
یکپارچگی حافظه یک عنصر حیاتی است که C++ آن را از دست داده است. یکی از منابع اصلی نقص امنیتی، مشکلات دسترسی به حافظه است.
توسعه بررسی مرزهای پویا، ردیابی بیشتر حالتهای اولیه، و یک حالت ساخت دیباگ پیشفرض کامل، همگی اهداف تیم کربن هستند. سازندگان قصد دارند در طول زمان یک زیرمجموعه ایمن کربن ایجاد کنند.
با این حال، موارد زیر برخی از ویژگی های حیاتی زبان برنامه نویسی جدید است:
- برای نامگذاری انواع، از عبارات استفاده کنید.
- ژنریک های قوی با چک های تعریف
- انواع به طور خاص رابط ها را انجام می دهند
- عبارات مقدمه و دستور زبان پایه
- اشاره گرها امکان دسترسی و جهش نامحدود را فراهم می کنند.
- مقادیر پارامترهای ورودی تابع فقط خواندنی هستند.
- فضای نام ریشه بسته است.
- APIها را می توان با استفاده از نام بسته آنها وارد کرد.
- یک متد از طریق یک پارامتر شی صریح اعلام می شود.
- کلاس ها به طور پیش فرض نهایی هستند. فقط یک ارث وجود دارد
ویژگی های کربن
مدرن و در حال توسعه
- ارتقاء بین نسخه های کربن ساده و مبتنی بر ابزار است.
- زیربنای زبان قوی، به خصوص اگر از C++ استفاده کرده باشید، و یادگیری آن ساده است
- پایه های ایمن تر و رویکردی گام به گام به زیر مجموعه ای ایمن برای حافظه
استقبال از جامعه متن باز
- جامعه ای که تلاش می کند گرم، پذیرا و دعوت کننده باشد
- اهداف و اولویت های آن حکمرانی متمایز و قوی است
- یک استراتژی همه کاره با کامپایلر، کتابخانه ها، اسناد، ابزارها، مدیریت بسته و موارد دیگر
سریع و سازگار با C++
- همراه با کد C ++ شما در حال حاضر، از جمله وراثت و الگوها
- با LLVM، عملکرد قابل مقایسه با C++ و دسترسی سطح پایین به بیت ها و آدرس ها
- بیلدهایی که سریع و مقیاس پذیر هستند و با سیستم های ساخت C++ موجود شما سازگار هستند
چرا گوگل زبان برنامه نویسی Carbon را ساخت؟
نرمافزارهای حیاتی عملکرد همچنان به زبان C++ نوشته میشوند که دارای پایگاههای کد و سرمایهگذاری عظیم و گستردهای است.
با این حال، همانطور که در بالا ذکر شد، در پیشبرد و برآورده کردن خواسته های توسعه دهندگان مشکل دارد، که عمدتاً به دلیل جمع آوری بدهی های تکنولوژیکی سال هاست.
بهبود تدریجی C++ به دلیل بدهی های فنی و همچنین مشکلاتی که در روند تکامل آن وجود دارد، بسیار دشوار است.
رویکرد ایده آل برای حل این مسائل، شروع با یک پایه زبان قوی، مانند سیستم ژنریک معاصر، ساختار کد مدولار، و نحو منسجم و ساده است، نه اینکه مستقیماً سنت C یا C++ را به ارث ببرد.
Go، Swift، Kotlin، Rust، و بسیاری دیگر از زبان های معاصر در حال حاضر تجربه توسعه برجسته ای را ارائه می دهند. توسعه دهندگانی که قادر به استفاده از یکی از این زبان های فعلی هستند باید.
متأسفانه، پذیرش و مهاجرت از ++C به شدت توسط طراحی این زبان ها مختل شده است. این موانع شامل سربار عملکرد و تغییرات در طراحی اصطلاحی نرم افزار است.
کربن تلاشی برای بهبود تدریجی C++ نیست. بلکه یک استراتژی زبان جانشین است. تمرکز آن بر قابلیت همکاری ++C و همچنین پذیرش و مهاجرت گسترده برای توسعهدهندگان و پایگاههای کدی است که در حال حاضر از C++ استفاده میکنند.
زبان جایگزین C++ باید دارای:
- عملکرد قابل مقایسه با C++ یک ویژگی حیاتی برای توسعه دهندگان است.
- منحنی یادگیری قابل مدیریت و سطح آشنایی برای برنامه نویسان ++C
- مهاجرتی که مقیاسپذیر است و شامل ترجمه کد C++ اصطلاحی منبع به منبع است.
- بیان و پشتیبانی مشابه برای معماری و طراحی نرم افزارهای فعلی.
- قابلیت همکاری با C++ که یکپارچه و دو جهته است و به هر کتابخانه ای اجازه می دهد تا کربن را بدون نیاز به پورت کردن بقیه پشته استفاده کند.
با این استراتژی، گوگل به اکوسیستمی که از قبل برای C++ وجود دارد اضافه میکند و سرمایهگذاریهای فعلی، پایگاههای کد و جوامع توسعه را ترکیب میکند.
چند زبان این رویکرد را برای اکوسیستمهای مختلف اتخاذ کردهاند و کربن در این شرایط به دنبال عملکردی مشابه با C++ است:
- جاوا – کاتلین
- جاوا اسکریپت – TypeScript
- C++ - کربن
C++ در مقابل کد کربن
اگر قبلاً یک توسعه دهنده ++C هستید، کربن باید منحنی یادگیری پایینی داشته باشد. از مجموعه ای ثابت از ساختارهای دستوری تشکیل شده است که باید طبیعی به نظر برسند و خواندن و درک آن ساده باشد.
نمونه ای از کد ++C:
این کد کربن مربوط به:
کربن در مقابل زنگ
زبان معاصر دیگری که به صراحت برای برآوردن الزامات برنامه های کاربردی عملکرد ایمن در حافظه طراحی شده است Rust نام دارد.
پس چرا به سادگی از Rust استفاده نکنید؟
در حالی که برخی استدلال می کنند که Rust، که به عنوان یک پروژه موزیلا آغاز شد و متعاقباً به طرفداران عمومی قابل توجهی رسید، جانشین C++ است، Carruth تردید دارد که آیا موازی هنوز معتبر است یا خیر.
Rust بدون شک زبان فوقالعادهای است که میتوان با آن یک پروژه جدید را آغاز کرد، اما از آنجایی که فاقد «قابلیت همکاری دوطرفه» زبانهایی مانند Java و Kotlin است، انتقال تدریجی به آن چالش برانگیز است.
کاروت در CPP North سخنرانی کرد و افرادی را که قبلاً از Rust استفاده می کردند تشویق کرد که به این کار ادامه دهند. توسعه دهندگانی که قبلاً پایگاه های کد C++ قابل توجهی دارند که تبدیل به Rust چالش برانگیز است، باید از کربن استفاده کنند.
به طور خاص، کربن همان چیزی است که کاروت از آن به عنوان «زبان جانشین» یاد میکند که در بالای یک اکوسیستم موجود، در این مثال C++، ساخته شده است.
برای این منظور، کربن کاملاً با کد فعلی C++ سازگار است، حتی اگر اهداف زیادی با Rust داشته باشد، مانند کمک به برنامهنویسان در ایجاد «برنامههای کاربردی حیاتی».
علاوه بر این، در نظر گرفته شده است که حرکت از C++ به کربن را تا حد امکان ساده کند.
نتیجه
در نهایت، سازندگان زبان کربن تلاش کردند تا به فرآیند ایجاد توجه کنند. کد پروژه برای درخواست در دسترس است و به صورت باز در آن ذخیره می شود گیتهابو فرهنگ آن فراگیر و برای شهروندان خصوصی و بخش فناوری اطلاعات باز است.
تیم کربن فکر میکرد که کربن باید یک پروژه مستقل باشد که توسط جامعه هدایت میشود و نه تنها پروژهای که توسط گوگل تامین میشود تا در آینده توسعه یابد.
Caruth افزود که با وجود علاقه تعدادی از مشاغل فناوری اطلاعات، این مفهوم هنوز در مرحله آزمایشی است.
پاسخ دهید