لغة التجميع
استخدام لغة التجميع > نظرة تاريخية

تم تطوير لغة التجميع لأول مرة في الخمسينيات من القرن المنصرم، وقد تم الإشارة لتلك اللغات في هذا الحين على أنها «الجيل الثاني» من لغات البرمجة. وقد محت لغات الجيل الثاني الكثير من مشكلات منح الأخطاء Error-Prone ومشكلات استهلاك الوقت التي اتصفت بها لغات البرمجة من «الجيل الأول» التي تعاملت مع الأجيال الأولى من أجهزة الكمبيوتر. وقد حررت اللغات الجديدة المبرمجين من الكثير من الأمور المملة مثل تذكر الرموز الرقمية وحساب عناوين الذاكرة. وقد استخدمت تلك اللغات يوما ما وبشكل واسع في جميع أنواع البرمجة. وعلى الرغم من ذلك فقد استبدلت تلك اللغات بشكل واسع بلغات البرمجة عالية المستوى، في البحث عن المزيد من التحسين لـ «إنتاجية» العمل البرمجي. واليوم، تستخدم لغة التجميع بشكل رئيسي في: التحكم المباشر في العتاد، الوصول إلى تعليمات المعالج المتخصصة Processor Instructions، أو لمعالجة مسائل حاسمة تتعلق بالسرعة/الأداء Performance. ومن الأنظمة التي تستخدم عادة لغات التجميع، تجد: مشغلات الأجهزة Device Drivers، النظم المضمنة منخفضة المستوى، وأنظمة الوقت الحقيقي Real-Time.
وتاريخيا، فقد تم كتابة عدد كبير جدا من البرامج بشكل كلي باستخدام لغة التجميع. وقد تم كتابة بعض أنظمة التشغيل بلغة التجميع وبشكل حصري، حتى تم انتشار لغة السي C بشكل واسع في فترة السبعينات وأوائل الثمانينات. وتم كتابة العديد من التطبيقات التجارية باستخدام لغة التجميع كذلك، ومنها كميات كبيرة من برمجيات تم كتابتها بواسطة شركات كبرى لتعمل على الحواسب الكبيرة الخاصة المصنعة عبر شركة آي بي إم. وعلى الرغم أنه -في نهاية الأمر- قامت لغات كوبول وفورتران باستبدال معظم هذا العمل، إلا أن عدد كبير من المنظمات/الشركات حافظت على نظمها وبنيها التحتية المبرمجة عبر لغة التجميع حتى التسعينات، حيث عملت طول هذه الفترة بشكل جيد.
وقد اعتمدت معظم الحاسبات الدقيقة على كود مكتوب يدويا باستخدام لغة التجميع، بما في ذلك نظم التشغيل والتطبيقات الكبيرة وذلك لعدة أسباب. أولها أن تلك النظم حافظت على قيود شديدة على الموارد، فرضت خصوصية على الذاكرة Memory وعلى عرض بنية التطبيقات Architecture، وخفضت من نسبة الأخطاء Bugs التي تظهر أثناء عمل النظم. وربما كان الأهم من ذلك كله كانت الحاجة لوجود مترجمات للغة عالية المستوى من الدرجة الأولى First-Class، تكون مناسبة لاستخدام الحواسيب الدقيقة. وقد يكون هناك عاملا نفسيا قد لعب دورا أيضا: أن الجيل الأول من مبرمجي الحواسيب الصغيرة ظلوا يحتفظون بموقف الهواة Hobbyists والذي يمكن صياغته في العبارة: «الأسلاك والزرديات» Wires and Pliers -عبارة تشير إلى تمسك أولئك المبرمجين بالأسلوب الصعب للغة التجميع على الرغم من توافر أساليب أسهل مثل اللغات عالية المستوى-.
وفي اطار تجاري أكثر، فإن الأسباب الرئيسية لاستخدام لغة التجميع كانت: حجم Size أقل، مشكلات Overhead أقل، سرعة أعلى واعتمادية Reliability أعلى.
وكأمثلة نموذجية لبرامج كبرى كتبت بلغة التجميع في ذاك الوقت، تجد نظام التشغيل مايكروسوفت دوس، وبرنامج آي بي إم لمعالجة الجداول لوتس 1-2-3, وكذلك معظم الألعاب الشهيرة لعائلة الأتاري Atari 800 للحواسب المنزلية. وحتى في التسعينات، معظم ألعاب الفيديو من نوع Console تم كتابتها عبر لغة التجميع، بما في ذلك معظم ألعاب شركات Mega Drive/Gensis وشركة Super Nintendo لأنظمة الترفيه. ووفقا لبعض المطلعين داخل صناعة البرمجيات، فإن لغة التجميع كانت أفضل لغة حوسبة يمكن استخدامها من أجل أداء/سرعة عاليين لأجهزة سيغا ساترن -وهي أجهزة Console كانت تشتهر في مجال تطوير وبرمجة الألعاب-. وكذلك لعبة NBA Jam والتي ظهرت عام 1993 كلعبة من نوع Arcade ونالت شعبية كبيرة، تعتبر مثالا آخر. واعتبرت لغة التجميع هي لغة التطوير الأساسية على عدة منصات لوقت طويل، منها: كومودور 64، أتاري إس تي وكذلك حواسب المنزل من نوع إكس سبكتروم. وقد تسببت عدم كفاءة لغة البيسيك -في ذلك الوقت- في استمرار اعتماد تلك الآلات على لغة التجميع، لقد عاب البيسيك سببين: لم يوفر سرعة تنفيذ عالية مع هذه النظم، ولم يقدم تسهيلات كافية من أجل استخدام أفضل لإمكانيات العتاد الخاصة بتلك النظم. بعض الأنظمة، وعلى الأخص أميغا، لديها "بيئة تطوير متكاملة مع إمكانيات عالية لاكتشاف ومعالجة الأخطاء وإمكانيات "ماكرو"، مثل المُجمع المجاني ASM-One، مقارنة بإمكانيات برنامج مايكروسوفت فيجوال ستوديو (على الرغم من أن ASM-One يسبق مايكروسوفت فيجوال ستوديو من حيث وقت الإصدار).
وقد تم كتابة المُجمع VIC-20 عبر «دون فرينش» ونشرته شركة «فرينش سيلك».وقد تم كتابته في برنامج يبلغ من الحجم 1639 بايت فقط، مما يجعل صاحبه يعتقد أنه أصغر مجمع رمزي تم كتابته في التاريخ. ويدعم المُجمع نظم العنونة الرمزية والتعريفات الخاصة بسلاسل الحروف وسلاسل الرموز ذات النظام الـست عشري. ويسمح المُجمع أيضا بتعيرات العناوين Address Expressions والتي يمكن توحيدها Combined مع عمليات: الجمع، الطرح، الضرب، القسمة، Logical AND, Logical OR والمعاملات الأسية Exponentiation Operators.