التأسيس مهم , و لكن ليس للحد الذي نجهز اساسات لناطحة سحاب و نحن لا نحتاج إلا أن نبني شقة. كتب الComputer Architecture & Organization لا تقل عن 700 او 800 صفحة , كذلك نظم التشغيل , اقل منها بقليل كتب الAssembly (سلسلة افكار )
هناك ما يسمى بالJust enough أي ما يكفي تعلمه لكن للأسف لم يصادفني كتاب يشرح تلك الأمور بتلك الطريقة. ربما ان السبب هو ضرورة تحديد الوجهة الأخيرة , فالJust enough لمطور الويب يختلف عن مطور تطبيقات الموبايل و يختلف عن مطور تطبيقات الDesktop و الAI و الIoT و غيرها.
هناك الكثير من الأشياء المشتركة , ذلك ان خريطة التعليم عبارة عن Tree و ليست مجرد Path. على الأقل نحتاج بعض الجذور و جزء من ساق الشجرة و بعض الفروع الرئيسية حتى نصل للثمرة.
كون الكمبيوتر حالياً عبارة عن منتج شركات فالعلم ليس قطعي, بمعنى لكل شركة طريقتها في بناء التقنية و حتى في الشركة الواحدة هناك اكثر من نسخة من المنتج ذاته. لذا فالكتب العامة قد لا تكون مطابقة للواقع و هو الأغلب,
لغة الاسمبلي مثلاً ليس لغة واحدة بل ربما مئات اللغات , فلكل موديل CPU الISA الخاصه به و عليه تتغير الاسمبلي. حتى لو كانت معتمدة على معيار مثل MIPS او CISC إلا ان كل تطوير له بعض الInstructions الخاصة. هذا مجرد مثال.
الشاهد مما سبق انه اصبح من الصعب اتباع طريقة التعلم ( من الاسفل إلى الأعلى ) إلا في حدود الJust Enough كأن نأخذ فكرة عامة تشبع الفضول و تغلق دائرة المعرفة بمفهوم عام عن كيف يعمل ذلك الشيء.
ايضا مثلاً لا توجد لغة برمجة لا يذكر فيها الStack و الHeap لكنهما شيء يتعلق بالOperating System فيمكن الاقتصار على قراءة الفصل الخاص بادارة الذاكرة في كتب الOS و تجاهل فصول مثل الMultitasking على الاقل الان.
لكن هذا الفصل سيقودنا إلى النزول قليلاً الى الComputer Organization و كيف تعمل الذاكرة , فمهم مثلاً ان نعرف الCache بمراتبه الثلاث لأننا كلما كانت عملياتنا يمكن استيعابها من الCache الأصغر L1 كلما كانت العملية اسرع بعشرات المرات فيما لو كانت على L2.
تصلني اسئلة عن المنهج الأمثل للتعلم من الصفر, لعلي وضحت المشكلة في ايجاد شيء مثل هذا. لكن احيانا يدور حوار لمدة ساعة مع مبرمج ذو خبره بدأ بالحديث عن الPolymorphism يمر بالCompiler و الvtable و assembly إلى كيف تعمل الذاكرة في الOS و CPU لأن الRegister لا يمكنه استيعاب الStruct.
هذا النوع من النقاش او التعليم يعتبر Dynamic لا يمكن تمثيله في كتاب او حتى دورة إلا اذا كانت شخص لشخص لأن كل شخص له قدر مختلف من المعرفة فتعيد استراتيجيتك التعليمية مع كل سؤال يسأله و اكتشف اني اجهل الكثير. لذلك نميل دائماً إلى السؤال بدلاً من القراءة التي هي سرد مستهلك للوقت.
حوار كهذا اشبه بHyperlink التي يضغطها المتلقي مع كل سؤال توضيحي. في الستينات قبل ظهور الويب كان أصل الفكرة لTed Nelson هذا الرجل هؤ مبتكر الHyperlink و حلم في ذلك الوقت بنظام اكبر كثيرا من الويب الحالية, شيء يتشعب دون ان تفقد اصل الموضوع كما هو الحال الان.
لا اظن ان نظام كهذا مستحيل لكن به قدر من الصعوبة , فيمكن مثلا من خلال اسئلة يتم تقييم المتعلم و يؤخذ به عميقاً الى الRabbit Hole حتى يكتفي ثم يعود للموضوع الأصلي. إذا كانت هناك افكار اخرى يرجى وضعها فكلاً منا لديه ثغرات معرفية اذا حاول سدها بالقراءة تفتح له ثغرات اكثر.
جاري تحميل الاقتراحات...