"الصدأ هو مستقبل برمجة النظام ، C هو المجمع الجديد" - كلمة ألقاها أحد المهندسين الرائدين في Intel

في المؤتمر الأخير لتكنولوجيا المصادر المفتوحة (OSTS) جوش تريبليتوقال أحد كبار المهندسين في شركة إنتل إن شركته مهتمة بوصول Rust إلى "التكافؤ" مع لغة C التي لا تزال تهيمن على الأنظمة والتطوير منخفض المستوى في المستقبل القريب. في خطابه وتحت عنوان "Intel and Rust: The Future of Systems Programming"، تحدث أيضًا عن تاريخ برمجة الأنظمة، وكيف أصبحت لغة C هي لغة برمجة الأنظمة الافتراضية، وما هي ميزات Rust التي تمنحها ميزة على C، وكيف يمكن ذلك تمامًا استبدل C في هذا المجال من البرمجة.

"الصدأ هو مستقبل برمجة النظام ، C هو المجمع الجديد" - كلمة ألقاها أحد المهندسين الرائدين في Intel

برمجة النظام هي تطوير وإدارة البرامج التي تعمل كمنصة لإنشاء تطبيقات التطبيقات، مما يضمن تفاعل الأخيرة مع المعالج وذاكرة الوصول العشوائي وأجهزة الإدخال / الإخراج ومعدات الشبكة. تقوم برامج النظام بإنشاء تجريد خاص في شكل واجهات تساعد في إنشاء برامج تطبيقية دون الخوض في تفاصيل كيفية عمل الأجهزة نفسها.

يعرّف تريبليت نفسه برمجة الأنظمة بأنها "أي شيء ليس تطبيقًا". يتضمن أشياء مثل BIOS، والبرامج الثابتة، وأدوات تحميل التشغيل، ونواة نظام التشغيل، وأنواع مختلفة من التعليمات البرمجية منخفضة المستوى المضمنة، وتطبيقات الأجهزة الافتراضية. ومن المثير للاهتمام أن تريبليت يعتقد أن متصفح الويب هو أيضًا برنامج نظام، حيث أصبح المتصفح منذ فترة طويلة أكثر من "مجرد برنامج"، ليصبح "منصة مستقلة لمواقع الويب وتطبيقات الويب".

في الماضي، كانت معظم برامج النظام، بما في ذلك BIOS وبرامج تحميل التشغيل والبرامج الثابتة، مكتوبة بلغة التجميع. في الستينيات، بدأت التجارب في تقديم دعم الأجهزة للغات عالية المستوى، مما أدى إلى إنشاء لغات مثل PL/S، وBLISS، وBCPL، وALGOL 1960.

ثم، في السبعينيات، أنشأ دينيس ريتشي لغة البرمجة C لنظام التشغيل يونكس. تم إنشاؤها باستخدام لغة البرمجة B، والتي لم يكن لديها حتى دعم للكتابة، وكانت لغة C مليئة بوظائف قوية عالية المستوى كانت مناسبة لكتابة أنظمة التشغيل وبرامج التشغيل. تمت إعادة كتابة العديد من مكونات UNIX، بما في ذلك النواة، في النهاية بلغة C. وفي وقت لاحق، تمت كتابة العديد من برامج النظام الأخرى، بما في ذلك قاعدة بيانات أوراكل، والكثير من كود مصدر Windows، ونظام التشغيل Linux، أيضًا بلغة C.

وقد تلقى C دعما هائلا في هذا الاتجاه. ولكن ما الذي جعل المطورين يتحولون إليه بالضبط؟ ويرى تريبليت أنه من أجل تحفيز المطورين على التحول من لغة برمجة إلى أخرى، يجب على الأخيرة أولاً توفير ميزات جديدة دون فقدان الميزات القديمة.

أولاً، يجب أن تقدم اللغة ميزات جديدة "مثيرة للإعجاب إلى حد معقول". "لا يمكن أن يكون أفضل. ويوضح قائلاً: "يجب أن يكون أفضل بكثير لتبرير الجهد والوقت الهندسي الذي يستغرقه إجراء التحول". بالمقارنة مع لغة التجميع، كان لدى لغة C الكثير لتقدمه. لقد دعم السلوك الآمن للكتابة إلى حد ما، ووفر إمكانية نقل وأداء أفضل مع بنيات عالية المستوى، وأنتج تعليمات برمجية أكثر قابلية للقراءة بشكل عام.

ثانيا، يجب أن توفر اللغة الدعم للميزات القديمة، مما يعني أنه في تاريخ الانتقال إلى C، كان على المطورين التأكد من أنها لم تكن أقل وظيفية من لغة التجميع. يوضح تريبليت: "لا يمكن للغة الجديدة أن تكون أفضل فحسب، بل يجب أن تكون بنفس الجودة أيضًا." بالإضافة إلى كونها أسرع ودعم أي نوع بيانات يمكن أن تستخدمه لغة التجميع، كان لدى لغة C أيضًا ما أسماه تريبليت "فتحة الهروب" - أي أنها تدعم إدخال كود لغة التجميع داخل نفسها.

"الصدأ هو مستقبل برمجة النظام ، C هو المجمع الجديد" - كلمة ألقاها أحد المهندسين الرائدين في Intel

يعتقد تريبليت أن لغة C أصبحت الآن لغة التجميع التي كانت موجودة منذ سنوات عديدة. يعلن أن "C هو المجمّع الجديد". يبحث المطورون الآن عن لغة جديدة عالية المستوى لن تحل المشكلات التي تراكمت في لغة C والتي لم يعد من الممكن إصلاحها فحسب، بل ستوفر أيضًا ميزات جديدة ومثيرة. يجب أن تكون مثل هذه اللغة مقنعة بدرجة كافية لجعل المطورين يتحولون إليها، ويجب أن تكون آمنة، وتوفر إدارة تلقائية للذاكرة، وغير ذلك الكثير.

"أي لغة تريد أن تكون أفضل من لغة C يجب أن تقدم أكثر بكثير من مجرد الحماية من تجاوز سعة المخزن المؤقت إذا كانت تريد حقًا أن تكون بديلاً مقنعًا. يهتم المطورون بسهولة الاستخدام والأداء، وكتابة التعليمات البرمجية التي تشرح نفسها بنفسها وتقوم بالمزيد من العمل في سطور أقل. القضايا الأمنية تحتاج أيضا إلى معالجة. سهولة الاستخدام والأداء يسيران جنبًا إلى جنب. يوضح تريبليت: "كلما قل عدد التعليمات البرمجية التي يتعين عليك كتابتها لتحقيق شيء ما، قلت فرصتك في ارتكاب أي أخطاء، سواء كانت متعلقة بالأمن أم لا".

مقارنة الصدأ و C

في عام 2006، بدأ غرايدون هور، أحد موظفي موزيلا، في كتابة Rust كمشروع شخصي. وفي عام 2009، بدأت Mozilla في رعاية تطوير Rust لتلبية احتياجاتها الخاصة، كما قامت بتوسيع الفريق لمواصلة تطوير اللغة.

أحد أسباب اهتمام Mozilla باللغة الجديدة هو أن Firefox تمت كتابته في أكثر من 4 ملايين سطر من كود C++ وكان به عدد لا بأس به من نقاط الضعف الحرجة. تم إنشاء Rust مع أخذ الأمان والتزامن في الاعتبار، مما يجعله خيارًا مثاليًا لإعادة كتابة العديد من مكونات Firefox كجزء من مشروع Quantum لإعادة تصميم بنية المتصفح بالكامل. تستخدم Mozilla أيضًا Rust لتطوير Servo، وهو محرك عرض HTML الذي سيحل في النهاية محل محرك العرض الحالي في Firefox. بدأت العديد من الشركات الأخرى في استخدام Rust في مشاريعها، بما في ذلك Microsoft وGoogle وFacebook وAmazon وDropbox وFastly وChef وBaidu وغيرها الكثير.

يحل Rust إحدى أهم مشاكل لغة C. فهو يوفر إدارة تلقائية للذاكرة حتى لا يضطر المطورون إلى تخصيصها يدويًا ثم تحريرها لكل كائن في التطبيق. ما يجعل Rust مختلفًا عن اللغات الحديثة الأخرى هو أنه لا يحتوي على أداة تجميع البيانات المهملة التي تقوم تلقائيًا بإزالة الكائنات غير المستخدمة من الذاكرة، كما أنه لا يمتلك بيئة التشغيل المطلوبة لتشغيله، مثل Java Runtime Environment for Java. بدلاً من ذلك، لدى Rust مفاهيم الملكية، والاقتراض، والمراجع، والعمر. "يمتلك Rust نظامًا للإعلان عن استدعاءات لكائن ما للإشارة إلى ما إذا كان المالك يستخدمه أم أنه يستعيره فقط. إذا قمت ببساطة باستعارة كائن ما، فسيقوم المترجم بتتبع ذلك والتأكد من بقاء الأصل في مكانه طالما قمت بالرجوع إليه. يقول تريبليت: "سيضمن Rust أيضًا إزالة الكائن من الذاكرة فورًا بعد اكتمال استخدامه، وإدراج استدعاء مناظر في الكود في وقت الترجمة دون وقت إضافي".

يمكن أيضًا اعتبار عدم وجود وقت تشغيل أصلي سمة إيجابية لـ Rust. يعتقد تريبليت أن اللغات التي يعمل عليها يصعب استخدامها كأدوات لبرمجة الأنظمة. كما يوضح: "يجب عليك تهيئة وقت التشغيل هذا قبل أن تتمكن من استدعاء أي رمز، ويجب عليك استخدام وقت التشغيل هذا لاستدعاء الوظائف، وقد يقوم وقت التشغيل نفسه بتشغيل تعليمات برمجية إضافية خلف ظهرك في أوقات غير متوقعة."

تسعى Rust أيضًا إلى توفير برمجة متوازية آمنة. نفس الميزات التي تجعلها آمنة للذاكرة تتتبع أشياء مثل أي مؤشر ترابط يمتلك أي كائن وأي كائنات يمكن تمريرها بين سلاسل الرسائل وأي كائنات تحتاج إلى قفل.

كل هذه الميزات تجعل Rust مقنعة بدرجة كافية للمطورين لاختيارها كأداة جديدة لبرمجة الأنظمة. ومع ذلك، فيما يتعلق بالحوسبة المتوازية، لا يزال Rust متأخرًا قليلاً عن لغة C.

تعتزم Triplett إنشاء مجموعة عمل خاصة ستركز على إدخال الميزات الضرورية في Rust حتى تتمكن من معادلة لغة C وتجاوزها واستبدالها بشكل كامل في مجال برمجة الأنظمة. في موضوع على رديتقال، المخصص لخطابه، إن "مجموعة FFI/C Parity في طور الإنشاء ولم تبدأ العمل بعد"، وهو الآن مستعد للإجابة على أي أسئلة، وفي المستقبل سينشر بالتأكيد خططًا فورية لتطوير Rust كجزء من مبادرته لجميع الأطراف المعنية.

يمكن الافتراض أن مجموعة FFI/C Parity ستركز أولاً على تحسين دعم الخيوط المتعددة في Rust، وتقديم الدعم لـ BFLOAT16، وهو تنسيق الفاصلة العائمة الذي ظهر في معالجات Intel Xeon Scalable الجديدة، بالإضافة إلى تثبيت التجميع إدراج التعليمات البرمجية.



المصدر: 3dnews.ru

إضافة تعليق