لغة التجميع: الفرق بين النسختين

[نسخة منشورة][نسخة منشورة]
تم حذف المحتوى تمت إضافة المحتوى
ط روبوت: +تصنيف:لغات برمجة +تنسيقات تجميلية
طلا ملخص تعديل
سطر 1:
{{تهذيب}}
:''راجع قسم "المصطلحات" أدناه، للحصول على معلومات خاصة باستعمال لفظة "تجميع" ولفظة "مجمع"''
 
'''لغات التجميع''' {{إنج|Assembly Languages،Languages}} هي مجموعة من اللغات ذات المستوى المنخفض Low-Level (بمعنى أنها مصممة لتتعامل مع الحاسوب أكثر من كونها مصممة ليتم البرمجة بها) تستخدم في برمجة أجهزة الكمبيوتر، المعالجات الدقيقة Microprocessors، المتحكمات الدقيقة Microcontrollers، وفي برمجة الدوائر المتكاملة Integrated Circuits (IC).وتقوم تلك اللغات بتحويل الكود والثوابت اللازمة لبرمجة بناء معين من وحدات المعالجة المركزية CPU، من شكله المعتمد على الرموز Symbolic إلى شكل آخر رقمي يسمى "كود الآلة" Machine Code.هذا التحويل/التمثيل Representation يتم تعريفه عادة عبر الشركات المصنعة للأجهزة، ويعتمد على مجموعة من الاختصارات التي تساعد المبرمجين على تذكر تعليمات البرمجة والسجلات Registers المستخدمة في عمليات البرمجة بسهولة. وهناك لغة تجميع محددة لكل بناء حاسوبي سواء كان فعليا Physical أو افتراضيا Virtual (بعكس معظم لغات البرمجة عالية المستوى High-Level، التي عادة ما تعمل مع معظم أنظمة الحاسوب).
 
وتستخدم أداة برمجية تسمى "المجمِع" Assembler في ترجمة السطور والتعليمات Instructions المكودة عبر '''لغة التجميع''' إلى "كود الآلة" التي يتم التعامل معها.ويقوم المجمع بتنفيذ ترجمة تماثلية (مثال: سطر مكتوب بلغة التجميع يتحول لسطر مكتوب بلغة الآلة، وهكذا -يسمى One-to-One Mapping) للجمل/السطور المخزنة في ذاكرة الحاسوب ويحولها لتعليمات وبيانات تفهمها الآلة Machine.وهذا يختلف عما يحدث في اللغات عالية المستوى، حيث يتم عادة ترجمة كل جملة إلى عدة أوامر تفهمها الآلة Machine Instructions.
السطر 125 ⟵ 126:
== استخدام لغة التجميع ==
=== نظرة تاريخية ===
تم تطوير لغة التجميع لأول مرة في الخمسينيات من القرن المنصرم، وقد تم الإشارة لتلك اللغات في هذا الحين على أنها "[[الجيل الثاني من لغات البرمجة|الجيل الثاني]]" من لغات البرمجة.وقد محت [[الجيل الثاني من لغات البرمجة|لغات الجيل الثاني]] الكثير من مشكلات منح-الأخطاء Error-Prone ومشكلات استهلاك الوقت التي اتصفت بها لغات البرمجة من "[[الجيل الأول من لغات برمجةالبرمجة|الجيل الأول]]" التي تعاملت مع الأجيال الأولى من أجهزة الكمبيوتر، وقد حررت اللغات الجديدة المبرمجين من الكثير من الأمور المملة مثل تذكر الرموز الرقمية وحساب عناوين الذاكرة.وقد استخدمت تلك اللغات يوما ما وبشكل واسع في جميع أنواع البرمجة.وعلى الرغم من ذلك، فإن مع الثمانينات (ومع التسعينات على الحواسب الصغيرة)، فقد استبدلت تلك اللغات بشكل واسع بلغات البرمجة عالية المستوى high-Level Languages، في البحث عن المزيد من التحسين لـ "إنتاجية" العمل البرمجي.واليوم، تستخدم لغة التجميع بشكل رئيسي في: التحكم المباشر في الأجهزة Hardware، الوصول إلى تعليمات المعالج المتخصصة Processor Instructions، أو لمعالجة مسائل حاسمة تتعلق بالسرعة/الأداء Performance.ومن الأنظمة التي تستخدم عادة لغات التجميع، تجد: مشغلات الأجهزة Device Drivers، النظم المطمرة Embedded Systems منخفضة المستوى، وأنظمة الوقت الحقيقي Real-Time.
 
وتاريخيا، فقد تم كتابة عدد كبير جدا من البرامج بشكل كلي باستخدام لغة التجميع.وقد تم كتابة بعض أنظمة التشغيل Operating Systems بلغة التجميع وبشكل حصري Exclusively، حتى تم انتشار لغة السي C بشكل واسع في فترة السبعينات وأوائل الثمانينات.وقد تم كتابة العديد من التطبيقات التجارية باستخدام لغة التجميع كذلك، ومنها كميات كبيرة من برمجيات تم كتابتها بواسطة شركات كبرى لتعمل على الحواسب الكبيرة Mainframes الخاصة المصنعة عبر شركة IBM.وعلى الرغم أنه -في نهاية الأمر- قامت لغات "كوبول" COBOL و"فورتران" FORTRAN باستبدال معظم هذا العمل، إلا أن عدد كبير من المنظمات/الشركات حافظت على نظمها وبنيها التحتية Infrastructure المبرمجة عبر لغة التجميع حتى التسعينات، حيث عملت طول هذه الفترة بشكل جيد.
 
وقد اعتمدت معظم الحواسيب الصغيرة Microcomputers على كود مكتوب يدويا باستخدام لغة التجميع، بما في ذلك نظم التشغيل Operating Systems والتطبيقات الكبيرة.وذلك لعدة أسباب: أولها أن تلك النظم حافظت على قيود شديدة على الموارد، فرضت خصوصية على الذاكرة Memory وعلى عرض بنية التطبيقات Architecture، وخفضت من نسبة الأخطاء Bugs التي تظهر أثناء عمل النظم.وربما كان الأهم من ذلك كله كانت الحاجة لوجود مترجمات للغة عالية المستوى من الدرجة الأولى First-Class، تكون مناسبة لاستخدام الحواسيب الصغيرة Microcomputers.وقد يكون هناك عاملا نفسيا قد لعب دورا أيضا: أن [[الجيل الاول من لغات برمجةالبرمجة|الجيل الأول]] من مبرمجي الحواسيب الصغيرة ظلوا يحتفظون بموقف الهواة Hobbyists والذي يمكن صياغته في العبارة: "الأسلاك والزرديات" Wires and Pliers -عبارة تشير إلى تمسك أولئك المبرمجين بالأسلوب "الصعب" للغة التجميع على الرغم من توافر أساليب "أسهل" مثل اللغات عالية المستوى-.
 
وفي اطار تجاري أكثر، فإن الأسباب الرئيسية لاستخدام لغة التجميع كانت: حجم Size أقل، مشكلات Overhead أقل، سرعة أعلى واعتمادية Reliability أعلى.