بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
هذه نبذة عن بعض اللغات (لقد عرضت الفكرة على المراقب القدير جافا وقد شجعني عليها)
أولا : الاسيمبلي
لغة التجميع
إذا اقتربنا من لغة الآلة واستخدمنا لغة التجميع ، فنجد أننا نخسر المرونة والعمومية . فلغة التجميع تفتقر إلى التجريد ومن الصعوبة بمكان تعديل جزء من برنامج مكتوب بها دون إعادة النظر في باقي أجزائه . كما أنها تحاكي ، بطبيعتها ، نوع الجهاز الذي تعمل عليه لدرجة أن أي تغيير في الأجهزة الملحقة بالحاسب ( مثل نوع الشاشة ) غالباً ما يستوجب إعادة صياغة بعض تعليمات البرنامج . أما من الناحية الإيجابية ، فإن لغة التجميع تكسبنا سرعة ( Speed ) وسلطة ( Power ) لا مثيل لهما في اللغات عالية المستوى . أما السرعة ، فتنتج من أن برامج لغة التجميع تخاطب المعالج المركزي ( CPU ) مباشرة ودون وسيط ( مترجم ) .
فإذا كنت على دراية تامة بمزايا هذا المعالج ( نقاط ضعفه ونقاط قوته ) أمكنك صياغة برنامجك بحيث تستفيد من نقاط قوته وتتجنب نقاط ضعفه . أما المترجم ، فلقد صمم لترجمة أي برنامج كيفما تمت صياغته وبالتالي لن يستطيع ، في كل الحالات ، أن يجاري برامج لغة التجميع سرعة وكفاءة .
إن انعدام الوسيط بين البرنامج المجمع والحاسب يؤدي أيضاً إلى زيادة سلطة هذا البرنامج على الجهاز . إذ إن المترجم ، كأي برنامج آخر ، يفرض على المبرمج شروطاً وقواعد خاصة به وباللغة التي يترجمها . هذه الشروط تؤدي بشكل مباشر إلى الحد من مجال العمليات التي يمكن للمبرمج أن يطلبها . فمترجم لغة باسيك مثلاً ، يمنع المبرمج من " تدوير " البتات التي يتكون منها عدد ما ( لأن مثل هذه العملية ليست من مفردات لغة باسيك ) رغم أن المعالج المركزي في الجهاز يستطيع أن يقوم بهذه العملية . وكذلك نجد أن مترجم برامج باسكال لا يسمح بوضع قفل ( Lock ) على أحد الملفات المخزنة على قرص مركزي يشترك في استعماله عدة مستخدمين ، رغم أن المعالج المركزي ونظام التشغيل يسمحان بهذه العملية . ولكن ، لنتذكر أن القدر الكبير من السلطة والتحكم الذي توفره لنا لغة التجميع لا يأتي مجاناً ، بل تصاحبه مسؤولية كبيرة . فمع زيادة السلطة يزداد العبء ويجدر الحذر .
فالسلطة التي تمكنك من قراءة أي قطاع من القرص بسهولة ، مثلاً ، تتيح لك تخريب سائق الاسطوانات تخريباً تاماً ، وبنفس السهولة !
لماذا نستعملها ؟
لقد رأينا أن لغة التجميع تفتقر إلى المرونة ( مما يجعل كتابة وصيانة برامجها صعبة نسبياً ) وإلى العمومية ( التي تجبرنا على إعادة كتابة نفس البرنامج كلما تغير الجهاز ) وأنها تتطلب توخي الحذر وتحمل قدر كبير من المسؤولية ( إذ بدونها يمكن للبرنامج أن يعطب الجهاز ) . فإذا ابتلت لغة بهذا الوابل من المساويء ، جاز لنا أن نطرح السؤال : لماذا نستعملها أصلاً ؟
هذا حقاً سؤال وجيه . ونحن في الواقع نسعى دائماً إلى تجنب لغة التجميع إلا عند الضرورة القصوى ، حين تكون ميزاتها ( السرعة والسلطة ) أساسية لعمل النظام . ففي نظم الزمن الحقيقي ( Real time systems ) مثلاً ( كنظام الطيار الآلي ونظم الدفاع الجوي ونظم التحكم الصناعي ) تكون سرعة النظام هي معيار نجاحه أو فشله ، ولذا لابد من الاستعانة بلغة التجميع للوصول إلى السرعة المنشودة . وحتى عندما لا تكون السرعة أساسية بكل معنى الكلمة لعمل النظام ، قد نضطر إلى استخدام لغة التجميع ، جزئياً ، في برامجنا لتحقيق المواصفات المطلوبة من المستعمل أو محلل النظم ( كما يحدث في التطبيقات التجارية عندما نفرز Sort عدداً كبيراً من البيانات ) .
أما الموجب الثاني لاستخدام هذه اللغة فهو السلطة التامة على الجهاز أو أحد ملحقاته . فعند كتابة برنامج متعدد المستعملين ( multi - user ) ، كثيراً ما نضطر إلى وضع قفل على أحد سجلات ملف ، لكي لا نسمح لمستخدم آخر أن يكتب عليه أثناء عملنا . وكما نوهنا سابقاً فإن لغة باسكال القياسية لا تؤمن هذه الخدمة / مما يضطرنا إلى تنفيذها بلغة التجميع .
وبشكل عام ، فإن أي تحوير في عمليات الإدخال أو الإخراج القياسية سيضطرنا إلى استخدام لغة التجميع ، ولو جزئياً في برامجنا .
ولقد ظهر مؤخراً موجب ثالث لاستخدام هذه اللغة ، لا ينبثق من ميزاتها الأساسية ( سرعة + سلطة ) ، بل من السرعة المذهلة التي تتطور بها تقنية الحاسبات في الآونة الأخيرة . إذ لم تستطع الشركات المصنعة لبرامج النظم ( وعلى رأسها المؤلفات ) مواكبة سرعة تطور الأجهزة (Hardware) بل تختلف عنها بفارق يصل في بعض الأحيان إلى خمس سنوات! فنجد مثلاً ، أن مؤلفات اللغات الشهيرة لم تستطع التعامل مع المعالج الحاسبي المساعد ( arithmetic co-processor ) من النوع 8087 أو 80287 إلا عام 1986م ، رغم أن هذا المعالج ظهر إلى الأسواق في أوائل الثمانينات . وها قد مضى الآن أكثر من عامين على ظهور أجهزة PS/2 ، دون أن يظهر أي مؤلف يستفيد من مزاياها الكبيرة . أما على مستوى لغة التجميع ، فالصورة مختلفة : إذ إن هذه اللغة لا تحتاج إلى مترجم بكل معنى الكلمة ، بل كل ما تحتاج إليه هو قاموس صغير لمرادفات جملها بلغة الآلة . ومن السهولة بمكان توفير هذا القاموس ( أي المجمع ) مع كل جهاز أو نظام تشغيل جديد . لهذا تمكن مستعملوا هذه اللغة من تقديم برامج متطورة تواكب كل جديد في تقنية الحاسب ، سابقين بذلك من أصر على استخدام لغات المستوى الأعلى .
نلخص إذن بأن علينا تجنب استخدام لغة التجميع إلا في الحالات الثلاث الآنفة الذكر . ونضيف هنا أنه حتى في تلك الحالات ، علينا أن نعمد لاستخدامها جزئياً ، أي كبرنامج فرعي ، يتم طلبه من البرنامج الرئيسي الذي يكتب بلغة عالية أو حديثة .
ترقبوا (نبذة عن الفيجوال بيسك)يتبع..................