▶ CPython 3.11+ import _internals_ 6 أقاليم

بايثون تحت
الغطاء

هذا المنهج ليس لتعلم بايثون. هو لتفكيكها. ننزل من 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. إذا فهمت كيف تراها بايثون، صرت قادراً على خداع الآلة.
اكتشف ←

المبادئ

هذه الفلسفة غير قابلة للتفاوض في كل درس:

// المصدر الوحيد

كل ما تحتاجه موجود في CPython source code. كل درس يوجهك إلى ملفات محددة في cpython/. اقرأ الكود المصدري، لا tutorials.