برنامج الأنظمة

برمجة الأنظمة ، أو برمجة النظم ، هي عملية برمجة برمجيات أنظمة الحاسوب . [ 1 ] يتمثل الفرق الرئيسي بين برمجة الأنظمة وبرمجة التطبيقات في أن برمجة التطبيقات تهدف إلى إنتاج برمجيات تقدم خدمات مباشرة للمستخدم (مثل معالج النصوص )، بينما تهدف برمجة الأنظمة إلى إنتاج برمجيات ومنصات برمجية تقدم خدمات لبرمجيات أخرى، أو تكون محدودة الأداء، أو كليهما (مثل أنظمة التشغيل ، وتطبيقات علوم الحاسوب ، ومحركات الألعاب ، والأتمتة الصناعية ، وتطبيقات البرمجيات كخدمة ). [ 1 ]

يتطلب برمجة الأنظمة مستوى عالٍ من الوعي بالأجهزة. هدفها هو تحقيق الاستخدام الأمثل للموارد المتاحة، إما لأن البرنامج نفسه بالغ الأهمية للأداء أو لأن حتى التحسينات الطفيفة في الكفاءة تتحول مباشرة إلى وفورات كبيرة في الوقت أو المال.

ملخص

تتميز برمجة الأنظمة بالخصائص التالية:

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

في برمجة الأنظمة، غالبًا ما تكون إمكانيات البرمجة محدودة. استخدام خاصية جمع البيانات المهملة التلقائية ليس شائعًا، وقد يكون تصحيح الأخطاء صعبًا في بعض الأحيان. مكتبة وقت التشغيل ، إن وُجدت أصلًا، عادةً ما تكون أقل قوة، وتُجري عمليات فحص أقل للأخطاء. بسبب هذه القيود، يُلجأ غالبًا إلى المراقبة والتسجيل ؛ وقد تحتوي أنظمة التشغيل على أنظمة فرعية متطورة للغاية للتسجيل.

يتطلب تنفيذ أجزاء معينة في أنظمة التشغيل والشبكات برمجة الأنظمة، على سبيل المثال تنفيذ الترحيل ( الذاكرة الافتراضية ) أو برنامج تشغيل جهاز لنظام التشغيل.

تاريخ

في الأصل، كان مبرمجو الأنظمة يكتبون بلغة التجميع بشكل دائم . أدت التجارب التي أُجريت على دعم الأجهزة في لغات البرمجة عالية المستوى في أواخر الستينيات إلى ظهور لغات مثل PL/S و BLISS و BCPL ، بالإضافة إلى لغة ALGOL الموسعة لأنظمة Burroughs الكبيرة . كما تُستخدم لغة Forth كلغة أنظمة. في السبعينيات، انتشرت لغة C على نطاق واسع، مدعومةً بنمو نظام Unix . ومؤخرًا، شهدت مجموعة فرعية من لغة C++ تُسمى Embedded C++ بعض الاستخدام، على سبيل المثال، تُستخدم في برامج تشغيل I/O Kit لنظام macOS . [ 2 ] أنشأ مهندسون يعملون في جوجل لغة Go في عام 2007 لتعزيز إنتاجية المطورين في الأنظمة الموزعة الكبيرة ، مع ميزات تركز على المطورين مثل التزامن ، وجمع البيانات المهملة ، وتجميع البرامج بشكل أسرع من لغتي C وC++. [ 3 ] في عام 2015، ظهرت لغة Rust ، وهي لغة برمجة عامة الأغراض تُستخدم غالبًا في برمجة الأنظمة. صُممت Rust مع مراعاة سلامة الذاكرة ولتكون بنفس كفاءة لغتي C وC++.

معنى بديل

لأسباب تاريخية، تستخدم بعض المؤسسات مصطلح "مبرمج أنظمة" لوصف وظيفة يُفضل تسميتها " مدير أنظمة" . وينطبق هذا بشكل خاص على المؤسسات التي هيمنت الحواسيب المركزية على مواردها الحاسوبية تاريخيًا ، مع أن المصطلح يُستخدم أيضًا لوصف وظائف لا تتضمن الحواسيب المركزية. نشأ هذا الاستخدام لأن إدارة حواسيب IBM المركزية غالبًا ما كانت تتطلب كتابة شفرة تجميع مخصصة ( لغة التجميع الأساسية من IBM (BAL))، والتي تتكامل مع نظام التشغيل مثل OS/MVS أو DOS/VSE أو VM/CMS . في الواقع، حظيت بعض منتجات برامج IBM بمساهمات برمجية كبيرة من موظفي برمجة العملاء. هذا النوع من البرمجة أصبح أقل شيوعًا تدريجيًا، ويُكتب بلغة C بدلًا من لغة التجميع، لكن مصطلح "مبرمج أنظمة" لا يزال يُستخدم كمسمى وظيفي فعلي للموظفين الذين يديرون حواسيب IBM المركزية حتى في الحالات التي لا يشاركون فيها بانتظام في أنشطة برمجة الأنظمة.

انظر أيضاً

مراجع

  1. 1 2 "حلقة نقاش: برمجة الأنظمة في عام 2014 وما بعده" . مايكروسوفت . تم الاطلاع عليه بتاريخ 4 ديسمبر 2015 .
  2. شركة آبل (14 أغسطس 2009). "إرشادات تصميم برامج تشغيل أجهزة مجموعة الإدخال/الإخراج" . developer.apple.com . شركة آبل . تم الاطلاع عليه بتاريخ 16 سبتمبر 2014 .
  3. "انطلق في جوجل: تصميم اللغة في خدمة هندسة البرمجيات - لغة برمجة جو" . go.dev . تم الاطلاع عليه بتاريخ 11 أبريل 2024 .

للمزيد من القراءة