آي مما يأتي يعد لغة منخفضة المستوى
آي مما يأتي يعد لغة منخفضة المستوى، هي لغة برمجة يكثر استخدامها لتصميم تطبيقات الويب، و ماهي لغة التجميع، وهل تعتبر لغة التجميع تعتبر من اللغات.
ما هي لغة التجميع؟
في علوم الحاسوب، لغة التجميع بالإنجليزية: Assembly language هي الصيغة السهلة القراءة للبشر المقابلة للغة الآلة التي تشكل الأوامر التي ينفذها حاسوب بتصميم ما. فلغة الآلة عبارة عن تتابع من البتات (bits) تمثل عملية حاسوبية أو أمر للحاسوب، تصبح أسهل للقراءة عندما تستبدل برموز تعبر عنها وهذا ما يسمى symbolic representation. ان لغة التجميع لغة برمجة موجهة لبرمجة الحواسيب , المعالجات الصغرية ,المايكرو كونترولر microcontrollers , والدارات المتكاملة .integrated circuits IC.
ولكل معالج لغة تجميع خاصة به كما أن له "لغة آلة Machine Language" خاصة به. وتحتاج لغة التجميع ما يسمى "المجمـِّع" بالإنجليزية: Assembler وهو الذي يقوم بتحويل لغة التجميع التي يستطيع البشر قراءتها والتعديل فيها إلى لغة الآلة التي يستطيع المعالج تنفيذها. وتستخدم هذه اللغة الآن من قبل البشر وذلك لبرمجة أجزاء من نظم التشغيل أو للتاكد من سرعة وكفاءة تنفيذ بعض البرامج التي يحتاج فيها الكفاءة كبرامج المحاكاة والألعاب.
و تتكون اسطر برامج التجميع من ثلاثة أجزاء:
- العلامة (Label) و هو ما يتم به الاشارة لسطر ما في سطور أخرى.
- الأمر (Instruction) و هو يكون مناظر في الغالب لأمر في المعالج و هو ما سيقوم المعالج بتنفيذه عند الوصول لهذا السطر أثناء تنفيذ البرنامج.
- المعامل (Operand) و هو المتغير الذي سيتم تطبيق الأمر عليه.
تنقسم الأوامر إلى أربعة حقول :
- الاسم
- المعامل
- العملية
- التعليق
أمثلة على الأوامر :
START: MOV CX,5 ;initialize counter
- في المثال حقل الاسم هو START:
- العملية والمعامل MOV CX,5
- التعليق ;initialize counter
استخدام لغة التجميع:
- عند الحاجة لبرنامج تنفيذي ثنائي Binary قائم بذاته Stand-Alone، بمعنى: برنامج يجب أن يتم تنفيذه بدون اللجوء إلى مكونات Components أو مكتبات مرتبطة بلغة برمجة عالية المستوى أثناء وقت التنفيذ؛ وربما يكون هذا الوضع هو الأكثر شيوعا.وهذه أنواع مدمجة Embedded من البرامج، والتي تقوم بتخزين جزء صغير فقط من الذاكرة ويقوم الجهاز Device بتنفيذ مهام ذات غرض واحد Single Purpose. من تلك الأمثلة، تجد: الهواتف، أنظمة الوقود/إشعال الوقود في السيارات، أنظمة التحكم في تكييف الهواء، أنظمة الأمن وأجهزة الاستشعار.
- التفاعل المباشر مع العتاد، وعلى سبيل المثال في مشغلات الأجهزة Drivers ومعالجات الاعتراضات Interrupt Handlers.
- استخدام تعليمات خاصة بالمعالج Processor-Specific، غير متوفرة للمترجم Compiler.ومن الأمثلة الشائعة على ذلك، تعليمة الدوران في اتجاه البت Bitwise Rotation، والتي تستخدم في العديد من خوارزميات التشفير.
- عند الحاجة لتحسين شديد Extreme Optimization، ومثال على ذلك: في دوارة داخلية Inner Loop في خوارزمية تستهلك المعالج بشكل كثيف. ويستفيد مبرمجو الألعاب من الإمكانيات الخاصة بخصائص العتاد في تلك الأنظمة، مما يمكن ألعابهم لتعمل بشكل أسرع.
- في حالة وجود نظام ذو قيود شديدة على الموارد Resource Constraints (مثال: الأنظمة المضمنة)، لذلك وجب استخدام كود مكتوب يدويا لتحقيق الاستفادة القصوى من الموارد المحدودة، ولكن ذلك يصبح أقل شيوعا مع انخفاض أسعار المعالجات وتحسن مستوى الأداء/السرعة.
- في حالة عدم وجود لغة عالية المستوى -على سبيل المثال: على معالج خاص أو جديد-.
- في كتابة برمجيات من نوع "الزمن الحقيقي" Real-Time والتي تحتاج توقيتا دقيقا واستجابات دقيقة Responses، مثل برامج المحاكاة، نظم الملاحة الجوية والمعدات الطبية. وعلى سبيل المثال، في نظام التحكم في الطيران من نوع Fly-by-Wire، يجب ترجمة القياس عن بعد Telemetry واتخاذ إجراءات على أساس هذا القياس في ظل قيود زمنية صارمة -في أجزاء ضئيلة جدا من الوحدات الزمنية-. ويجب على تلك الأنظمة أن تتخلص من أي تأخيرات لا يمكن التنبؤ بها والتي قد تنشأ عبر لغات البرمجة المترجمة Interpreted، أو عبر الجمع الآلي للقمامة Garbage Collection، عمليات الـ Paging، أو تعدد المهام بشكل وقائي Preemptive Multitasking. وعلى الرغم من ذلك، فإن بعض لغات البرمجة عالية المستوى تقوم بإدماج مكونات من نوع Run-Time وإدماج واجهات لنظم التشغيل OS Interfaces والتي يمكنها أن تسبب مثل هذا التأخير. وهنا يعتبر اختيار لغة التجميع أو أي لغة منخفضة المستوى Lower-Level اختيارا جيدا مما يعطي المبرمج وضوح Visibility أكبر وسيطرة أفضل على تفاصيل المعالجة Processing.
- في حالة الحاجة إلى تحكم كامل في البيئة المحيطة Environment، في المواقف التي تتطلب اجراءات أمنية مشددة حيث لا يمكن أخذ أمر على أنه مفروغا منه Taken for Granted.
- لكتابة فيروسات الحاسوب، برامج من نوع Bootloaders، مشغلات لأجهزة بعينها، أو لأشياء أخرى تعمل بشكل قريب من العتاد أو من نظام تشغيل مكتوب بلغة منخفضة المستوى.
- لعمل هندسة عكسية لأكواد ثنائية موجودة، والتي قد تكون أو قد لاتكون كتبت بشكل أصلي عبر لغة برمجة عالية المستوى، وعلى سبيل المثال: في حالة اختراق Cracking حماية النسخة الخاصة ببرنامج محمي وله حقوق ملكية Proprietary Software.
- عمل هندسة عكسية وتعديل ألعاب الفيديو (معروف أيضا باسم ROM Hacking)، والذي يمكن عمله عبر عدة تقنيات. والطريقة الأكثر استعمالا هي تبديل كود البرنامج على مستوى لغة التجميع.
- كتابة كود يقوم بتعديل نفسه Selfmodifying، وتبرع لغة التجميع في مثل هذا الأمر.
- كتابة برامج الألعاب والتطبيقات الأخرى التي تتضن حسابات رسومية Graphing.
- كتابة برنامج لمترجم يقوم بتوليد كود تجميعي، وبالطبع سيكون كاتب (كتاب) هذا البرنامج من المتخصصين في البرمجة بلغة التجميع.
آي مما يأتي يعد لغة منخفضة المستوى
السؤال: آي مما يأتي يعد لغة منخفضة المستوى
الإجابة: لغة التجميع