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

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

ملخص
----

السمات التالية تميز برمجة الأنظمة:

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

تختلف برمجة الأنظمة عن برمجة التطبيقات

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

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

تاريخ
-----

في الأصل، كانوا مبرمجو النظام دائمًا يكتبون بلغة التجميع. لكن مع تطور العصر والتكنلوجيا ومع دعم الأجهزة لغه برمجه عالية المستوى في اواخر1960 مثل بليس(لغة برمجه) ولغة البرمجة الأساسية المختلطة وألغول (لغة برمجه) وأنظمة بوروز الكبيرة.فورث (لغة برمجة) تملك تطبيقات كلغة أنظمة. في سبعينيات القرن الماضي، أصبحت لغة C موجودة في كل مكان بفضل نمو يونكس. في الآونة الأخيرة ، شهدت مجموعة فرعية من C ++ تسمى Embedded C ++ بعض الاستخدام، على سبيل المثال يتم استخدامها في برامج تشغيل I / O Kit لنظام macOS .

الاستخدام البديل
----------------

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

انظر أيضًا
----------

* Ousterhout's dichotomy
* لغة برمجة النظام
* لغة البرمجة
* معالج المقاطعة

مراجع
-----

1. ↑  "Panel: Systems Programming in 2014 and Beyond". Microsoft. مؤرشف من الأصل في 2021-04-27. اطلع عليه بتاريخ 2015-12-04.
2. ↑  Apple Inc (14 أغسطس 2009). "I/O Kit Device Driver Design Guidelines". *developer.apple.com*. Apple Inc. مؤرشف من الأصل في 2016-08-28. اطلع عليه بتاريخ 2014-09-16.

قراءة متعمقة
------------

* برمجة النظم بواسطة جون جيه دونوفان

* أيقونة بوابةبوابة برمجة الحاسوب
* أيقونة بوابةبوابة علم الحاسوب

|  |  |
| --- | --- |
| ضبط استنادي: وطنية عدلها في ويكي بيانات | 
* المكتبة الوطنية الفرنسية (BnF)
* الملف الاستنادي المتكامِل (GND)
* المكتبة القومية الإسرائيلية (J9U)
* مكتبة الكونغرس (LCNAF)

 |