بايثون تحت
الغطاء
هذا المنهج ليس لتعلم بايثون. هو لتفكيكها. ننزل من PyObject
في C إلى bytecode VM إلى الـ GIL. كل درس يبدأ بـ "ليش" قبل "كيف"، وكل لغز
يُجبرك على إعادة اختراع الآلية بنفسك.
0x0 typedef struct _object {
0x0 Py_ssize_t ob_refcnt; // reference count
0x8 PyTypeObject *ob_type; // pointer to type
0x10 } PyObject; // كل شيء يبدأ من هنا
الرحلة
ستة أقاليم. كل إقليم يبني على ما قبله. لا توجد جداول زمنية — التقدّم بالإتقان لا بالساعة. في النهاية سترى بايثون كلوحة دوائر كهربائية لا كصندوق أسود.
STAGE 01
الوهم الشفاف
PyObject · ob_refcnt · ob_type · id() · is() · descriptors
كل شيء object، لكن ماذا يعني "كائن" في لغة كُتبت بلغة C تحتاج لتعقب كل كيلوبايت؟ ننزل إلى struct الـ PyObject.
اكتشف ←
STAGE 02
الأسماء ليست صناديق
names · frames · closures · LEGB · aliasing · augmented assignment
"المتغيرات" في بايثون لا تشبه أي لغة أخرى. النموذج الذهني الخاطئ هنا يدمّر فهم كل ما هو قادم.
اكتشف ←
STAGE 03
بين النص والآلة
compiler · bytecode · stack VM · .pyc · closures · generators · async
قبل أن تشغّل بايثون كودك، تحوّله إلى bytecode يُنفَّذ على virtual machine stack-based. الـ
dis بوصلتك.اكتشف ←
STAGE 04
حياة القيم وموتها
refcounting · generational GC · arena allocator · interning · freelists
القيم تولد وتعيش وتموت. من يدير عمرها؟ وماذا يحدث لو نسيت بايثون أن تميتها؟ الذاكرة لا تعود للنظام أبداً.
اكتشف ←
STAGE 05
القفل الواحد
GIL · check interval · IO vs CPU · asyncio · multiprocessing · subinterpreters
بايثون تتظاهر بالتزامن لكنها لا تفعله حقاً. قفل عالمي واحد يمنع استخدام multi-core. لماذا هذا القرار "الغبي"؟
اكتشف ←
STAGE 06
لعبة البروتوكولات
C slots · descriptors · ABCs · Protocols · __method__ → tp_* mapping
for, with, +, [] — كلها بروتوكولات C-level. إذا فهمت كيف تراها بايثون، صرت قادراً على خداع الآلة.اكتشف ←
المبادئ
هذه الفلسفة غير قابلة للتفاوض في كل درس:
- "ليش" قبل "كيف" — لا نشرح آلية شيء قبل أن نشرح لماذا وُجد، وما المشكلة التي دفعت الناس لاختراعه.
- من القاع للقمة — ابدأ من اللبنات الأولية PyObject واصعد. الصورة تتشكّل من تركيب اللبنات.
- شجرة مترابطة — كل فكرة تُربط بعقدة سابقة. ممنوع أن تطفو فكرة بلا رابط.
- التحدي شرط المتعة — كل لغز صعب بدرجة تستفزّ. السهولة تقتل المتعة.
- بلا تبسيط مخلّ — لا نكرر ما تستطيع استنتاجه. الدقة قبل البساطة.
// المصدر الوحيد
كل ما تحتاجه موجود في CPython source code. كل درس يوجهك إلى ملفات محددة في cpython/. اقرأ الكود المصدري، لا tutorials.