الخلاصة والمصادر
الخلاصة: الخيط الجامع بين المسار كاملًا
- التفكير الحاسوبي أولًا، الصيغة ثانيًا: من Scratch إلى C، نفس أربعة أعمدة (تفكيك، أنماط، تجريد، خوارزميات) تحل كل مشكلة، فقط شكل التعبير عنها يتغيّر.
- المؤشرات هي المحور: بمجرد فهم "المؤشر كعنوان" في جزء المؤشرات، كل ما بعده (الذاكرة الديناميكية، القوائم المرتبطة، الأشجار، جداول التجزئة) هو تطبيقات متكررة لنفس الفكرة الواحدة.
- القياس قبل الحكم: من مختبرات الأداء إلى Big O، المسار كله يعلّمك ألا تثق بانطباعك عن الأداء أو الصحة، قِس، اختبر بـValgrind و GDB، وقارن بالأرقام.
- المسؤولية اليدوية عن الموارد: Git يتتبّع تاريخ كودك يدويًا، و C تدير ذاكرتها يدويًا (malloc/free)، كلاهما يعلّمك انضباطًا لا تحتاجه في أدوات أعلى مستوى تُخفي هذه التفاصيل عنك.
- الحاسوب يفسّر البايت بحسب السياق: الرقم والحرف والتعليمة قد تكون البايت نفسه، والمعنى يأتي من الاستخدام.
- الشل يوسّع قبل أن ينفّذ: أحرف البدل والمتغيرات تُوسَّع في الشل، والأمر يستلم النتيجة فقط.
- الذاكرة لها خريطة: مكدس وكومة ونص وبيانات: معرفة أين يعيش كل شيء تفسّر أغلب الأخطاء.
- لكل كتلة مالك واحد: حرّرها مرة واحدة، وصفّر المؤشر، ولا تعد مؤشرًا إلى محلي.
- الشكل يحكم الأداء: قائمة أم مصفوفة، متزنة أم متدهورة، n log n أم n²: البنية تحدد النمو.
من هنا فصاعدًا
كل مفهوم في هذا الدليل سيظهر مجددًا بصيغة أعقد في الأقسام القادمة (هندسة البرمجيات الأساسية، الخوارزميات، وغيرها)، الهدف لم يكن حفظ التفاصيل، بل بناء حدس يجعلك تتعرّف على هذه الأنماط أينما ظهرت لاحقًا.
قاموس المصطلحات
| المصطلح | التعريف | الجزء |
|---|---|---|
| Kernel (النواة) | الجزء المركزي من نظام التشغيل الذي يدير الذاكرة والمعالج والملفات مباشرة. | 1 |
| Docker Image / Container | قالب ثابت للتطبيق وتبعياته (Image) مقابل نسخة قيد التشغيل فعليًا منه (Container). | 1 |
| Compiler / Linker | المُصرِّف يترجم الكود المصدري لكود تجميعي؛ الرابط يجمع ملفات object في ملف تنفيذي واحد. | 2 |
| Benchmarking (القياس المعياري) | قياس أداء الكود (زمن، ذاكرة، طاقة) بأرقام فعلية بدل الانطباع. | 3 |
| Dereference (فكّ الإشارة) | الوصول للقيمة المخزَّنة في العنوان الذي يشير إليه مؤشر، عبر *ptr. | 4 |
| Null Terminator | حرف قيمته صفر ينهي أي سلسلة نصية في C، يخبر الدوال أين تتوقف عن القراءة. | 4 |
| Stack / Heap (المكدّس / الكومة) | المكدّس: ذاكرة محلية تُدار تلقائيًا. الكومة: ذاكرة ديناميكية تُدار يدويًا بـmalloc/free. | 5 |
| Memory Leak (تسريب الذاكرة) | نسيان تحرير ذاكرة محجوزة لم تعد مستخدَمة. | 5 |
| Dangling Pointer (المؤشر المتدلّي) | مؤشر يُستخدَم بعد تحرير الذاكرة التي كان يشير إليها. | 5 |
| Breakpoint (نقطة توقّف) | نقطة محدَّدة يوقف عندها GDB تنفيذ البرنامج لفحص حالته. | 6 |
| Collision (التصادم) | حصول مفتاحين مختلفين على نفس الفهرس في جدول التجزئة. | 7 |
| Binary Search Tree (BST) | شجرة ثنائية مرتّبة: كل يسار أصغر من العقدة، كل يمين أكبر. | 7 |
| Big O Notation | وصف رياضي لكيفية نمو زمن التنفيذ أو الذاكرة مع نمو حجم المُدخل. | 8 |
| Stable Sort (فرز مستقر) | خوارزمية فرز تحافظ على الترتيب النسبي الأصلي للعناصر المتساوية. | 8 |
| Von Neumann architecture | معمارية تخزن البرنامج والبيانات معًا في الذاكرة. | 1 |
| Program Counter (عداد البرنامج) | مسجل يحمل عنوان التعليمة التالية. | 1 |
| inode | بنية في القرص تحمل بيانات الملف وصلاحياته، والأسماء تشير إليها. | 1 |
| Wildcard (حرف بدل) | حرف مثل * أو ? يوسّعه الشل إلى أسماء ملفات مطابقة. | 1 |
| Layer (طبقة) | جزء غير قابل للتعديل من نظام ملفات صورة الحاوية. | 1 |
| Prototype (النموذج الأولي) | إعلان دالة يصف اسمها وأنواعها دون جسمها. | 2 |
| Scope (النطاق) | المنطقة التي يُرى فيها المتغير. | 2 |
| Wall time (الزمن الجداري) | الزمن الكلي المنقضي بما فيه الانتظار. | 3 |
| Pointer arithmetic (حساب المؤشرات) | جمع عدد إلى مؤشر يقفز بمقدار عدد × حجم النوع. | 4 |
| Stack / Heap (المكدس / الكومة) | منطقتان في ذاكرة العملية: الأولى للمتغيرات المحلية تلقائيًا، والثانية لما تحجزه بـ malloc. | 4 |
| Function pointer (مؤشر دالة) | متغير يحمل عنوان بداية دالة. | 5 |
| Use-after-free | استخدام مؤشر لكتلة سبق تحريرها. | 6 |
| Segmentation fault | إنهاء النواة للعملية عند وصولها لعنوان غير مسموح. | 6 |
| Load factor (عامل الحمل) | عدد العناصر مقسومًا على عدد سلال جدول التجزئة. | 7 |
| Traversal (المرور) | زيارة كل عقد الشجرة مرة بترتيب محدد. | 7 |
| Stable sort (فرز مستقر) | فرز يحافظ على الترتيب الأصلي للعناصر المتساوية. | 8 |
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.