لكي تفهم كيفية عمل الحاسوب فعليك تعلم لغة التجميع Assembly [ما مدى صحة هذه العبارة؟]

قرأتها في إحدى اﻹجابات في موقع Quora وقائلها مهندس برمجيات يعمل منذ ما يقرب من ثلاثين عاما .

وهذا جزء من كلامه (حسبما أتذكر) :

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

وفي وقت لاحق شاهدت فيديو للدكتور عبد الله عيد في حلقات "كلام مبرمجين" يدعو فيها لتعلم لغة C لفهم كيفية عمل الحاسوب .

وهنا أود معرفة الفارق بين اللغتين وهل لا زال لهما وجود وهل توجد بالفعل فائدة من تعلم إحداهما ؟ أم اﻷفضل اختصار الوقت وتعلم لغة أحدث مثل Java,Python .... إلخ


KAKR أضف ردا

نوعما ما. لا تحتاج ان تتعلمها بالتفصيل، فهم سطحي سيكون كافي لا عطاءك فكرة عن كيف ينفذ المعالج الاوامر وذلك اهم ما عليك ان تفهمه.

جميع لغات البرمجة وجدت لتسهيل برمجة الحاسوب. الحاسوب جهاز رقمي اي يعمل وفق نظام ثنائي يتكون من رقمين الصفر والواحد وهما ما يمثلان انقطاع او وجود التيار الكهربائي. معالج الحاسوب يستقبل الاوامر بهذا الشكل فقط. بطبيعة الحال، برمجة الحاسوب بلغة الالة صعب جداً وغير عملي. لذلك قام المبرمجين بعمل/تصميم لغات برمجة تكون اعلى من لغة الالة حتى يستطيع الانسان برمجة الحاسوب بسهولة.

حتى يتمكن الحاسوب فهم هذه اللغات اخترعوا الـ Compilers وهي - في بادئ الامر - برامج مكتوبة مباشرة بلغة الالة تحول اللغات العليا (التي يستطيع الانسان فهمها وكتابتها بسهولة) للـ Machine Language. الـ C من أقرب اللغات للـ Assembly، بسبب احتوائها على ال Pointers التي تمكنك من التعامل مع الذاكرة، وبسبب انعدام ال Garbage Collector بحيث ينجبر المبرمج على تنظيم ذاكرة برنامجه يدوياً وان يتعامل مباشرة مع العتاد - تقريبا. من ذلك المنطلق تشكل الانطباع بأن فهم الـ C ضروري لفهم كيفية عمل الحاسوب.

شاهد هذا الفيديو - مقارنة بين لغة الـ C والاسمبلي:

وان يتعامل مباشرة مع العتاد - تقريبا

التعامل المباشر مع العتاد هي ميزة حصرية لنظام التشغيل، ولا يمكن لبرامج المستخدم (ذات الحلقة الـ ٣) أن تستخدم أمري الإدخال والإخراج، اللذان يُتستعملا للإرسال البيانات واتستقبالها إلى ومن العتاد.

لذا فالطريقة الوحيد هي استخدام دوال النظام لتنفيذ أوامر العتاد.


طبعًا برنامج النظام يُمكن أن يكون مُبرمجًا بالسي، وفي هذا يُستعان بلغة التجميع - داخل السي عادةً - لاستخدام أوامر د خ.

أشكرك على المعلومات الوافية .... ما فهمته من تعليقك هو عدم التعلق بالماضي واختصار الوقت وتعلم الجديد فقط ؟