"زنگ سسٹم پروگرامنگ کا مستقبل ہے، C نیا اسمبلر ہے" - انٹیل کے سرکردہ انجینئرز میں سے ایک کی تقریر

حالیہ اوپن سورس ٹیکنالوجی سمی (OSTS) میں جوش ٹرپلیٹانٹیل کے ایک سینئر انجینئر نے کہا کہ ان کی کمپنی C زبان کے ساتھ "برابری" تک پہنچنے میں دلچسپی رکھتی ہے جو اب بھی مستقبل قریب میں سسٹمز اور نچلی سطح کی ترقی پر حاوی ہے۔ اپنی تقریر میں "Intel and Rust: The Future of Systems Programming" کے عنوان کے تحت انہوں نے سسٹمز پروگرامنگ کی تاریخ کے بارے میں بھی بات کی کہ C کیسے ڈیفالٹ سسٹمز پروگرامنگ لینگویج بن گئی، Rust کی کون سی خصوصیات اسے C پر ایک فائدہ دیتی ہیں، اور یہ مکمل طور پر کیسے ہو سکتی ہے۔ پروگرامنگ کے اس شعبے میں C کو تبدیل کریں۔

"زنگ سسٹم پروگرامنگ کا مستقبل ہے، C نیا اسمبلر ہے" - انٹیل کے سرکردہ انجینئرز میں سے ایک کی تقریر

سسٹم پروگرامنگ سافٹ ویئر کی ترقی اور انتظام ہے جو ایپلیکیشن ایپلی کیشنز بنانے کے لیے ایک پلیٹ فارم کے طور پر کام کرتا ہے، اس بات کو یقینی بناتا ہے کہ مؤخر الذکر پروسیسر، RAM، ان پٹ/آؤٹ پٹ ڈیوائسز اور نیٹ ورک آلات کے ساتھ تعامل کرے۔ سسٹم سافٹ ویئر انٹرفیس کی شکل میں ایک خاص تجرید تخلیق کرتا ہے جو کہ ہارڈ ویئر خود کیسے کام کرتا ہے اس کی تفصیلات کو تلاش کیے بغیر ایپلیکیشن سافٹ ویئر بنانے میں مدد کرتا ہے۔

ٹرپلٹ خود سسٹم پروگرامنگ کی تعریف "کوئی بھی چیز جو ایپلی کیشن نہیں ہے۔" اس میں BIOS، فرم ویئر، بوٹ لوڈرز اور آپریٹنگ سسٹم کے کرنل، مختلف قسم کے ایمبیڈڈ لو لیول کوڈ، اور ورچوئل مشین کے نفاذ جیسی چیزیں شامل ہیں۔ دلچسپ بات یہ ہے کہ ٹرپلٹ کا خیال ہے کہ ایک ویب براؤزر بھی سسٹم سافٹ ویئر ہے، کیونکہ براؤزر بہت پہلے "صرف ایک پروگرام" سے زیادہ بن چکا ہے، جو ایک اسٹینڈ لون "ویب سائٹس اور ویب ایپلیکیشنز کے لیے پلیٹ فارم" بن چکا ہے۔

ماضی میں، زیادہ تر سسٹم پروگرام، بشمول BIOS، بوٹ لوڈرز اور فرم ویئر، اسمبلی کی زبان میں لکھے جاتے تھے۔ 1960 کی دہائی میں، اعلیٰ سطحی زبانوں کے لیے ہارڈویئر سپورٹ فراہم کرنے کے لیے تجربات شروع ہوئے، جس کے نتیجے میں PL/S، BLISS، BCPL، اور ALGOL 68 جیسی زبانیں تخلیق ہوئیں۔

پھر، 1970 کی دہائی میں، ڈینس رچی نے یونکس آپریٹنگ سسٹم کے لیے سی پروگرامنگ زبان بنائی۔ B پروگرامنگ لینگویج میں بنائی گئی، جس میں ٹائپنگ کی سہولت بھی نہیں تھی، C طاقتور اعلیٰ سطحی فنکشنز سے بھرا ہوا تھا جو آپریٹنگ سسٹمز اور ڈرائیوروں کو لکھنے کے لیے بہترین موزوں تھے۔ UNIX کے کئی اجزاء، بشمول اس کے دانا، کو آخر کار C میں دوبارہ لکھا گیا۔ اس کے بعد، اوریکل ڈیٹا بیس، ونڈوز کا زیادہ تر سورس کوڈ، اور لینکس آپریٹنگ سسٹم سمیت بہت سے دوسرے سسٹم پروگرام بھی C میں لکھے گئے۔

سی کو اس سمت میں زبردست تعاون ملا ہے۔ لیکن بالکل کس چیز نے ڈویلپرز کو اس میں تبدیل کیا؟ ٹرپلٹ کا خیال ہے کہ ڈویلپرز کو ایک پروگرامنگ لینگویج سے دوسری پروگرامنگ لینگویج میں تبدیل کرنے کی ترغیب دینے کے لیے، مؤخر الذکر کو پہلے پرانی خصوصیات کو کھونے کے بغیر نئی خصوصیات فراہم کرنا ہوں گی۔

سب سے پہلے، زبان کو "معقول طور پر متاثر کن" نئی خصوصیات پیش کرنی چاہئیں۔ "وہ اس سے بہتر نہیں ہو سکتا۔ منتقلی میں لگنے والی کوشش اور انجینئرنگ کے وقت کا جواز پیش کرنے کے لئے یہ نمایاں طور پر بہتر ہونا چاہئے،" وہ بتاتے ہیں۔ اسمبلی کی زبان کے مقابلے میں، سی کے پاس پیش کرنے کے لیے بہت سی چیزیں تھیں۔ اس نے کسی حد تک قسم کے محفوظ رویے کی حمایت کی، اعلیٰ سطحی تعمیرات کے ساتھ بہتر پورٹیبلٹی اور کارکردگی فراہم کی، اور مجموعی طور پر بہت زیادہ پڑھنے کے قابل کوڈ تیار کیا۔

دوم، زبان کو پرانی خصوصیات کے لیے معاونت فراہم کرنی چاہیے، جس کا مطلب ہے کہ C میں منتقلی کی تاریخ میں، ڈویلپرز کو یہ یقینی بنانا تھا کہ یہ اسمبلی زبان سے کم فعال نہیں ہے۔ ٹرپلٹ بتاتے ہیں: "ایک نئی زبان صرف بہتر نہیں ہو سکتی، اسے اتنی ہی اچھی بھی ہونی چاہیے۔" تیز تر ہونے اور کسی بھی ڈیٹا کی قسم کی حمایت کرنے کے علاوہ جسے اسمبلی لینگویج استعمال کر سکتی ہے، C کے پاس بھی تھا جسے Triplett نے "Escape hatch" کہا ہے—یعنی، اس نے اپنے اندر اسمبلی لینگویج کوڈ داخل کرنے کی حمایت کی۔

"زنگ سسٹم پروگرامنگ کا مستقبل ہے، C نیا اسمبلر ہے" - انٹیل کے سرکردہ انجینئرز میں سے ایک کی تقریر

ٹرپلٹ کا خیال ہے کہ سی اب وہ بن رہی ہے جو کئی سال پہلے اسمبلی کی زبان تھی۔ "C نیا اسمبلر ہے،" وہ اعلان کرتا ہے۔ اب ڈویلپرز ایک نئی اعلیٰ سطحی زبان کی تلاش میں ہیں جو نہ صرف ان مسائل کو حل کرے گی جو C میں جمع ہو چکے ہیں جنہیں اب ٹھیک نہیں کیا جا سکتا، بلکہ دلچسپ نئی خصوصیات بھی پیش کی جائیں گی۔ ایسی زبان کو کافی مجبور ہونا چاہیے کہ وہ ڈویلپرز کو اس میں تبدیل کر دے، محفوظ ہو، خودکار میموری کا انتظام فراہم کرے، اور بہت کچھ۔

"کوئی بھی زبان جو C سے بہتر بننا چاہتی ہے اگر وہ واقعی ایک زبردست متبادل بننا چاہتی ہے تو اسے صرف بفر اوور فلو تحفظ سے کہیں زیادہ پیش کرنا چاہئے۔ ڈویلپرز استعمال کے قابل اور کارکردگی میں دلچسپی رکھتے ہیں، تحریری کوڈ جو خود وضاحتی ہے اور کم لائنوں میں زیادہ کام کرتا ہے۔ سیکورٹی کے مسائل کو بھی حل کرنے کی ضرورت ہے۔ استعمال میں آسانی اور کارکردگی ساتھ ساتھ چلتی ہے۔ کسی چیز کو حاصل کرنے کے لیے آپ کو جتنا کم کوڈ لکھنا پڑے گا، اتنا ہی کم موقع ہے کہ آپ کو کوئی غلطی کرنے کا، سیکیورٹی سے متعلق ہے یا نہیں،" ٹرپلٹ بتاتے ہیں۔

زنگ اور سی کا موازنہ

2006 میں، Mozilla کے ملازم Graydon Hoare نے Rust کو ذاتی پروجیکٹ کے طور پر لکھنا شروع کیا۔ اور 2009 میں، Mozilla نے اپنی ضروریات کے لیے Rust کی ترقی کو سپانسر کرنا شروع کیا، اور زبان کو مزید ترقی دینے کے لیے ٹیم کو بھی بڑھایا۔

Mozilla کی نئی زبان میں دلچسپی کی ایک وجہ یہ ہے کہ Firefox کو C++ کوڈ کی 4 ملین سے زیادہ لائنوں میں لکھا گیا تھا اور اس میں کچھ اہم کمزوریاں تھیں۔ زنگ کو سیکیورٹی اور ہم آہنگی کو ذہن میں رکھتے ہوئے بنایا گیا تھا، جس سے براؤزر کے فن تعمیر کو مکمل طور پر دوبارہ ڈیزائن کرنے کے لیے کوانٹم پروجیکٹ کے حصے کے طور پر فائر فاکس کے بہت سے اجزاء کو دوبارہ لکھنے کے لیے یہ ایک بہترین انتخاب ہے۔ Mozilla Rust کو سروو تیار کرنے کے لیے بھی استعمال کر رہا ہے، ایک HTML رینڈرنگ انجن جو کہ آخر کار موجودہ فائر فاکس رینڈرنگ انجن کی جگہ لے لے گا۔ بہت سی دوسری کمپنیوں نے اپنے پراجیکٹس کے لیے Rust کا استعمال شروع کر دیا ہے، جن میں Microsoft، Google، Facebook، Amazon، Dropbox، Fastly، Chef، Baidu اور بہت کچھ شامل ہے۔

رسٹ سی لینگویج کے سب سے اہم مسائل میں سے ایک کو حل کرتا ہے۔ یہ خودکار میموری کا انتظام پیش کرتا ہے لہذا ڈویلپرز کو دستی طور پر مختص کرنے کی ضرورت نہیں ہے اور پھر اسے ایپلی کیشن میں موجود ہر چیز کے لیے آزاد کرنا پڑتا ہے۔ جو چیز رسٹ کو دوسری جدید زبانوں سے مختلف بناتی ہے وہ یہ ہے کہ اس میں کوئی کچرا جمع کرنے والا نہیں ہے جو خود بخود غیر استعمال شدہ اشیاء کو میموری سے ہٹاتا ہے اور نہ ہی اس میں رن ٹائم ماحول ہوتا ہے جو اسے کام کرنے کے لیے درکار ہوتا ہے، جیسا کہ جاوا کے لیے جاوا رن ٹائم ماحولیات۔ اس کے بجائے، زنگ میں ملکیت، قرض لینے، حوالہ جات اور زندگی بھر کے تصورات ہیں۔ "زنگ کے پاس کسی چیز کو کال کرنے کا اعلان کرنے کا ایک نظام ہے جس سے یہ ظاہر ہوتا ہے کہ آیا مالک اسے استعمال کر رہا ہے یا صرف اس سے قرض لے رہا ہے۔ اگر آپ محض کسی چیز کو ادھار لیتے ہیں تو، مرتب کرنے والا اس پر نظر رکھے گا اور اس بات کو یقینی بنائے گا کہ جب تک آپ اس کا حوالہ دیتے ہیں اصل جگہ پر موجود ہے۔ زنگ اس بات کو بھی یقینی بنائے گا کہ آبجیکٹ کو میموری سے ہٹا دیا جائے گا جیسے ہی اس کا استعمال مکمل ہو جائے گا، بغیر کسی اضافی وقت کے کمپائل ٹائم پر کوڈ میں متعلقہ کال داخل کرنا،" ٹرپلٹ کہتے ہیں۔

مقامی رن ٹائم کی کمی کو بھی زنگ کی ایک مثبت خصوصیت سمجھا جا سکتا ہے۔ ٹرپلٹ کا خیال ہے کہ یہ جن زبانوں پر چلتا ہے ان کا استعمال سسٹم پروگرامنگ ٹولز کے طور پر کرنا مشکل ہے۔ جیسا کہ وہ وضاحت کرتا ہے: "آپ کو کسی بھی کوڈ پر کال کرنے سے پہلے اس رن ٹائم کو شروع کرنا ہوگا، آپ کو اس رن ٹائم کو فنکشنز کو کال کرنے کے لیے استعمال کرنا چاہیے، اور رن ٹائم خود آپ کی پیٹھ کے پیچھے غیر متوقع وقت پر اضافی کوڈ چلا سکتا ہے۔"

مورچا بھی محفوظ متوازی پروگرامنگ فراہم کرنے کی کوشش کرتا ہے۔ وہی خصوصیات جو اسے میموری کو محفوظ بناتی ہیں وہ چیزوں کا سراغ لگاتی ہیں جیسے کہ کون سا دھاگہ کس چیز کا مالک ہے اور کون سی اشیاء کو تھریڈز کے درمیان منتقل کیا جا سکتا ہے اور کن کو تالے کی ضرورت ہے۔

یہ تمام خصوصیات زنگ کو ڈویلپرز کے لیے کافی مجبور کرتی ہیں کہ وہ اسے سسٹم پروگرامنگ کے لیے ایک نئے ٹول کے طور پر منتخب کریں۔ تاہم، متوازی کمپیوٹنگ کے لحاظ سے، زنگ ابھی بھی C سے تھوڑا پیچھے ہے۔

ٹرپلٹ ایک خصوصی ورکنگ گروپ بنانے کا ارادہ رکھتا ہے جو رسٹ میں ضروری خصوصیات کو متعارف کرانے پر توجہ مرکوز کرے گا تاکہ یہ سسٹم پروگرامنگ کے میدان میں C کو مکمل طور پر برابر، پیچھے چھوڑ اور اس کی جگہ لے سکے۔ میں Reddit پر تھریڈاپنی تقریر کے لیے وقف کرتے ہوئے، انہوں نے کہا کہ "FFI/C برابری گروپ تخلیق کے مراحل میں ہے اور اس نے ابھی تک کام شروع نہیں کیا ہے،" فی الحال وہ کسی بھی سوال کا جواب دینے کے لیے تیار ہیں، اور مستقبل میں وہ یقینی طور پر فوری منصوبے شائع کریں گے۔ تمام دلچسپی رکھنے والی جماعتوں کے لیے اپنے اقدام کے حصے کے طور پر زنگ کی ترقی کے لیے۔

یہ فرض کیا جا سکتا ہے کہ FFI/C برابری گروپ سب سے پہلے Rust میں ملٹی تھریڈنگ سپورٹ کو بہتر بنانے پر توجہ مرکوز کرے گا، BFLOAT16 کے لیے سپورٹ متعارف کرائے گا، جو ایک فلوٹنگ پوائنٹ فارمیٹ ہے جو نئے Intel Xeon Scalable پروسیسرز میں ظاہر ہوا ہے، اور ساتھ ہی ساتھ اسمبلی کو مستحکم کرنے پر۔ کوڈ کے اندراجات



ماخذ: 3dnews.ru

نیا تبصرہ شامل کریں