إكمالاً لما سبق في السلسلة السابقة .
للبدء في تحليل لعبة الشطرنج , انسى أي لغة برمجة ستستخدم و انسى قواعد البيانات و وواجهة البرنامج من حيث هل هو ويب او برنامج سطح مكتب او هاتف ذكي , انسى ايضاً نظام التشغيل كل ماذكرته هو إما تفاصيل او مجرد ادوات. ( سلسلة )
للبدء في تحليل لعبة الشطرنج , انسى أي لغة برمجة ستستخدم و انسى قواعد البيانات و وواجهة البرنامج من حيث هل هو ويب او برنامج سطح مكتب او هاتف ذكي , انسى ايضاً نظام التشغيل كل ماذكرته هو إما تفاصيل او مجرد ادوات. ( سلسلة )
اول خطوة هي فهم العمل - المشكلة - البزنس بعيداً عن التقنية , فإذا كان ما تصممه نظام محاسبي تعلم ما تستطيع عن المحاسبة , ليس لغرض أن تستغني عن المحاسبين و لكن ليسهل التواصل بينك و بينهم و لتكون هناك لغة مشتركة بينكم و لو بالحد الأدنى .
عندما صمم المبرمجين كمبيوتر Deep Blue استعانوا بأحد ابطال العالم في الشطرنج Joel Benjamin كخبير و وقع عقد مع IBM تحضيراً للمباراة مع كاسباروف.
ثاني خطوة بعد فهم المشكلة ( Business Domain ) هو تبسيطها , فنلاحظ مثلاً ان اللعبة يمكن أن تكون بلاعب واحد فقط في مقابل الكمبيوتر او بلاعبين , طبعاً لاعبين اسهل فلن ندخل في حساب الإحتمالات او الذكاء الإصطناعي . و يمكن بسهولة تأجيل جزئية اللعب مع الكمبيوتر كمرحلة ثانية.
المرحلة الثانية سيكون لها تحليلها الخاص مع عرض اهم الخوارزميات و الParadigm الأفضل و إن كنا سنستخدم الAI او لا. لذا لنؤجل هذه المرحلة و نركز على المرحلة الأولى الManual ( يلعبها شخصين حقيقين )
هناك مقولة "أن من يملك مطرقة , يرى كل الأشياء عبارة عن مسامير". ليس كل البرامج تعالج بنفس الطريقة و نفس اللغة و نفس قواعد البيانات التي تعرفها بحيث انك تستخدمها في كل برنامج يصادفك .. لنكمل.
الآن جاء دور اختيار الProgramming Paradigm ( نمط البرمجة ) المناسب من حيث أيهم أفضل لهكذا برنامج. في Deep Blue استخدموا Assembly مع C ما يعني انهم استخدموا Assembly Paradigm مع Procedural و لكن ..
في تلك السنة كانت جميع الProgramming Paradigms موجودة , لكن اختيارهم ذلك كان لأجل الكفائة و السرعة لاحتساب الاحتمالات و لم يكتفوا بذلك بل صمموا Hardware خاص بذلك بما فيها تعديل على الShips. فـDeep Blue عبارة عن كمبيوتر + برنامج.
بالنسبة لنا فذاك ليس مهماً فربما يكون معالج جهاز iPhone الان اقوى مما كان عليه ذلك السوبر كمبيوتر في ذلك الوقت. بالإضافة أننا لا نطمح لأن نهزم بطل العالم الحالي في الشطرنج. و لنقل أن ما يهمنا هو وقت الإنجاز و أن تعمل اللعبة بشكل جيد جداً و نتعلم اشياء كثيرة.
لعبة الشطرنج لعبة حرب بها اشخاص و ساحة و عمليات هجوم و قتل و ربح و خسارة فهي اشبه بالعالم الحقيقي الذي يمكن نمذجته Modeling بواسطة الObject Oriented Programming.
لكن هذا لا يمنع أن نستخدم Paradigm اخر في أي جزء من البرنامج. فمثلاً حساب الإحتمالات رياضي بحت و نعلم ان الFunctional Programming صممت خصيصاً للعمليات الرياضية.
مع كوننا قد نستخدم نمطين من البرمجة فهذا لا يعني أننا سنستخدم لغتين مختلفتين , بل يمكن استخدام لغة جافا او سي شارب او بايثون او غيرهم لذلك فالParadigm فكر برمجي, طريقة للنظر للمشكلة , لكن هناك لغات تدعم Paradigm معين من ناحية وضع قيود و في نفس الوقت تسهيلات لها. ( يتبع غداً.. )
جاري تحميل الاقتراحات...