مشكلة البداية الباردة (Cold-Start Problem)

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

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

من الواضح أن النظام “متورط” ويحتاج أساعده بداية حتى يعرف ذوقي، ثم بعد ذلك سيطور من قدرته على توقع المحتويات المناسبة لي.

وبما أن الموضوع عن Netflix و أنظمة الإقتراح، فمن المناسب أن نتذكر مسابقة Netflix Prize التي أقيمت في عام 2009 و كانت جائزتها مليون دولار لتطوير أفضل نظام يمكن أن يتوقع مدى ملائمة أي فلم قبل عرضه على المستخدم.

إذا كنت مهتم بالتعرف أكثر على أنظمة الإقتراح و مشكلة Cold-Start وغيرها من التحديات المرتبطة بهذا النوع من الانظمة فتوجد ورقة علمية بعنوان Recommender Systems Survey نشرت في 2013 تحتوي على استعراض جيد لكل هذه المواضيع و للأوراق العلمية المهمة المرتبطة بها.

أهم أداة برمجية خلال السنوات الماضية

أتنقل بين مكة المكرمة و مدينة جدة بشكل متكرر و كبير أسبوعيا، الطريق يأخذ عادة قرابة ثلاثة ساعات ذهابا و إيابا إلى مكة، هذا التنقل المتكرر متعب و مزعج، لكنه من زاوية أخرى فرصة ذهبية لتسرح بخيالك و تفكر في أشياء عجيبة. في آخر رحلة طرأ في بالي سؤال .. ماهي اهم أداة برمجية خلال السنوات الماضية كان لها أثر كبير من في زيادة إنتاجيتي؟
استحضرت وقتها عدة أدوات، أولها كانت بيئات البرمجة المتكاملة من شركة JetBrains. بدأت استخدام منتجات هذه الشركات منذ 4 سنوات تقريبا، ولازالت جزء أساسي من يومي. إذا ألقيت نظرة على جهاز كمبيوتري في هذه اللحظة ستجد على الأقل إثنين من برامج هذه الشركة يعملون في الخلفية (PyCharm و RubyMine). لكن بعد إعادة التفكير، لم أقتنع أن هذه هي أهم أداة بدأت استخدامها خلال السنوات الماضية. أدوات هذه الشركة مجرد IDEs بجودة عالية، صحيح أنها سهلت كثير من الأمور المتعلقة بالبرمجة، لكنها لم تغير بشكل جذري طريقة عملي.

أيضاً خطر على بالي أن أرشح نظام الكتابة LaTex كأفضل أداة. فخلال العشرة سنوات الماضي كان LaTex رفيقي في رحلتي الاكاديمية، وكثير من ذكريات المرحلة السابقة كان لـ LaTex دور فيها من قريب او بعيد، لكن بعد تفكير لم أقتنع كثيرا أنها تستحق لقب أفضل أداة 🙂 هي مرتبطة فقط بحياتي كأكاديمي خلال السنوات الماضية .. لكنها لم تؤثر بأي شكل على أدواري الثانية في الحياة .. وبالأخص على دوري كمبرمج.

من الادوات الاخرى التي فكرت فيها:

  • Pandoc: الأداة العظيمة لتحويل الوثائق من نوع إلى نوع آخر.
  • Tensorflow: مكتبة برمجية خاصة بتعلم الآلة (Machine Learning) من شركة قوقل.
  • Python: لغة البرمجة التي كان لها الحضور الأكبر في كل مشاريعي السابقة و الحالية، منذ أكثر من 12 سنة.
  • ReactJS: مكتبة الجافا سكربت التي غيرت بشكل جذري طريقة تنفيذي لمشاريع الويب (وأختها React Native التي غيرت طريقة تنفيذ تطبيقات المحمول)
  • Scikit-Learn: أحد أهم المكتبات البرمجية لتعلم الآلة (Machine Learning).

لم أقتنع أن أي من هذه الأدوات يستحق أن يتوج على عرش “أفضل أداة برمجية” 🙂
بقيت أداة وحيدة، كلما تذكرتها تمنيت لو أقبل رأس صاحب فكرتها Fernando Pérez الذي قدم لنا تحفة فنية برمجية استحق عليها جائزة Advancement of Free Software Award في 2012م.

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

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

عالِم الذكاء الإصطناعي Peter Norvig يقوم من فترة لأخرى بمشاركة بعض دفاتر Jupyter الخاصة به على موقعه الشخصي، حيث وضع قائمة بالدفاتر وكل دفتر عبارة عن حل أو شرح لمشكلة مثيرة للإهتمام باستخدام النصوص و الأكواد البرمجية. على سبيل المثال، قبل عدة سنوات انتشر في الإنترنت لغز عقلي منطقي أطلق عليه “لغز يوم ميلاد شيرلي (Cheryl’s Birthday Puzzle)” فقام Peter Norvig بشرح اللغز و قدم الكود الذي يحله .. خطوة بخطوة.

مثال آخر مثير للإهتمام هو كتاب Probabilistic Programming and Bayesian Methods for Hackers الذي تمت كتابته بالكامل باستخدام دفاتر Jupyter. ويمكنك رؤية أمثلة أخرى كثيرة و تنزيلها و تجربتها على جهازك على صفحة Jupyter Notebook Gallery التي تسمح بمشاركة الدفاتر وتصفحها على الويب مباشرة.

أداة Jupyter Notebook واحدة من الأشياء التي تحتاج أن تجربها بنفسك و تقضي معها بعض الوقت حتى تكتشف قدراتها و فائدتها.

لهذه الأسباب أعتقد أني سأُتَوج أداة Jupyter كأفضل أداة برمجية زادت من إنتاجيتي خلال السنوات الماضية. مبروك Jupyter 🙂

لماذا نتعلم الخوارزميات؟

(خاطرة كتبتها للرد على سؤال يتردد من المبرمجين و الطلاب حول أهمية تعلم الخوارزميات)

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

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

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

أتمنى لك رحلة ممتعة في عقول العباقرة 🙂

ماذا بداخل صندوق ادواتك؟

توقفت كثيرا عند قصة قصيرة ذكرها العالم Richard Feynman في كتابه Surely You’re Joking, Mr. Feynman، يقول أن أحد معلميه في المرحلة الثانوية أخبره أنه كثير الإزعاج و الكلام في الفصل، وحتى يتوقف ازعاجه أعطاه كتاب ينشغل به. كان الكتاب يشرح تقنيات متقدمه في موضوع التفاضل و التكامل في الرياضيات، وكان يحتوي على بعض طرق الحل التي لم تكن مشهورة في الكتب الأخرى.

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

يقول في نهاية القصة أن الفرق بينه و بين الآخرين أن “صندوق أدواته” يحتوي على أدوات مختلفه عن الأدوات التي لديهم، هذا الإختلاف و التنوع جعله يتفرد و يتميز عنهم و يتمكن من حل مشكلات عجز عنها غيره.

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

مراجعة كتاب Programming: Principles and Practice Using C++, Second Edition

قررت في إجازة هذا الأسبوع أن أقوم بمراجعة و تحديث معلوماتي عن لغة البرمجة C++، كنت مهتم بالأخص أن أتعرف على الميزات الجديدة التي تمت إضافتها إلي اللغة في إصدار C++11 و إصدار C++14. قرأت في كثير من المقالات أن هذه التحديثات جعلت لغة C++ تعود إلى شبابها مرة أخرى و تصبح لغة ذات طابع عصري وبخصائص فيها شبه من Python .. على الأقل هذا هو الإنطباع الذي أخذته من تصفحي لبعض المقالات على الإنترنت.

51j679vpDGL._SX406_BO1,204,203,200_وقع اختياري على كتاب: Programming: Principles and Practice Using C++ الذي قام بتأليفه صانع اللغة Bjarne Stroustrup، وأنهيت تقريباً 16 فصل من فصول الكتاب. سبب اختياري للكتاب هو الترشيحات الكثيرة له في الإنترنت، وبسبب أن الكاتب هو صانع اللغة، و كذلك انه أحد الكتب القليلة المتوفرة التي تغطي النسختين C++11 و C++14.
وجدت الكتاب مناسب للمبتدئين في البرمجة و طلاب علوم الحاسب و يغطي الكثير من المواضيع من بداية البرمجة حتى مواضيع متقدمة مثل البرمجة بالكائنات و غيرها. محترفي البرمجة قد يجدون الكتاب ممل بعض الشيء بسبب كثرة الإسهاب في مواضيع بسيطة. الكاتب ركز على شرح المفاهيم البرمجية، و ركز على مسألة أن لغة البرمجة مجرد أداة و ان الأهم هو تعلم المفاهيم البرمجية. شخصيا، وجدت بعض فصول الكتاب مملة و طويلة أكثر من اللازم، وكان من الممكن إختصارها، لكن بما أن الكتاب موجه للمبتدئين فقد تكون كمية الشرح لبعض هذه المفاهيم مناسبة للشريحة المستهدفة.

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

بالنسبة للمحترفين الذين يبحثون عن كتاب مختصر، أنصح بكتاب: Tour of C++ لنفس الكاتب. الكتاب مختصر جدا و يقدم لك رحلة سريعة إلى عالم C++، لكن للأسف النسخة المتوفرة أثناء كتابة هذا الموضوع تغطي C++11 فقط.

رجل من نور – بديع الزمان سعيد النورسي

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

أدعوك بدايةً أن تفتح هذا الملف الذي أخرجت لك فيه ثلاثة صفحات من كتاب “كليات رسائل النور” للنورسي، يتوقف بديع الزمان في هذه الصفحات الثلاثة عند “بسم الله” ويعلمنا ماذا تعني “بسم الله” …
سعيد النورسي – الكلمة الأولى – بسم الله

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

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

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

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

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

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

سعة الإطلاع و عمق المعرفة

 “وظيفتي ليست أن أبقى على إطلاع بالمستجدات، وظيفتي أن أغوص في أعماق الأشياء
– عالم الحاسوب الشهير: دونالد كنوث 

قبل فترة ليست طويلة كتبت تغريدة على تويتر بالنص التالي: “إذا هزموك بسعة الإطلاع، فاهزمهم بعمق المعرفة”. عاتبني بعض الأصدقاء حينها على استخدامي لكلمة “هزموك”، و اعترف أنها لم تكن كلمة موفقة و أعطت انطباع خاطئ عن المعنى الذي كنت أقصده. كنت أقصد من التغريدة أن أشير إلى وجود مدرستين في التعلم، الأولى تهتم بالحصول على معرفة واسعة (Wide Knowledge)، و الثانية تركز على الحصول على معرفة عميقة (Deep Knowledge). الفرق بين المدرستين واضح و بيّن، فالمدرسة الأولى أصحابها تجد لديهم معرفة بعدد كبير من المجالات لكن غالباً تكون مجرد معرفة سطيحة، بينما أصحاب مدرسة المعرفة العميقة لديهم في العادة معلومات كثيرة و تفصيلية عن مجالات قليلة محدد، لكنهم في المقابل يفتقدون المعرفة لما في خارج هذه المجالات. وكان هدفي من التغريدة أن أشير إلى أن المعرفة العميقة هي في رأيي ما نحتاجه وما يجب أن نركز عليه في هذا الزمن .. دعوني أشرح قليلاً …

KnowledgeInformationWisdom

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

عالم الحاسوب الشهير Donald Knuth الذي تم وضع كتابه The Art of Programming في مجلة American Scientist من ضمن قائمة أهم 12 كتاب لها علاقة بعلم الفيزياء بجانب كتب أخرى من تأليف علماء مثل آينشتاين و فاينمان و فون-نيومن، قرر في عام 1990 أن يتوقف عن استخدام البريد الإلكتروني، وقال جملة قوية و رائعة : “وظيفتي ليست أن أبقى على إطلاع بالمستجدات، وظيفتي أن أغوص في أعماق الأشياء “ (ترجمة بتصرف) يقصد أن متابعته للبريد الإلكتروني ليكون على إطلاع بآخر الأخبار و الأمور الجديدة ليست هي أساس وظيفته كبحاث علمي، بل وظيفته و مهمته الأساسية هي أن يحصل على المعرفة العميقة في تخصصه. مهم جدا أن نلاحظ أنه عندما قرر أن يتوقف عن متابعة إيميله كان بسبب أنه لايريد أن يتابع مايمكن تسميته بالأخبار القمامية Junk News و ليس الأخبار المتعلقة بتخصصه، لأن الأخيرة الحصول عليها يكون عبر مصادر أخرى و ليس عبر الإيميل (في العادة!). هنا قرر Donald Knuth أن يتوقف عن توسيع دائرة إطلاعه، و يجعلها محصورة فقط على مايرتبط بتخصصه.

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

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

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

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

مصدر الصورة: غير معروف

رحلة بناء عقل بشري

سألت أحد الباحثين في مجال “العقل” عن مدى معرفتنا عن العقل البشري، فكان جوابه (بتصرف):

“أحد المشاكل المتعلقة بالبحث العلمي في مجال العقل أن كل إكتشاف جديد في هذا المجال يجعلنا ندرك بشكل أفضل حجم جهلنا ويجعلنا نطرح أسئلة أكثر … أعتقد أن كثير من الباحثين في هذا المجال يتفقون أن مانعرفه الآن لايتجاوز الـ 10% و أظنه أقل من ذلك بكثير”

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

“المحاكي الحالي يحتوي على قرابة 2.5 مليون خلية عصبية، بالرغم من أنه أكبر محاكي حتى الآن إلا أنه بعيد جدا عن الحجم الحقيقي للعقل البشري. يحتاج المحاكي لحوالي ساعتين و نصف حتى يقوم بإنتاج مخرجات لثانية واحدة فقط! … لا أعتقد أننا قريبين من بناء محاكي بقدرات العقل البشري في أي وقت قريب، أعتقد أننا لازلنا نحتاج على الأقل عشرات السنوات من البحث العلمي حتى نصل لشيء من هذا القبيل.”

تنظيم “المبرمجين” السرّي

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


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

إذا كنت ترغب أن تنضم لهذه الجماعة يجب أن تبدأ من أسفل الهيكل التنظيمي الهرمي. ستبدأ أولاً بتأدية طقوس بسيطة و غير معقدة على شاشة سوداء قاتمة مجرد النظر فيها يشعرك بغربة عن عالمك و عدم ارتياح، كثيرون يسقطون في هذا الاختبار فتنتهي رحلتهم داخل جماعة “المبرمجين” عند هذا الموقف. إن استطعت المقاومة سيطلبون منك أن تطبع تحيتهم الخاصة “Hello World!” على أحد الشاشات السوداء. تخيل يا صديقي أن هذه التحية ابتكروها قبل ما يقارب 35 سنة، في كتاب يعتبرونه سفراً من أسفارهم يسمى The C Programming Language، بعضهم يعتقد أن من لم يقرأ هذا الكتاب لا يستحق أن يكون ضمن جماعتهم. تطرف عجيب!.

ستترقى تدريجياً في الهرم كلما أديت أحد الطقوس و احترفته، كل مستوى في الهرم يتعقد حتى تصل إلى مستويات يُطلب منك فيها أن تتحدث بلغة رمزية معقدة للغاية يسمونها لغة التجميع “Assembly Language”. في هذه اللغة تغيب كل المعاني الإنسانية، مرادفاتها مختزلة في كلمات قليلة و قصيرة جدا مثل “mov” و “jmp و “je” تشعرك لوهلة أنك تتحدث لغة إنجليزية مختصرة، لكنه مجرد شعور واهم ليختلط على عقلك و تصل لحالة الامتزاج التام مع الآلة فتصبح أنت والآلة شيء واحد.

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

ستبدأ باكتشاف متع جديدة، لن يفهمها إلا أنت و من يشترك معك في هذه الجماعة، منها تلك اللحظات التي تكتشف فيها السبب وراء عدم استجابة الآلة لأوامرك نتيجة وجود خطأ في أدائك لبعض الطقوس، بالمناسبة، حتى هذه الأخطاء لها أسماء و أنواع عند “المبرمجين”. بعضها قاتل “fatal error” يمكن أن ينهي حياتك أنت و الآلة، و بعضها غير قاتل “non-fatal error” ستتغاضى عنه الآلة و لن تلتفت له لكن يمكن أيضاً في أحيان أن ينهي حياتك أنت و الآلة ! .. عالم مخيف !

عندما تكتشف مكان أحد هذه الأخطاء، ستجد أن جسمك يفرز كميات رهيبة من الأدرينالين يرسلها دفعة واحدة إلى أصابعك فتقوم بتعديل الخطأ و إعادة إرسال البرنامج إلى الآلة عن طريق وسيط يسمونه المترجم “Compiler”، كل ما تتمناه حينها أن ما قمت بإصلاحه سيحل المشكلة، فإن نجحت و خضعت لك الآلة بنجاح ستغمرك الفرحة لجزء من مليون مليار من الثانية (فمتوثانية) فقط، ثم ستكتشف أن الخطأ الذي أصلحته تسبب في خطأ آخر فتعيد عملية البحث و الإصلاح “Debugging” مرة أخرى بطريقة أقرب ما تكون لتكرار غير منتهي “Infinite Loop”.

هذه يا صديقي مجرد جولة سريعة في أرجاء هذا التنظيم، انا متغول فيه كثيراً ولا أعلم هل سيتركونني لأكمل لك بقية التفاصيل أم أنهم سيجبرونني على السكوت.. في كلتا الحالتين سأدلك على ثلاثة مواقع ستجدهم مجتمعين فيها بشكل مريب يمكنك أن تبدأ بحثك من هناك لعلك تساهم في يوم من الأيام في تعريتهم أمام العالم، الموقع الأول ستجد فيه عدد كبير من قادتهم https://github.com أما الثاني ففيه خليط من القادة و من لايزالون يخطون خطواتهم الأولى http://stackoverflow.com أما المتحدثين باللغة العربية فقد أسسوا لهم مقراً جديداً أظن أنهم سيجتاحون العالم من خلاله: http://progmr.com

تحياتي يا صديقي،
مبرمج من أرض الحرم
المستوى السابع و الثمانين بعد الألفين