مشكلة انني كمبرمج قد ظللت فترة طويلة حياتي هي المنطق والabstraction. كل شيء مصنف بدقة إلى فئات وفصائل ومجردات. انعكس ذلك على اسلوبي في الحديث والكتابة ايضاً.
إن المبرمج يحب جداً ما يسمى التجريد. تجده في البرنامج يتعامل مع سيارة، سيارة نقل، موتوسيكل، فيقول "هاه! إن هذه الاشياء ما هي إلا مركبات!" ثم يبدأ بعمل صنف جديد اسمه مركبة، ويضع فيه الصفات المشتركة بين المركبات كلها، ويقول ان الموتوسيكل والنقل وغيره يندرج تحت هذا الصنف. ثم يكتشف ان المركبات، المأكولات، الملبوسات هي أشياء تباع وتشترى في برنامجه، فيختلق صنفاً جديداً اسمه "سلع" ويدرج الفصائل السابقة تحته، وهكذا حتى تجد ابنية عالية متعددة الطوابق من التجريد.
هذا شيء جيد إن كنت تتعامل مع آلة، لكن مع بشر؟ التجريد في التفاهم البشري؛ في الكتب، الابحاث العلمية، التعليم (وخاصة التعليم!!) يؤدي إلى ارتفاع كثافة المعلومات بطريقة غير عادية، مع انخفاض سهولة فهم هذه المعلومات. انظر إلى الآتي:

انتشر هذا الاسلوب أيضا في كتب الدولة الاسلامية القديمة. انظر مثلاً لهذا النص من كتاب "تهافت الفلاسفة" يصف فيه آراء الفلاسفة اليونانين تمهيداً للرد عليها (لست متأكد من صحة وضعي لعلامات الترقيم):
...قولهم يستحيل صدور حادث من قديم مطلقاً؛ لأنا إذا فرضنا القديم ولم يصدر منه العالم مثلاً فإنما لم يصدر لأنه لم يكن للوجود مرجح، بل كان وجود العالم ممكناً إمكاناً صرفاً...فإذا حدث بعد ذلك لم يخل إما أن تجدد مرجح أو لم يتجدد، فإن لم يتجدد مرجح بقي العالم على الإمكان الصرف كما قبل ذلك، وإن تجدد مرجح فمن محدث ذلك المرجح؟ ولم حدث الآن ولم يحدث من قبل؟ والسؤال في حدوث المرجح قائم...
هل فهمت شيئاً؟ ولا أنا.
انظر الآن إلى أي مقال من مفكر حديث، او paper علمية، أو،...أو..تجد ان الموضوع يراعى فيه الكثافة، الدقة، المنطق، لكن ليس بالضرورة صالحاً للاستهلاك البشري.
او انظر مثلاً لهذه الجملة التي غالباً قد قرأتها في كتاب النحو في المدرسة:
لتحويل الفعل الماضي للمبني للمجهول يضم أوله ويكسرما قبل آخره، ولتحويل المضارع يضم أوله ويفتح ما قبل آخره .
كنت اقول لنفسي: لماذا يتعبون نفسهم في قول هذا؟ لماذا لا يقولون "الفعل مثل أكل يحوّل إلى أُكِل، ومثل يضرب يصير يُضرَب"، وانتهى الأمر.
نعود لفكرة التصوير الفني، في القرآن او في غيره. ما هي؟ لن اقدم تعريفاً علمياً دقيقاً، لكن التصوير بشكل عام يتعامل مع الحواس لا فقط العقل. مثلاً من كتاب سيد قطب: "...واشتعل الرأس شيباً". إن الجمال هنا ليس فقط في اساليب البلاغة التقليدية، ولكن لأنه يجعل القاريء يتخيل شيء مثل animation sequence مثل رأس اسود الشعر فجأة ...ششششش... اشتعل شيباً!
نفس الموقف في "وفجرنا الأرض عيوناً"..تشعر فعلاً بانفجار فجأة وخروج الماء من كل جانب كأنك تراه - درووووم - بالمؤثرات الصوتية. وهنا نجد شيئاً مهماً: لقد ابتعدنا عن التجريد، ودخلنا في الصور الحقيقية المجسدة.
لقد اكتشفت منذ مدة - انا المبرمج الذي يحب التجريد، أن التجريد وسيلة جيدة للتعبير الدقيق المحكم لكن ليس التعبير سهل الفهم والتصور. وقد تحدثت في مقالات سابقة للمدونة عن هذا. كتبت مثلاً مقالاً قصيراً اسمه "عن الكتابة" ملخصه هو العبارة الشهيرة "show, don't tell"..
يقول الروائيون: لا تقل "وغضب احمد غضباً شديداً"، بل قل "حين سمع احمد الخبر، القى القلم بعنف نحو الجدار".
وكتبت في مقال نقد فيديو "انكسار الضوء" لتحرير اكاديمي أن هناك دور للفيديوهات التعليمية؛ أن تفهم العين مع الدماغ. نحن نقرأ عن الموجات والجاذبية والتفاضل، لكننا في الأغلب لا نراها. وكتبت في مقال اسمه "فلتكن اشياء حقيقية" كيف ان المجتمع ينسى اسباب السعادة الحقيقية ويجري وراء الاسباب الرمزية..الموضوع مؤثر فيّ جداً كما ترون.
يتحدث الكاتب الشهير جورج اورويل (مؤلف 1984) عن دور اللغة في تأييد الطغيان السياسي، وأنه كلما زادت اللغة جموداً وبعداً عن المعاني الثرية المتنوعة كان اسهل السيطرة على عقول الناس. ونحن نرى هذا بالفعل (مثلا) في المصطلحات العسكرية الامريكية الحديثة. إن مصطلح مثل AWOL يعني اختفاء مفاجيء للجندي بلا سبب معروف. لكن هذا الاختصار متجرد من كل صورة يمكن ان يتخيلها المستمع: انه لا يرسم لك الجندي التائه ولا يعطيك فرصة ان تعتبره بشراً.
يقول اورويل ان الكلمات احيانا تسيطر هي على المعنى فتجعل الكاتب يغير مقصده، لأنه يريد استخدام كلمة معينة فيطوع المعنى للكلمة وليس العكس. ما الحل في رأيه؟ يقول:
Probably it is better to put off using words as long as possible and get one's meaning as clear as one can through pictures and sensations. Afterward one can choose -- not simply accept -- the phrases that will best cover the meaning, and then switch round and decide what impressions one's words are likely to make on another person.
إنه يتحدث مرة اخرى عن الصور والاحاسيس..فهل ينفذ شخصياً كلامه؟ انظر لهذه الجملة على لسان احد الشخصيات في قصة 1984: "إن أردت رؤيةً للمستقبل، تخيل حذاءاً ثقيلاً يدوس على وجه بشريٍ للأبد".
بالمناسبة، علم Computer science على ما يبدو من انه علم مطلق فإنه في الواقع مليء بالتشبيهات والتصويرات، وهو نقطة اخرى تضاف إلى الاساب التي تجعلني فخوراً بانضمامي لهذا العلم من قريب او بعيد..انظر إلى الصور الخلابة:
- الخطأ البرمجي اسمه bug كالحشرة.
- دائرة نقل البيانات اسمها Bus كالأتوبيس.
- هياكل البيانات اسماؤها مشتقة من صور طبيعية: الشجرة، الطابور، الكومة، الرزمة، tree/queue/heap/stack.
لماذا احكي لك عزيزي القاريء كل هذه الامثلة والتحليلات (اقصد لاسباب غير انه موضوع جميل احب التحدث فيه)؟ لسبب بسيط جداً: لأنك إن أردت أن تكون رجل نهضة أو امرأة نهضة، أو أردت أن تساعدني في مشاريعي، فإن التصوير والهروب من التجريد سيكونان اصدقاء لك في الرحلة.

هل تريد ان تطور التعليم؟ انظر للمعادلة الاحصائية في أول المقال وفكر: كيف يمكن شرحها بطريقة جديدة..فكر في آلة حاسبة تأخذ بعض البيانات وتحسب الانحراف المعياري بطريقة مرئية، ثم هناك بعض الازرار لتغيير شكل البيانات..مثلا ماذا يحدث لو غيرت المتوسط (المرموز له بحرف x فوقه خط) كيف سيتأثر الرسم؟ ماذا لو لم يكن التعبير بين الأقواس مرفوعاً للاس 2؟ لماذا اخذت الجذر الربيعي في النهاية وقسمت على N-1؟
نحن نردد دائماً شعار ان العلم ليس فقط حفظ ولكن لابد ان يعرف الطلبة الفائدة مما يتعلمون ومن أين جاء...الخ. هذا يأخذ صور كثيرة. في حالة الانحراف المعياري مثلاً يمكن ان نتحدث عن تطبيقاته العملية، واثبات القانون، لكن نحتاج أيضاً إلى حس بشري بديهي عن لماذا يأخذ القانون صورته التي يأخذها ولماذا عرّفناه هكذا. ربما يوجد هذا الحس عند شخص احصائي استخدم القانون سنين طويلة في عمله، لكنه ليس عند الطالب المبتديء. هل هناك طريقة لنقل ذلك الحس كما ننقل التمثيل الرياضي؟ لابد هنا ان ننظر في علوم كثيرة مثل اللغة والتصوير والتبصير visualization وتأثير الحواس في المعنى. وأن نعترف أن التجريد ليس كل شيء. انظر إلى مشاريع Kill Math لتر بعض الافكار في قتل التجريد، وهو المصدر الذي أخذت منه فكرة القوانين الرياضية وتجسيدها :)
(لمزيد من الامثلة الشيقة، انظر Visual proofs أو Proof without words)
أو مثلاً عند تعليم الاطفال البرمجة، أنا لا اريد تعليمهم المباديء البسيطة فحسب بل المباديء المتقدمة (تمهيدا للتفكير الحوسبي وكل هذا الكلام). فكر في مبدأ صعب مثل covariance. في لغة Scala - وهي لغة عبقرية - يمكن التعبير عن الcovariance هكذا:
class List[+T]...
وهي كما نرى طريقة دقيقة ومختصرة (كثيفة المعلومات) لكن شرحها لمبتديء ليس سهلا بدون حكاية طويلة عن الcovariance.
لم اضف هذه المزية - اقصد covariance - للغة كلمات بعد، لكن لو اضفتها ستكون غالبا هكذا:
فصيلة قائمة من ت:
قائمة من تفاحة هي قائمة من فاكهة
....باقي التعريفات
نهاية
اعتقد ان كثير منا قد عرف معنى الconvariance الآن :)
قد يعترض قاريء ويقول ان الاسلوب ليس عاماً بما يكفي، وليس مجرداً بما يكفي..أي لغة برمجة تلك التي تعتبر - في سياق معين - ان "تفاحة" و"فاكهة" هي كلمات مفتاحية يفهمها الcompiler؟ اقول: وما المانع؟
وانه يمكن ان نذهب ابعد بكثير، ويكون في المستقبل مجال جديد من "البرمجة الحسية" بأن تكتب البرنامج كخليط من الكود والرسومات التوضيحية والامثلة. أو ان تأخذ مكونات برمجية مرئية تستخدمها..هل تعرف لعبة age of empires؟ تخيل لغة برمجة مثل هذا لكن بدلا من الفلاحين والفرسان هناك مكونات فرز بيانات ورسم بيانات وتخزين بيانات، وانت تعطيها الاوامر كما تعطي الاوامر لجنودك: انت أيها العامل تنقل البيانات إلى "الطاحونة" التي تستخرج منها الجزء المطلوب، بينما أنت ترسمها، ...الخ. ربما يعطي هذا للمجتمع نوع من "الديموقراطية الحوسبية" بحيث يمكن لفئة كبيرة جداً من المجتمع أن تبرمج.
أيضاً مشاريع النهضة تحتاج إلى ان يفهمها المجتمع. وقد كتبت كثيييراً عن التفكير الحوسبي ومازال القليل هو الذي يفهمه، إلى أن قيل لي: تحدث عن آثاره الحقيقية على المجتمع.
اوه! كأنني كنت نائم وافقت! انا اقول للناس كلها "اظهر ولا تخبر"، ثم اجد نفسي اخبر الناس عن التفكير الحوسبي ولا اظهره لهم؟ لأ عيب يا محمد :)
لهذا تراني بعد هذا الاكتشاف كتبت مقالا آخر فيه اخذ كل المواد الدراسية المصرية واحوسبها. هكذا يرى القاريء اثراً حقيقياً للتفكير الحوسبي على التعليم، وإن شاء الله بعد ذلك يمكن كتابة مقالات اخرى عن دور التفكير الحوسبي في تحديث الصناعة يتناول ليس فقط النظريات بل السيارات والاسمنت والشيبسي...أشياء حقيقية!
وبعد، أرجو أن أكون قد أضفت سلاحاً فكرياً جديداً لك عزيزي القاريء. اتمنى لك التوفيق في رحلة النهضة!
هناك 3 تعليقات:
إني أتفق معك تمام الإتفاق في هذا المقال فالرسول (ص) أيضا كان يشرح لأصحابه بالصورة و ليس بالكلام. لقد شاهدت مؤخرا فيديو يتكلم عن شيء قريب من هذا في البرمجة (http://vimeo.com/36579366) هذه الطريقة في التعليم بالفعل؛ شيء مذهل!
( لن تكلف نفسك عزومة :) )
أعتقد إني ابتديت أستوعب ليه أنا بكره البرمجه! عشان الabstraction العالي جدًا في دراستها .. في حين إني كنت بحب الData Structures و ده لإنها فيها تصوير و حركة الداتا إزاي و ما إلى ذلك
@Yasmine Madkour
فكرة تستحق المزيد من البحث، ربما يمكن اجراء بعض التجارب في هذه النقطة كذلك. هل يمكن ياترى تدريس الDS لاشخاص في سن اصغر مما نتخيل؟ أيضا لاحظت تعبير "حركة البيانات"..!
واعتقد على العموم انه يمكن للبرمجة ان تكون اقل تجريداً واكثر تصويراً. ربما تكون صورتها شديدة التجرد الآن عائقاً لنمو العلوم الحوسبية..
إرسال تعليق