قابل احترام لیکن سست C++ کو تبدیل کرنے کی کوشش میں، گوگل کے محققین نے ایک بالکل نئی "تجرباتی" اوپن سورس پروگرامنگ لینگویج متعارف کرائی ہے جسے کاربن ڈب کیا گیا ہے۔
کاربن C++ کی جانشینی زبان کے طور پر کام کر سکتا ہے، جو کہ ڈویلپرز کے لیے ایک نئی زبان کے لیے ایک سادہ نقطہ آغاز فراہم کرتی ہے جو میموری کی حفاظت اور جنرک جیسے عصری ترقی کے تصورات کو حل کرتی ہے۔
یہ اسی طرح ہوگا جیسے مائیکروسافٹ نے جاوا میں کمزوریوں کو مضبوط کرنے کے لیے جاوا اسکرپٹ اور کوٹلن کو اپ ڈیٹ کرنے کے لیے ٹائپ اسکرپٹ بنایا۔
گوگل نے کئی سالوں کے دوران پروگرامنگ زبانوں کی ایک بڑی تعداد تیار کی ہے، جن میں سے کچھ نے خاصی شہرت اور اہمیت حاصل کی ہے۔
مثال کے طور پر، گولانگ (یا صرف گو) کو سرورز اور تقسیم شدہ نظاموں کی تخلیق میں سہولت فراہم کرنے کے لیے تیار کیا گیا تھا اور بعد میں اسے عام لوگوں نے قبول کر لیا ہے۔
ڈارٹ پروگرامنگ زبان، جسے JavaScript کے متبادل کے طور پر تخلیق کیا گیا تھا، Flutter کے آغاز تک معروف نہیں ہوا۔
گوگل کے ایک ملازم چاندلر کیروتھ نے 19 جولائی 2022 کو ٹورنٹو میں سی پی پی نارتھ کنونشن میں کاربن نامی ایک نئی پروگرامنگ لینگویج کے لیے اپنا آئیڈیا پیش کیا۔ Conor Hoekstra کے مطابق، جنہوں نے شرکت کی اور سلائیڈز ریکارڈ کیں۔
منظر نامے کو ترتیب دینے کے لیے، کیروتھ نے یہ ظاہر کیا کہ کس طرح موجودہ دور کی بہت سی سب سے زیادہ پسند کی جانے والی پروگرامنگ زبانوں کی اولادیں ہیں جو ڈویلپرز کو تیزی سے پیداواری ہونے اور عصری زبان کے ڈیزائن سے فائدہ اٹھانے کے قابل بناتی ہیں۔
آئیے کاربن پروگرامنگ زبان کے عمومی تعارف کے ساتھ شروع کرتے ہیں، بشمول اس کی خصوصیات، گوگل کی اس کی ایجاد کا مقصد اور مزید۔
کاربن پروگرامنگ زبان کا تعارف
19 جولائی 2022 کو، گوگل نے کاربن کو اپنی تخلیق کردہ سب سے نئی پروگرامنگ زبان کے طور پر ظاہر کیا۔ اس کا مقصد C++ کو تجرباتی طور پر تبدیل کرنا تھا۔
ایک کا شکریہ عام نظام، جو ہر انسٹی ٹیشن کے لیے کوڈ کو دو بار چیک کرنے کی ضرورت کو ختم کرتا ہے، کاربن کو جدید پروگرامنگ تصورات کی بنیاد پر بنایا جائے گا۔
سال کے آخر تک، ڈیزائن ایک بنیادی آپریشنل ورژن (ورژن 0.1) فراہم کرنے کا ارادہ رکھتا ہے۔
میموری کی سالمیت ایک اہم عنصر ہے جو C++ غائب ہے۔ حفاظتی خامیوں کے بنیادی ذرائع میں سے ایک میموری تک رسائی کے مسائل ہیں۔
متحرک حدود کی جانچ کی ترقی، غیر شروع شدہ ریاستوں کی زیادہ سے زیادہ ٹریکنگ، اور ایک مکمل ڈیفالٹ ڈیبگ بلڈ موڈ کاربن ٹیم کے تمام مقاصد ہیں۔ تخلیق کار وقت کے ساتھ ساتھ ایک محفوظ کاربن سب سیٹ بنانے کا ارادہ رکھتے ہیں۔
تاہم، نئی پروگرامنگ زبان کی کچھ اہم خصوصیات درج ذیل ہیں:
- اقسام کو نام دینے کے لیے اظہارات کا استعمال کریں۔
- تعریف کی جانچ کے ساتھ مضبوط جنرکس
- قسمیں خاص طور پر انٹرفیس کو انجام دیتی ہیں۔
- تعارفی جملے اور بنیادی گرامر
- پوائنٹر غیر محدود رسائی اور اتپریورتن کی اجازت دیتے ہیں۔
- فنکشن ان پٹ پیرامیٹرز کی قدریں صرف پڑھنے کے لیے ہیں۔
- روٹ نام کی جگہ پیکیج ہے۔
- APIs کو ان کے پیکیج کے ناموں کا استعمال کرتے ہوئے درآمد کیا جا سکتا ہے۔
- واضح آبجیکٹ پیرامیٹر کے ذریعے ایک طریقہ کا اعلان کیا جاتا ہے۔
- کلاسز بطور ڈیفالٹ فائنل ہوتے ہیں۔ صرف ایک وراثت ہے
کاربن کی خصوصیات
جدید اور ترقی پذیر
- کاربن ورژن کے درمیان اپ گریڈ آسان اور ٹول پر مبنی ہیں۔
- مضبوط زبان کی بنیادیں، خاص طور پر اگر آپ نے C++ استعمال کیا ہے، اور سیکھنا آسان ہے۔
- محفوظ بنیادیں اور میموری سے محفوظ سب سیٹ کے لیے مرحلہ وار طریقہ
اوپن سورس کی کمیونٹی کا خیرمقدم کرنا
- ایک کمیونٹی جو گرمجوشی، قبول کرنے، اور مدعو کرنے کی کوشش کرتی ہے۔
- اس کے مقاصد اور ترجیحات الگ اور مضبوط حکمرانی ہیں۔
- ایک کمپائلر، لائبریریوں، دستاویزات، ٹولز، پیکیج مینجمنٹ اور مزید کے ساتھ ایک ہمہ جہت حکمت عملی
فوری اور C++ کے ساتھ ہم آہنگ
- کے ساتھ مل کر کام کریں۔ C ++ کوڈ آپ کے پاس پہلے سے ہی وراثت اور ٹیمپلیٹس شامل ہیں۔
- LLVM کے ساتھ، کارکردگی کا موازنہ C++ اور بٹس اور پتوں تک کم سطح تک رسائی
- ایسی تعمیرات جو آپ کے موجودہ C++ بلڈ سسٹمز کے ساتھ تیز اور توسیع پذیر اور ہم آہنگ ہوں۔
گوگل نے کاربن پروگرامنگ زبان کیوں بنائی؟
کارکردگی کے لحاظ سے اہم سافٹ ویئر زیادہ تر C++ میں لکھا جاتا ہے، جس میں بہت زیادہ اور وسیع کوڈ بیس اور سرمایہ کاری ہوتی ہے۔
تاہم، اسے آگے بڑھنے اور ڈیولپرز کے مطالبات کو پورا کرنے میں دشواری کا سامنا ہے جیسا کہ اوپر ذکر کیا گیا ہے، جس کی بڑی وجہ سالوں کے تکنیکی قرضوں کی مالیت کو جمع کرنا ہے۔
C++ کو بتدریج بہتر بنانا بہت مشکل ہے کیونکہ اس کے تکنیکی قرض کے ساتھ ساتھ اس کے ارتقاء کے عمل میں مشکلات بھی ہیں۔
ان مسائل کو حل کرنے کے لیے مثالی طریقہ یہ ہے کہ زبان کی مضبوط بنیاد کے ساتھ آغاز کیا جائے، جیسا کہ ایک عصری جنرک نظام، ماڈیولر کوڈ ڈھانچہ، اور سی یا سی++ کی روایت کو براہِ راست وراثت میں ملنے کے بجائے مستقل، سیدھا نحو۔
Go, Swift, Kotlin, Rust، اور بہت سی دوسری ہم عصر زبانیں پہلے سے ہی ایک شاندار ترقی کا تجربہ پیش کرتی ہیں۔ ڈویلپرز جو ان موجودہ زبانوں میں سے کسی ایک کو استعمال کرنے کے اہل ہیں۔
بدقسمتی سے، C++ سے اپنانے اور منتقلی ان زبانوں کے ڈیزائن کی وجہ سے شدید رکاوٹ ہے۔ ان رکاوٹوں میں پرفارمنس اوور ہیڈ اور سافٹ ویئر کے محاوراتی ڈیزائن میں تبدیلیاں شامل ہیں۔
کاربن بتدریج C++ کو بہتر بنانے کی کوشش نہیں ہے۔ بلکہ، یہ ایک جانشینی زبان کی حکمت عملی ہے۔ اس کی توجہ C++ انٹرآپریبلٹی پر ہے، نیز اس وقت C++ استعمال کرنے والے ڈویلپرز اور کوڈ بیسز کے لیے وسیع پیمانے پر قبولیت اور منتقلی پر ہے۔
C++ متبادل زبان میں یہ ہونا ضروری ہے:
- C++ کے مقابلے کی کارکردگی ڈویلپرز کے لیے ایک اہم خصوصیت ہے۔
- C++ پروگرامرز کے لیے سیکھنے کا ایک قابل انتظام وکر اور واقفیت کی سطح
- منتقلی جو قابل توسیع ہے اور اس میں کچھ ماخذ سے ماخذ محاورہ C++ کوڈ ترجمہ شامل ہے۔
- موجودہ سافٹ ویئر کے فن تعمیر اور ڈیزائن کے لیے اسی طرح کی اظہار اور حمایت۔
- C++ کے ساتھ انٹرآپریبلٹی جو کہ ہموار اور دو طرفہ ہے، کسی بھی لائبریری کو باقی اسٹیک کو پورٹ کیے بغیر کاربن کو اپنانے کی اجازت دیتی ہے۔
اس حکمت عملی کے ساتھ، Google اس ماحولیاتی نظام میں اضافہ کرتا ہے جو C++ کے لیے پہلے سے موجود ہے اور موجودہ سرمایہ کاری، کوڈ بیسز اور ترقیاتی کمیونٹیز کو شامل کرتا ہے۔
کچھ زبانوں نے مختلف ماحولیاتی نظاموں کے لیے اس نقطہ نظر کو اپنایا ہے، اور کاربن ان حالات میں C++ کی طرح کام کرنے کی کوشش کرتا ہے:
- جاوا - کوٹلن
- جاوا اسکرپٹ - ٹائپ اسکرپٹ
- C++ - کاربن
C++ بمقابلہ کاربن کوڈ
اگر آپ پہلے سے ہی C++ ڈویلپر ہیں تو کاربن میں سیکھنے کا کم وکر ہونا چاہیے۔ یہ گرائمیکل تعمیرات کے ایک مقررہ سیٹ پر مشتمل ہے جو قدرتی لگنا چاہئے اور پڑھنے اور سمجھنے میں آسان ہونا چاہئے۔
C++ کوڈ کی ایک مثال:
یہ کاربن کوڈ اس سے مماثل ہے:
کاربن بمقابلہ زنگ
ایک اور عصری زبان جسے میموری سے محفوظ کارکردگی کی ایپلی کیشنز کی ضروریات کو پورا کرنے کے لیے واضح طور پر ڈیزائن کیا گیا ہے اسے Rust کہا جاتا ہے۔
تو کیوں نہ صرف زنگ کا استعمال کریں؟
جب کہ کچھ لوگ یہ استدلال کرتے ہیں کہ Rust، جو ایک Mozilla پروجیکٹ کے طور پر شروع ہوا تھا اور اس کے نتیجے میں بڑے پیمانے پر عوامی پیروکاروں میں اضافہ ہوا ہے، C++ کا جانشین ہے، کیروتھ کو شک ہے کہ آیا متوازی اب بھی درست ہے۔
بلاشبہ زنگ ایک لاجواب زبان ہے جس کے ساتھ ایک نیا پروجیکٹ شروع کرنا ہے، لیکن چونکہ اس میں جاوا اور کوٹلن جیسی زبانوں کی "دو طرفہ انٹرآپریبلٹی" کا فقدان ہے، اس لیے اسے آہستہ آہستہ منتقل کرنا مشکل ہے۔
کیروتھ نے سی پی پی نارتھ میں ایک لیکچر دیا اور ان لوگوں کی حوصلہ افزائی کی جو پہلے ہی زنگ استعمال کر رہے تھے کہ ایسا کرتے رہیں۔ ایسے ڈویلپرز جن کے پاس پہلے سے ہی بڑے پیمانے پر C++ کوڈ بیس موجود ہیں جو زنگ میں تبدیل ہونا مشکل ہیں انہیں کاربن استعمال کرنا چاہیے۔
خاص طور پر، کاربن وہ ہے جسے کیروتھ نے "جانشینی زبان" کہا ہے، جو کہ موجودہ ماحولیاتی نظام کے اوپری حصے میں تعمیر کی گئی ہے، اس مثال میں C++۔
اس مقصد کے لیے، کاربن کا مطلب موجودہ C++ کوڈ کے ساتھ مکمل طور پر ہم آہنگ ہونا ہے، چاہے اس کے Rust کے ساتھ بہت سے مقاصد ہوں، جیسے کہ "کارکردگی کے لیے اہم ایپلی کیشنز" بنانے میں پروگرامرز کی مدد کرنا۔
اس کے علاوہ، اس کا مقصد C++ سے کاربن میں منتقل کرنا ممکن حد تک آسان بنانا ہے۔
نتیجہ
آخر کار، کاربن زبان کے تخلیق کاروں نے تخلیق کے عمل پر توجہ دینے کی کوشش کی۔ پروجیکٹ کا کوڈ درخواست کے لیے دستیاب ہے اور اس پر کھلے عام ذخیرہ کیا گیا ہے۔ Github کے، اور اس کی ثقافت کی تعریف نجی شہریوں اور IT سیکٹر دونوں کے لیے جامع اور کھلی کے طور پر کی گئی ہے۔
کاربن ٹیم نے سوچا کہ کاربن کو کمیونٹی کے ذریعے چلنے والا ایک خود مختار پروجیکٹ ہونا چاہیے نہ کہ مستقبل میں ترقی کرنے کے لیے نہ صرف گوگل کے ذریعے چلنے والا پروجیکٹ۔
کیروتھ نے مزید کہا کہ متعدد آئی ٹی کاروباروں کی دلچسپی کے باوجود، یہ تصور ابھی بھی تجرباتی مرحلے میں ہے۔
جواب دیجئے