| تنفيذ البرامج  |
| --- |
| 
المفاهيم العامة |
| * الشيفرة
* المعالجة
	+ المترجم
		- وقت الترجمة
	+ قالب:تحسين المترجم
* التمثيل الوسيط
* قالب:التنفيذ (حوسبة)
	+ نظام وقت التنفيذ
		- وقت التنفيذ
	+ ملف التنفيذ
	+ المفسر
	+ آلة افتراضية
 |
| 
أنواع الشيفرات |
| * الكود المصدري
* شيفرة الكائن (Object code)
* شيفرة بايت
* لغة الآلة
* الشيفرة المصغرة
 |
| 
استراتيجيات التجميع |
| * في الوقت المناسب (JIT)
	+ قالب:ترجمة متتبعة في الوقت المناسب
* قالب:ترجمة سابقة للوقت (AOT)
* ترجمة ناقلة
* قالب:إعادة ترجمة ديناميكية
 |
| 
نظم أوقات التشغيل البارزة |
| * قالب:وقت التنفيذ أندرويد
* وقت التنفيذ المشترك للغات (CLR)
* قالب:سي أر تي 0
* آلة جافا الافتراضية (JVM)
* في 8
	+ نود.جِ إس
* محرك زند
 |
| 
المترجمات المميزة & سلاسل الأدوات |
| * مجموعة مترجمات جنو (GCC)
* قالب:إل إل في إم
 |
| * ع
* ن
* ت
 |

  للكود الداخلي تمامًا لبعض وحدات المعالجة المركزية (CPUs) والتي لا يمكن الوصول إليها عادةً من قبل المبرمجين، طالع الكود المصغر.
شاشة لغة الآلة في الكمبيوتر أحادي اللوحة دبليو دي سي 65816/65802، يُظهر مفكك الكود، وكذلك سجل المعالج ومقالب الذاكرة.
**لغة الآلة** أو **كود الآلة** (بالإنجليزية: Machine code)‏ هي برنامج كمبيوتر مكتوب في تعليمات **لغة الآلة** يمكن تنفيذه مباشرة من خلال وحدة المعالجة المركزية للكمبيوتر (CPU). تتسبب كل تعليمة في قيام وحدة المعالجة المركزية بأداء مهمة محددة جدًا، مثل التحميل أو القفز  أو عملية وحدة الحساب والمنطق على وحدة البيانات في سجل وحدة المعالجة المركزية أو الذاكرة.

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

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

إن كود الآلة هو، بالتعريف، أدنى مستوى من تفاصيل البرمجة المرئية للمبرمج، ولكن العديد من المعالجات تستخدم داخليا الكود المصغر أو تحسن تعليمات كود الآلة وتحولها إلى تتابعات من العمليات المصغرة ، وهذا لا يعتبر بشكل عام رمز الآلة في حد ذاته.

مجموعة التعليمات
----------------

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

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

ليس كل الآلات أو التعليمات الفردية لها معاملات صريحة. تحتوي الآلة المراكمة على مُجمّع مدمج يسفر عن تراكم ضمني لمعظم التعليمات الحسابية. تشتمل المعماريات الأخرى (مثل 8086 و عائلة x86) على إصدارات من تراكمات التعليمات الشائعة، مع اعتبار جهاز التراكم كأحد السجلات العامة من خلال إرشادات أطول. يحتوي الجهاز المكدس  على معظم أو كافة المعاملات الخاصة به على مكدس ضمني. غالبًا ما تحتوي تعليمات الأغراض الخاصة أيضًا على معاملات صريحة (على سبيل المثال، تعمل وحدة المعالجة المركزية في بنية x86 على كتابة القيم في أربعة سجلات للمقصد الضمني). هذا التمييز بين المعاملات الصريحة والضمنية مهم في مولدات الكود، خاصة في أجزاء تخصيص المسجل وتتبع النطاق الحي. يمكن لمُحسِّن الشفرة الجيد أن يتتبع المعامِلات الضمنية والصريحة التي قد تسمح بالانتشار المستمر  على نحو متكرر، مع طي مستمر  للمسجلات (مسجل يُنسب نتيجة تعبير ثابت يتم تحريره باستبداله بذلك الثابت) وتحسينات أخرى في الكود.

برامج الحاسوب
-------------

سميت برامج الحاسوب بهذا الاسم لتمييزها عن مكونات جهاز الحاسوب"الهارد وير" والتي تشمل ما يُعرف باسم لغة الآلة، «البرمجيات» عبارة عن سلسلة مرتبة من التعليمات .

وعادةً ما تكون هذه التعليمات مكتوبة بلغة برمجة عالية المستوى يمكن للإنسان التعامل معها بسهولة وكفاءة وهي أقرب إلى لغة البشر الطبيعية من اللغة البرمجية التي يفهمها جهاز الحاسب وهي لغة الآلة (Machine Language).

ويتم تحويل جميع الجمل البرمجية المكتوبة بلغات برمجة عالية المستوى وتنفيذها جملة جملة باستخدام المفسر (Interpreter) أو تنفيذها دفعة واحدة باستخدام المترجم Compiler.

والشفرة الناتجة من هذا التحويل يُطلق عليها لغة الآلة Machine Language أو شفرة الهدف Object Code. يمكن أيضًا كتابة البرامج باستخدام لغة الأسيمبلي(Assembly)- وهي - عبارة عن ترميز للغة البرمجية التي يفهمها الحاسب باستخدام الأحرف الهجائية الإنجليزية. هذا ويجب تحويل لغة Assembly إلى اللغة البرمجية التي يفهمها الحاسب باستخدام أداة المجمـِّع Assembler

مراجع
-----

1. ↑  مثل النسخ العادية من بيسيك، خصيصاً اللغات الأولية منه، وأيضاً سمول توك، ماتلاب، بيرل، بايثون روبي واللغات ذات الغرض الخاص الأخري أو لغات البرمجة النصيةs.
2. ↑  Bradley Kjell; kjell at ieee dot org. "Immediate Operand". مؤرشف من الأصل في 2016-04-19.`{{استشهاد ويب}}`: صيانة الاستشهاد: أسماء متعددة: قائمة المؤلفين (link)

مزيد من الاطلاع
---------------

* جون، هينيسي؛ ديفيد باترسون. *تنظيم وتصميم الكمبيوتر. واجهة العتاد/البرامج*. مورغان كاوفمان الناشرين. ISBN:1-55860-281-X. مؤرشف من الأصل في 2021-03-08.
* أندرو، تانينباوم. *تنظيم الكمبيوتر المنظم*. برنتيس هول. ISBN:0-13-020435-8.
* جلين، بروكشير. *علوم الكمبيوتر: نظرة عامة*. أديسون ويسلي. ISBN:0-321-38701-5.

| * ع
* ن
* ت
أنواع لغات البرمجة |
| --- |
| النمط | 
* مُعتمد على الفاعل
* مصفوفية
* جانبية المنحى
* فصيلية
* تسلسلية
* متزامنة
* نقل المعطيات
* تصريحية
* تفاضلية
* مخصصة النطاق
* ديناميكية
* غير إعتيادية
* مدفوعة بالحدث
* قابلة للتوسع
* وظيفية
* أمرية
* منطقية
* ماكرو
* وصفية
* كائنية
* كائنية التوجه
* أنابيب التجزئة
* إجرائية
* نموذجية
* منعكسة
* قائم على القواعد
* نصية
* مُكدسة
* متزامنة
* لمسية
* قالبية

 |
| المُستوي | 
* التجميع
* مُجمعة
* مُفسرة
* الآلة

* منخفضة المستوى
* عالية المستوى
* فائقة المستوى

 |
| الجيل | 
* الأول
* الثاني
* الثالث
* الرابع
* الخامس

 |
| ذا صلة | 
* غير إنجليزية
* مرئية

 |

|  |  |
| --- | --- |
| ضبط استنادي: وطنية عدلها في ويكي بيانات | 
* الملف الاستنادي المتكامِل (GND)

 |

| * ع
* ن
* ت
واجهة التطبيق الثنائية (ABI) |
| --- |
| الأجزاء والمُجمعات | 
* المحاذاة
* اصطلاح الاستدعاء
* مكدس الإستدعاءات
* مكتبة برمجية
	+ ثابتة
* لغة الآلة
* تجزئة الذاكرة
* تشويه الاسم
* كود الكائن
* مؤشر معتم
* كود مستقل عن الموضع
* نقل
* طلب النظام
* جدول الطريقة الافتراضية

 |
| مواضيع متعلقة | 
* توافق الكود الثنائي
* واجهة الدالة الخارجية
* ارتباط اللغة
* الرابط
	+ ديناميكي
* المُحمل
* معضلة العام 2038

 |

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