الدرس 0: لماذا نستخدم لغة مُصرّفة ومنخفضة المستوى؟
تكاد كل لغة شائعة اليوم (Python وJavaScript وJava) تدير الذاكرة نيابةً عنك تلقائيًا وتُشغّل شيفرتك عبر طبقة وسيطة. هذا مريح — إلى أن تصادف حالتين لا تتوفر فيهما هذه الراحة ببساطة. الأولى: برنامج يجب أن يعمل على شريحة مُدمجة لا تملك سوى نحو 2 كيلوبايت من الذاكرة RAM (حسّاس، أو ساعة ذكية، أو وحدة تحكم
تمنحك معظم اللغات سيارة أوتوماتيكية تسير بنفسها وتتولى كل ما يحدث تحت غطاء المحرك من تلقاء نفسها. أما C فتمنحك مقود قيادة ودواسات وشاشة عرض حيّة للمحرك — عمل أكثر، لكنك ترى بالضبط ما يجري، وتستطيع القيادة حتى في مكان لا تدخله السيارة الأوتوماتيكية ببساطة.
- لغة مُصرّفة
- لغة يُترجَم كودها المصدري مسبقًا (تصريف) إلى لغة الآلة، دون طبقة وسيطة تعمل جنبًا إلى جنب مع البرنامج وتفحص كل عملية.
- لغة منخفضة المستوى
- لغة قريبة من البنية الحقيقية للذاكرة والمعالج، ولذلك تكشف للمبرمج تفاصيل تخفيها اللغة عالية المستوى تلقائيًا.
- إدارة الذاكرة اليدوية
- نموذج يطلب فيه المبرمج الذاكرة ويحرّرها بنفسه، دون عملية خلفية (garbage collector) تقوم بذلك تلقائيًا.
- نظام مُدمج
- حاسوب صغير جدًا داخل جهاز (حسّاس، أو ساعة ذكية، أو وحدة تحكم بمحرك) بذاكرة محدودة ببضعة كيلوبايتات فقط.