الجمعة، 28 سبتمبر 2012

المستقبل للحوسبة

في كاليفورنيا، تم السماح قانونياً بتسيير السيارة التي تقود نفسها. هل هي سيارة حقاً؟ هي مليئة بأجهزة الرادار، الكاميرات، GPS، والقائد الذي يتعامل مع كل هذه الإشارات، يفسر الصور ويخطط للرحلة ويرسل الأوامر للسيارة، هو في النهاية برامج. هو algorithms. هو حوسبة. ما نسميه سيارة يسميه آخرون كمبيوتر على عجلات. والتحدي الأكبر في صنع السيارة لم يكن الجزء الميكانيكي، بل الـAI, Computer Vision, ...الخ

ماذا عن السيارات "المملة" التي يقودها إنسان؟ مليئة هي الأخرى بالحوسبيات. يقول هذا المقال أن بعض السيارات المرسيدس الحديثة بها حوالي 100 معالج دقيق، ويتحدث بالتفصيل في هذا الموضوع.

فلنترك العملي ونذهب للنظري: نظرية الألوان الأربعة Four color theorem لم يكن من السهل إثباتها بالورقة والقلم مثل النظريات الرياضية التقليدية، بل تم الاستعانة بالكمبيوتر في إثباتها (اختزال كل الحالات إلى بضعة آلاف من الحالات الخاصة، ثم التأكد بالكمبيوتر أن كل من هذه الحالات الخاصة يمكن تلوينها بأربعة ألوان). هنا لم يكن الكمبيوتر يقوم بدور "IT"، بل بدور بحثي علمي صرف.

ماذا عن الروبوتات؟ هذا الروبوت الذي صممته تويوتا، هل تظنه مجرد أجزاء ميكانيكية مترابطة، تم تجميعها بمفك؟ لو كنت مبرمجياً لأتى على بالك كمية البرمجة المطلوبة ليعمل مثل هذا الجهاز مثلما تراه يعمل.

وسوف يكون للروبوتات دور كبير عسكري. هل لعبت ألعاباً استراتيجية مثل Red Alert أو Age of empires؟ الآن تخيل لو كان الذكاء الاصطناعي الخاص بهذه الألعاب قد ارتفع مستواه كثيراً، وصار يتحكم في "وحدات" حقيقية. جيش من بضع عشرات من الآليين يفكرون كأنهم عقل واحد ينفذون خطة مشتركة. من سيبرمج هذا؟

لاحظ أن مصطلح الحوسبية ليس معناه "اخبرني نتيجة 5+12" فحسب. بل إن كل ما يلي جزء من الحوسبة:
  • برنامج يأخذ صورة ويضع دائرة حول كل الوجوه البشرية فيها.
  • برنامج يخطط أفضل مسار للسيارة للوصول إلى شارع معين.
  • برنامج يأخذ وصفاً للوحداث العسكرية المتاحة والبيئة المحيطة ويقدم خطة حربية.
  • برنامج يأخذ بيانات المبيعات للعشر سنين الماضية ويقدم نصائح لخطط تسويقية أفضل.
  • برنامج يأخذ خريطة للموائد في قاعة الاحتفالات، وقائمة للمدعوين والعلاقات بينهم [صداقة، أسرية] ويقدم خطة مثلى لتوزيع المدعوين على الموائد.

الآن المفاجأة: هل تعلم أن كليات حاسبات في مصر تعمل في هذه الأشياء منذ سنين؟ لدينا مشاريع تخرج في الرؤية بالكمبيوتر، في أشياء مرتبطة بالروبوتات. في التخطيط الأوتوماتيكي في الألعاب الاستراتيجية. وأكثر.

لهذا أتمنى أن تأخذ حاسبات فرصتها، لأنها أكبر بكثير من "الكلية اللي بتطلع مبرمجين يشتغلوا في شركات برمجة". إنها الكلية ذات الموقع الأساسي في النهضة وصنع المستقبل. والعناية بها قد تجعلنا من "اللاعبين" في الملعب التكنولوجي العالمي بدلاً من "المتفرجين".

لا يهمني كثيراً اللقب والنقابة، بل يهمني أن تكون الكلية في مستوىً علمي يرتفع باستمرار. أن تجذب المواهب إليها (معلمين أو طلبة جدد). أن تُحل مشاكلها الإدارية. أن يكون طلبتها وخريجوها طموحين يريدون تغيير العالم و"حوسبته". أن يعرف المجتمع عن هذه السبل التنموية ويدعمها. التطوير. المستقبل. النهضة.

الخميس، 20 سبتمبر 2012

يا مدارس يا مدارس، لزمتك ايه؟

 يا مدارس يا مدارس، قولي لي إيه لزمتك؟
ليه أروحك كل يوم، واستحملك؟
عملت إيه بالهرولة، والقسمة المطولة،
والجغرافيا والـmental arithmetic؟

لابد لنا كمجتمع أن نناقش الهدف من هذه المؤسسات التي نعتمد عليها -- المدارس والجامعات، قبل أن نفكر في تطويرها أو تقييمها.

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

الهدف الأول هو الحفاظ على التراث العلمي للبشرية. الضغط الجوي الذي نأخذه في الإعدادية كان نتيجة أبحاث علماء في النهضة الأوروبية، وكانت تلك الأبحاث مسبوقة بنقاشات ونظريات (كثر فيها المغالطات) بدأت منذ عهد الفلاسفة اليونانيين. القسمة المطولة من أيام الخوارزمي. حساب المثلثات ازدهر كذلك في الدولة الإسلامية.

كل كلية كذلك تغطي العلم في مجالها. كليات الطب والهندسة تحافظ على علم أخذ قروناً حتى تشكل، بينما كلية حديثة نوعا ما مثل حاسبات تحافظ على قرن تقريباً من التطور العلمي، وإن كان علم computer science له جذور في علوم أخرى قديمة.

الهدف الثاني (خاص بالمدارس) هو تقديم خلفية علمية واسعة. أنت في المدارس تأخذ رياضيات، لغة، جغرافيا، طبيعة...الخ...الخ. هذا يفيدك في الحياة بطرق قد تشعر بها أو لا تشعر..

مثلاً لو تذكرت أنه هناك في إفريقيا مخزون كبير من المواد الخام لم يستنفذ بعد؛ قد تفهم لماذا تدار الحروب هناك بهذا الشكل؛
نفس الفكرة لو تعمقت فيها تفسر بعض أسباب بقاء الحكم الديكتاتوري في الشرق الأوسط كل هذه الفترة، أو صعود النفوذ الإيراني في المنطقة، أو...أو...

لو فهمت النحو جيداً، قد يفيدك في دخول مجال اللغويات الحوسبية في المستقبل وعمل برنامج للترجمة الآلية.

لو فهمت مباديء الرياضيات، يمهد هذا لفهم مباديء الاقتصاد، وبالتالي تكون أقدر على الدخول في حوار قومي عن شكل الدولة ودورها، أو انتخاب أشخاص ذوي أفكار معينة وتجنب آخرين.

هل تفيد الخلفية العلمية الواسعة شيئاً غير هذه الأمثلة العملية؟ هنا بيت القصيد، والهدف الحقيقي من هذا المقال: الخلفية العلمية توسع فكرك.

هذا من أهم ما تقدمه المدارس والجامعات على الإطلاق. على الإطلاق!

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

اسمعك تقول أنك لم تر في حياتك أحداً تعلم هذه الأشياء. أرد فأقول لك: أليس معنى ذلك أن مقالي هذا مهم للغاية؟ :)

مثال آخر: لغة Prolog في حاسبات..
- سوف أتعلم منها أهمية كتابة برنامج يعبر عن الهدف الذي أريد تحقيقه، وليس وسيلة تنفيذ ذلك الهدف.
- سوف أتعلم منها أن البرمجة لها صور كثيرة غير الصورة المألوفة؛ وربما يدفعني هذا للتفكير في صور جديدة.
- قد أتعلم منها أنه يمكن فصل البرنامج عن وسيلة تنفيذه (أي أن نفس البرنامج يمكن تنفيذه بطرق متعددة).

مشكلة هذه الأشياء، سواء في مثال القسمة أو البرولوج، أنها أشياء لا تظهر بصورة واضحة: إنها أشياء لا أكتبها في السي في ولن تُسأل عنها في الإنترفيو، وبالتالي لا ينجذب لها الكثير. لكنها أفكار تأتي بالعباقرة..إنها أفكار تدفع المعرفة البشرية للأمام.

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

وقد قرأت ذات مرة ورقة بحثية كاتبها يجمع أفكار من البرمجة، مع نظريات Piaget للتطور المعرفي، مع شكل الفيزياء الذي كان يتغير، مع التطورات الجديدة في الإلكترونيات، كل هذا ليصمم جهازاً جديداً يكون رفيق الطفل في تعلمه وتفكيره.

أو لغة Erlang، وهي تجمع بين نموذج Actor model، نموذج نظري حوسبي، مع أفكار عن الـfault tolerance، وتم عمل أول إصدارة بها بالبرولوج (!)، لتكون أحد اللغات المفيدة التي تستخدمها شركات مثل Ericcson، Facebook، Amazon...شركات كبيرة رابحة.

هذه هي ميزة الخلفية العلمية الواسعة: هات أفكاراً من التاريخ واللغة، أو الفيزياء والبرمجة، أو الرسم والرياضيات، أو من ثلاثة مجالات أو أربعة، وقدم للبشرية شيئاً جديداً.

وقتها لا يكفي أن تعرف "اقل ما يمكن لدخول سوق العمل"، بل لابد من أن تدخل في النظري والعملي، القديم والجديد، المعروف والمغمور. لابد أن تتعلم جيداً.

الثلاثاء، 11 سبتمبر 2012

ابتكار وتطوير لا إبداء رأي

حين تدخل في حوار مع الناس: هل تتحدث بنية الابتكار والتطوير أم تتحدث بنيّة إبداء الرأي؟

مجتمع لا يفعل شيئاً

عوائق تاريخية كثيرة منعت المجتمع من أن يشعر أنه يتحكم في واقعه: حكم مستبد، مشاكل اقتصادية، تعليم مبني على التلقين..وضع هذا الأمر الناس في بيئة فكرية تعوق التفكير في العمل وتركز على إبداء الرأي: الأكثرية ترى نفسها مشجعين وليس لاعبين. جماهير وليس مؤديين. نقاد وليس مبتكرين.

لذلك فإنه بالنسبة لهم كل كلمة تقال هي "رأي".

حين أنتقد شكل النشاط الحالي في الـACM مثلاً، فإن الرد الذي أتلقاه دائما هو: لماذا ترى أن الـACM غير مفيد؟؟ لم أسمع أبداً عمن يسأل عن شكل البدائل وكيف يمكن تطوير النشاط ويستزيد من التفاصيل في هذا. الآن تعال نحلل الأمر حسب خلفية المتحدثين:

- لو كنت تفكر بنية المخترع، فأنت دائماً تبحث عن الثغرات في كل شيء من أجل الإتيان بجيل قادم من ذلك الشيء، يتلاشى الثغرات وأكثر.

- ولو كنت تفكر بنية إبداء الرأي، فأنت تفكر هل الشيء الحالي، في صورته الحالية، جيد أم سيء بدون التفكير في الصور الأخرى التي يمكن أن يكون عليها.

وكيف سنتقدم للأمام هكذا؟

هب أنني ذكرت مشكلة ما في تعريب العلوم. مشكلة لأول وهلة تبدو صعبة.

- لو كنت من مدرسة "إبداء الرأي" فسيكون ردك أن كيف أن هذه المشكلة ليست عائقاً حقيقياً، وسوف تتخذ موقفاً دفاعيا.

- لو كنت من مدرسة "الابتكار والتطوير" فستكون سعيداً لأن هذه النقطة قد أثيرت، وتبدأ في أن تفكر: كيف يمكن حلها؟


وإن الطريق طويل. وسوف تجد أنصار التعريب أنفسهم يمثلون عائقاً فيه: كلما جئت بمشكلة مشروعة في طريق التعريب، سوف تجد من يهاجمك لأنه قادم من خلفية "إبداء الرأي"، ويفسر كل كلامك على أنك عدو التعريب.

ولقد مللت. دائماً الحوار في صورة "كذا كويس، كذا وحش". هل نحن نقاد ارستقراطيين، نرتدي المونوكل وندخن البايب، ونجلس نشاهد الأوبرا؟ لماذا لا يكون الحوار أكثر عمقاً؟

حوار سطحي

هناك طبعاً ميزة لإبداء الرأي، هي أنك لا تحتاج للتحدث بكثير من التفصيل. لو كنا نتحدث مثلاً عن مجانية التعليم، فإن أكثر حجتين أسمعهما هي "سوف يفشل التعلم لو صار مجانياً" أو "كيف نترك التعليم للأغنياء فقط". لو استزدت من المتكلم فكثيرا ما لا تجد المزيد.

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

والحوار السياسي المصري، إلا بعض الاستثناءات، دائماً في هذه الصورة:
1- اختر شخصية أو فئة من الناس معروفة سياسياً.
2- هاجمها، أو دافع عنها، أو هاجم من يهاجمونها.
فإلى متى؟

وكم من زوج أخذ يسرد عيوب زوجته (أو العكس)، بدلاً من التفكير في أسباب المشاكل بينهما وحلها؟

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

وكم من شخص يمدح شركة مثل مايكروسوفت أو جوجل ويتخذ من نفسه مشجعاً رسمياً لها، بدلاً من أن يفكر في الدروس المستفادة من إدارة هذه الشركات، بهدف تصميم "الجيل القادم" من شركة البرامج المتطورة؟

وكم من شخص لا يقول سوى "مصر مافيش زيها" أو "مصر متخلفة"، بدلاً من أن يقوم من على مقعده الوثير، ويعمل عملاً حقيقياً، ويبذل جهدا حقيقياً، في أن يرى القيم الإيجابة الموجودة في المجتمع المصري ليقويها، أو القيم السيئة ليغيرها؟ لا اقصد شعارات أو بديهيات، بل دراسة حقيقية مبنية على الملاحظة العلمية؟

الخميس، 6 سبتمبر 2012

حاجات مطلوبة عشان تفكر

قبل أن تفكر، تحتاج أن تعرف كيف ترى، وكيف تسأل أسئلة، وكيف تصف.

كيف ترى

أنت لا ترى بعينيك فقط. أنت ترى بعقلك. هذه نقطة بالغة الأهمية. العالم من وجهة نظرك غير العالم من وجهة نظري، وهما يختلفان عن العالم من وجهة نظر القطة في الشارع؛ مع أنه - مادياً - هو نفس العالم.

حين تسير في الشارع، ماذا ترى؟ أحياناً أسير فأرى ظواهر اجتماعية تتفاعل بعضها مع بعض. أحياناً أسير فأرى قوانين فيزيائية في بقعة ماء تنتشر ببطء على التراب. شخص آخر قد يرى سبباً لاندلاع الثورة، أو خطراً عليها ينبغي مواجهته. أو فرصة ينبغي اقتناصها.

والمفاهيم التي تعرفها هي أعين جديدة ترى بها. في رحلتي في علم لغات البرمجة تعلمت فكرة الـcontinuation. منذ ذلك الوقت وأنا أراه في كل مكان: في أشياء برمجية سابقة، في الحياة عموماً، في أفكار تكنولوجية غير برمجية. شيء شبيه بذلك حين قرأت عن الـmonads.

ونظرية Piaget في التطور المعرفي للأطفال! النظرية تتحدث عن الـconstructivism، منذ أن قرأت عنها وأنا أنظر في كل شيء فأراها..
  • لا يكفي نقل التكنولوجيا لننهض علميا؛ لابد من بناء التكنولوجيا، وإلا سنسير في حلقة لا تنتهي من "غيرنا يبتكر، نحن ننقل".
  • عند شرح كود موجودة لأحد نحن غالباً ما نشرح الكود في أحدث صورها، لكن هناك معلومات قيمة عن الكود تأتي من تاريخها (من بنائها). لماذا اتخذت قرار كذا ولم أتخذ كذا؟ لماذا هذه الفصيلة موجودة بهذه الطريقة؟ هذه النقاط تأتي من خبرة ومن تجارب في إصدارات قديمة من البرنامج، وإني لأتخيل IDE بها طريقة لتأريخ المراحل المهمة في حياة هذا البرنامج.
  • التاريخ نفسه! إن أردنا أن نخرج مما نحن فيه علينا أن نفهم أولاً كيف قد صرنا فيه! ليس فقط بجمل مختصرة على غرار "لقد صرنا متفرقين"، بل أيضاً بتفاصيل. كيف صرنا كذلك؟ متى بدأ هذا؟ وكيف استمر؟ وماذا أيضاً غير التفرق؟ وماذا كانت العوامل الداخلية؟ وماذا عن الخارجية؟ هل نستطيع رسم خط زمن لمراحل "التخلف" والأسباب الأساسية لكل مرحلة؟
  • كيف نغير القيم الموجودة في المجتمع حالياً؟ فلنفهم كيف بُنيت هذه القيم!

(ليست هذه التدوينة عن نظرية Piaget، تذكر: نحن في جزء "كيف ترى"، أتحدث عن كيف تغير الأفكار في عقلك من نظرتك للعالم. منذ عرفت النظرية وأنا أنظر لكل المجالات الأخرى نظرة بنائية).

وكيف تسأل أسئلة؟

Computers are useless. They can only give you answers.
-- Pablo Picasso

يكاد يكون علم الفلسفة مبني على فكرة "كيف تسأل أسئلة جيدة". المشكلة أن معظم الأذكياء الذين أراهم يهتمون بالأجوبة فقط. الامتحانات؟ المسابقات؟ الinterview؟ إجابة إجابة إجابة! والظريف أنه في كثير من الأحيان يكون اختيار الأسئلة سيء أصلاً...

"إنتاج أفريقيا هو (أ) 8% (ب) 9% (ج) 11% (د) 13% من إنتاج الحديد العالمي".
"What is the difference between x++ and ++x"
"لما بترجع البيت بتعلق هدومك والا بترميها" (هذا سؤال حقيقي أخذته في interview)

هي دي الأسئلة؟؟؟

كان هناك قديماً خمس مسلّمات للهندسة منذ أيام إقليدس، وكان كثير من العلماء الرياضيين يعتبرون المسلّمة الخامسة زائدة (أي يمكن إثباتها من الأربعة السابقين لها، وبالتالي لا داع لاعتبارها مسلّمة بل هي نظرية عادية). وقد حاول العلماء لمئات السنين، علماء الحضارة اليونانية ثم الإسلامية ثم الأوروبية، أن يأتوا بذلك الإثبات ولم يقدروا.

ثم جاء كارل فريدريك جاوس في 1817 وسأل نفسه: ماذا يحدث لو افترضت أن المسلّمة الخامسة ليست بالضرورة صحيحة؟ والتفكير في هذا الأمر دفع بسؤال آخر: ماذا لو اخترعت "هندسة" جديدة بالأربع مسلّمات + خامسة مختلفة عن المعتاد؟

هذا الأمر قد فتح الباب لعلوم الهندسة غير الإقليدية non-Euclidean geometry: هندسة يمكن أن تتلاقى فيها خطوط متوازية، أو هندسة على سطوح غير مستوية (أفادت في الجغرافياً، من ضمن ما أفادت)، أو بنظام إحداثيات منحني (وقد استفاد آينشتاين كثيراً من هذا الأمر حين وضع نظرية أن الجاذبية هي انحناء الزمكان).

أبواب جديدة من العلم، جاءت من السؤال المناسب..

فلنسأل...
  • هناك موضة هذه الأيام عند البعض (للأسف) أن يكون حكم الدولة كإدارة شركة..ماذا لو جربنا العكس: أن تدار الشركات بطريقة ديموقراطية كأنها دولة؟
  • لماذا يبدو شكل الحروف هكذا: د ، م ، ع ، ف...الخ ؟
  • طفلك الذي يحكي لك حكاية تبدو غريبة وعشوائية..ما تسلسل الأفكار الذي جاء بهذه الحكاية؟
  • هل يمكن اختراع آلة لطبخ المكرونة؟
  • هل نحتاج لكمبيوتر لكي نبرمج؟
وكيف تصف

العلم الحديث مبني على التجربة. كيف تسجل ملاحظات تلك التجربة؟

تخيل علم الرياضيات الحديث لو كنا مازلنا نستخدم الأرقام الرومانية. بسرعة: اجمع XI على XXV. مجرد تغيير طريقة وصف الأرقام غير من تفكيرنا فيها.

وكيف تصف المجتمع حين تريد تغييراً سياسياً؟ وكيف تصف مشروعك للآخرين؟ وكيف تصف المشكلة التي تريد أن تحلها؟

وكيف يكون شكل برامجنا لو تخلينا عن فكرة "البرنامج في ملفات نحررها بمحرر نصي"؟ وما البدائل لوصف المطلوب من البرنامج؟

كيف تصف الألوان لشخص أعمى؟ وكيف تصف الروائح في فيلم رسوم متحركة؟ وكيف تصف ملمس معين في صورة؟

ملمس في صورة؟ قرأت في طفولتي مقالاً عن قصر الحمراء بغرناطة، يقول أن الزخارف متنوعة ومصنوعة بطريقة كأن العين "تتحسسها"..انظر للصورة واحكم بنفسك:

أما "كيف تصف الروائح في فيلم رسوم متحركة" فهو فن في حد ذاته: الورود الصغيرة التي تطفو حول الشيء ذو الرائحة الجذابة، الخطوط المتعرجة حول الشيء ذو الرائحة النفّاذة، خط دخان رقيق أبيض يمثل الرائحة ثم  يتحول إلى يد تسحبك برفق نحو مصدر الطعام اللذيذ، استخدام الألوان والحركة..

كيف تصف، هذا مهم.