من جن بالحب فهو عاقل و من جن بغيره فهو مجنون

كيف اصبحت مبرمجا ! (مترجم)

+
عندما بلغ كولن هوجز  Colin Hughes  الحاديه عشره ، اشتري له والداه لعبه غريبه لم تكن ملونه و لا كرتونيه ، و لم تكن جهاز ليزري و لا مصباح مضيئ ، كانت هذه الهديه عباره عن صندوق  بإطار من الصور و الحروف مشكلة لوحه مفاتيح .  كان اسم هذا الصندوق "حاسوب ORIC-1" . و شملت الحزمه شريطي كاست و بعض الكروت و كتاب تعلم البرمجه من ١٣٠ صفحه .
للوهله الاولى بدت كهديه غريبه لطفل بهذا العمر ، لكن والداه اصرا ان يقوم بتجربتها ليس لانهم اشتروها باكثر من ١٢٩ سنت ! . و فعلا قام بتجربتها ليصف التجربه بالوقوع في حفره لم يتمكن من الخروج منها أبدا .
ليس من الصعب معرفه لماذا . بالرغم من ان هذه الحادثه كانت في العام ١٩٨٣ م حيث كانت قوه حاسوب ORIC-1 تعادل قوه منبه في وقتنا الحاضر ، لكن ثمه شي مثير حول هذا الجهاز . كل ما كنت تراه عند تشغيله هو شاشه سوداء و كلمه "جاهز" -Ready- و اسفل منها مؤشر نابض . انها دعوه مفتوحه لتكتب شيئا ثم تنظر للنتيجه في الشاشه .
في اقل من ساعه ينقلك الكتاب التعريفي بالجهاز من طريقه كتابه كلمه "مرحبا" -Hello- الي دروس مبسطه للغه Basic و التي من خلالها ستتمكن من تشغيل الموسيقي و الرسم في الشاشه . فقط عندما تكون لديك رغبه جامحه في تجربه شي اكثر اثاره و تعقيد فإن الكتاب التعليمي سيرشدك حتما لمبتغاك .
سيبقي حاسوب ORIC-1 في الذاكره دوما . لقد لخص الحوسبه في ابسط اشكالها . انت تكتب بعض الاوامر لينتج لك شي مثير ! لقد كان هذا الحاسوب بمثابه الساحر ! فمجرد كتابه ١٠ او ٢٠ سطرا برمجيا تتحول الي اشكال و اصوات و تبعث الحياه في مجموعه من الكلمات .
بالنسبه لكولن لم يكن حاسوب ORIC-1 مجرد لعبه ، بل كان صانع العاب . فكل ما كان يطلبه هو مجموعه اوامر !
بعد ان تعلم البرمجه ، لم يستغرق وقتا طويلا قبل ان يبدا في كتابه العابه الخاصه المبسطه و بعد ذلك قام بدراسه الفيزياء و الرياضيات و نظريات نيوتن . لقد تعلم كيف يقوم بتطبيق نظريات الجاذبيه و السرعه عبر البرمجه من اجل كتابه العاب ذكيه .
اكثر من هذا كله ، لقد تعلم كيف يقوم بتدريس البرمجه ! لقد تشرب في ايامه التي قضاها مع حاسوب ORIC-1 ابسط و افضل الطرق لتدريس البرمجه من خلال التوفيق بين البساطه و التعقيد و التي من الممكن ان تحول الطالب الجاهل الي خبير بسرعه تفوق فيها حتى علي معلميه .
اصبح من المعقول ان تتبلور خلال تلك السنوات فكره مشروعه الاعظم Project Euler وهو موقع ويب تخصص في تعليم البرمجه لعشرات بل مئات الالاف من المطورين الجدد من خلال اسلوبه الثوري في التعليم .

في فتره ما بين المرحلتين المتوسطه و العليا في بدايات الآلفيه الثانيه بدأت في تعلم البرمجه . لقد كانت مجرد بمثابه تعليم قرد ! لقد كنت اتابع العديد من البرامج الوثائقيه التقنيه عبر التلفاز و الكثير من المجلات و اكثر ما شدني في هذا المجال هو فلم Hackers في العام ١٩٩٥ م للممثله انجليا جولي حيث تحكي قصه الفلم عن هاكرز شباب متهمين باختراقات لم يرتكبوها فكان عليهم اثبات برائتهم .
لقد فكرت بدخول هذا المجال و هذا ما حدث . طلبت من والدتي ان ترافقني الي المكتبه حيث اشتريت كتاب  Ivor Horton's Beginning Visual C++ 6 ذو ١١٨١ صفحه . تخيلت نفسي اعيش لحظات سنمائيه و انا اقلب صفحات الكتاب محاولا فهم كل فصل لوحده .
لكن ماحدث بعد اقل من اسبوع هو انني بدآت بالشعور بالملل و الضجر من الكتاب و اسلوبه في الشرح . و مع مرور الوقت بدآت اشعر بانني لا استطيع المواصله فقد فقدت كل المرح و الرغبه في المواصله .
في كل مره اشاهد مبرمجين استعيد الرغبه في ان اصبح مبرمجا ، لكن نفس القصه تتكرر معي مع مختلف الكتب و لغات البرمجه التي حاولت تعلمها .
للحظات اعتقدت اني لا اصلح لاكون مبرمجا ، ربما احتاج الي المزيد من دروس الرياضيات او ربما لست ذكيا بما فيه الكفايه !
اتضح لي بعد مده بان المشكله تكمن فيمن حاول تعليمي البرمجه . لقد كان اسلوبهم و طريقه شرحهم سيئه . تلك الكتب التي افسدت رغبتي و متعتي في تعلم البرمجه هي العله ، كان علي ان اتجنبها .
اسوأ ما في الموضوع هو ان تكمن المشكله في المناهج الدراسيه الجامعيه . عندما احاول ان اتخيل كيف يتم اعداد المناهج فاتوقع التالي : مجموعه من الاشخاص مجتمعين في غرفه مغلقه ، يسألون انفسهم "ما الذي يجب ان يتعلمه الطالب نهايه البرنامج الدراسي ؟" ، يقومون باعداد مجموعه من النقاط و المفاهيم و المصطلحات و حتي اكواد برمجيه ، يعتبرونها الوسيله الافضل و يتم تمريرها الي المدرس الذي لا يستطيع ان يفعل شي سوي الالتزام بالمنهج المقرر !

مهما كانت الوسيله المتبعه فالنتيجه هي كابوس كما و صفه باول لوكهارت  Paul Lockhart - مدرس الرياضيات الجامعي - في كتابه  A Mathematician's Lament حيث تأسف كثيرا علي وضع المناهج الدراسيه لماده الرياضيات . لقد شرح نقاط الضعف في النظام التعليمي من خلال محاوله حل مشكله مرحه !
ان ما عرضه باول ينطبق ايضا علي مناهج الحاسوب و التقنيه .
الق نظره علي الصوره التاليه :
الان حاول الاجابه علي هذا السؤال ، كم يشغل المثلث الكبير في المنتصف من مساحه المستطيل ؟ ٢/٣ من المساحه الكليه ؟ ربما !
اذا كنت تواجه صعوبه في فهم السؤال ربما لانه ليست لديك الخبره الكافيه في الرياضيات لحل مسائل الاشكال الرياضيه . نعم انها صعبه لكنها تحتاج الي صبر و مثابره و ابداع . انها مثل الالغاز !
دعني اعطيك حيله بسيطه تساعدك في الحل . قم بتقسيم المثلث الي قسمين ، ثم حاول التمعن مجددا في الشكل الناتج .
ستلاحظ بكل بساطه ان المثلث انقسم الي مثلثين كل منهما يساوي المثلث المقابل له .

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

"مساحه المثلث تساوي نصف القاعده في الارتفاع" - هذي هي النظريه المطلوب من الطلاب حفظها و استخدامها بشكل متكرر لحل التمارين . لم يعد هناك اي ابتكار و لا بهجه بل سؤال سئل و اجيب عنه في نفس الوقت ، فلم يتبقي شي للطالب ان يقوم به !

اخيرا انتهت معاناتي لاصبح مبرمجا في السنوات الاخيره من دراستي الجامعيه عندما ممرت بالصدفه بلغز برمجي "اذا كان مجموع الاعداد الحقيقيه الاصغر من عشره و حاص ل ضرب عدد صحيح في ٣ او ٥ فآننا نحصل علي الاعداد التاليه ٣،٥،٦،٩ و مجموع هذه الارقام هو ٢٣ . المطلوب هو مجموع الارقام الاقل من ١٠٠٠ !"
كان هذا اللغز البرمجي هو من جعلني مبرمجا . انه اللغز الاول في مشروع Project Euler الذي اعلن عنه في العام ٢٠٠١ عن طريق صديقنا Colin Hughes الطالب الذي تعلم من حاسوب ORIC-1 و الذي اصبح لاحقا مدرس رياضيات في احدي مدارس بريطانيا .
المشكله في منهاج التقنيه هي نفس المشكله في مناهج الرياضيات التي وصفها الدكتور باول .
المثير في مشروع Euler هي ان شخصا لم يتعلم كيف يبرمج و لا يعرف شي عن البرمجه من الممكن ان يصبح مبرمجا في اقل من ٣ ساعات ! لقد شاهدت ذلك يحدث . كل ما تحتاجه هو الرغبه في الحصول علي الاجابه .
انها الطريقه المثلي للتعليم . شجع الطلاب علي الاستكشاف ، كل ما سيتبقي لك ان تكون متواجدا لاعطاء النصائح و الاجابه عن الاسئله . "يمكن تعليم الطالب اقصي ما يمكن من خلال القليل !" .
ان العمليه شبيه بجلوس طفل امام حاسوب  ORIC-1 . الاطفال بطبيعتهم فضوليين . انهم يحبون الصناديق و القطع . بمجرد ان تعلمهم القليل مما تستطيع تلك الاله ان تفعله ، فانهم يبحثون عن المزيد . سيرغبون في معرفه كيفيه تتغير حجم الاشكال او تسريع الاصوات و كيفيه الرسم . انهم يتخيلون لعبه و يحاولون انهائها .
بالطبع خلال تلك الرحله سيتعلمون المبادئ التي ترغب في ايصالها لهم . و تلك المبادئ ستترسخ لانها جائت بالممارسه و التطبيق .
تم تسميه المشروع علي اسم عالم الرياضيات السويسري  Leonhard Euler و اصبح المشروع مشهورا جدا حيث احتوي علي ملايين الاجابات من مئات الالاف من المبرمجين ، حيث عمل كولن و فريق عمل مكون من تسع اشخاص علي ابتكار الاسئله . انها وسيله ناجعه لتعليم البرمجه فالاسئله مرتبه كما برامج ودروس حاسوب ORIC-1 حيث اسماها الدكتور كولن ب "السلسه الاستقرائيه"  inductive chain" . فالاسئله مرتبه الصعوبه بحيث ان حل احد الاسئله يعلمك مفهوم و مبدآ جديد يساعدك في حل السؤال التالي . و بالتالي سيستطيع الطالب شق طريقه بنفسه لحل الاسئله بالتدريج .
هذا الاسلوب ليس بجديد فهو معروف لدي مطوري الالعاب ، و الذين اكتشفوا ان متعه الالعاب تكمن في تحدي قدرات المستخدم . الحيله هي التدرج في المستويات و اعطاء بعض التلميحات لبناء قدرات جديده تساعد في التقدم في المستويات من الاسهل للاصعب .
مشروع Euler تماما مثل الالعاب فانت تبدآ بحل الالغاز من الاسهل للابسط و تكتسب مهارات تساعدك في حل المستويات القادمه بشكل مستمر . كل سؤال في هذا المشروع يتطلب حل واحد بكود تكتبه لنفسك بحيث لا يستغرق دقيقه كامله لاعطاء النتيجه .
و الاجمل هو عند الاجابه الصحيحه علي اي لغز ، ستتمكن من الدخول الي صفحه المجتمع الخاصه باللغز حيث ستشاهد العديد من الحلول بمختلف لغات البرمجه و بمختلف الطرق لحل نفس اللغز من الالاف من الذين سبقوك في الحل و فضلوا مشاركه حلهم مع الجميع .
ان هذا الاسلوب يشجعك على تعلم لغات برمجيه جديده بمجرد قرائتك لطريقه حل نفس اللغز بلغه برمجيه اخري !
حتي ان لم تكن مطورا تشجع لحل الالغاز فقط لتشاهد ما يدور في صفحات المجتمع الخاصه بكل لغز . ستجد النقاشات العميقه من المبتدئين و المحترفين علر حد سواء .
التعلم يبدا عن البحث عن حلول للمشاكل .  و حل المشاكل الاكثر تعقيدا يكمن في الاستمراريه في البحث عن الحل !
ان هذا الاسلوب في نشر العلم لا يقتصر علي البرمجه بل بكل العلوم . و لكن الفرق الوحيد بين بقيه العلوم و البرمجه هو ان الكود البرمجي هو مجرد نص !
مثلا اذا افترضنا ان حادث ما وقع في منزلك ك انفجار انبوب الماء هل ستقوم باخذ صوره او فيديو و البحث في جوجل عن كيفيه اصلاحه ؟ ام ستسدعي متخصص بذلك ليحل المشكله ؟
بالطبع الحل الثاني هو الواقعي ، لكن في حياه المبرمج الحل الاول هو الحل المثالي و الوحيد . و كل المبرمجين يفعلون ذلك للبحث عن حلول للمشاكل في الكود البرمجي ، لانه الكود مجرد نص يمكن نسخه و لصقه !
هذا ما يجعل تعلم البرمجه ذاتيا و اكثر متعه من غيره ، فمشاركه الاكواد احد اكثر الوسائل انتشارا بين المطورين !
نسخ و مشاركه الاكواد هو شي مشجع عليه جدا ، و لكن ليس ملزم و لا معتمد عليه . فليس هناك مطور يستطيع ان يتعلم بدون ان يقرا و يشاهد ما كتبه غيره !
التطبيقات الحديثه اصبحت اكثر ذكائا من اي كائن بشري ، لقد اصبح من الممكن الاستعانه بالبرمجيات للبحث و اداء العديد من المهام . و المتعه في البحث عن المعلومه من خلال التطبيقات ايضا !
فمن الالعاب الي الموسوعات و برامج تحليل المعلومات اصبح بامكانك ان تصبح خبيرا بدون ان تغادر منزلك !
فكر في طريقه واقعيه لاداء مهمه معينه ؟ فكر في المستقبل ؟ فكر كيف تدير آله او تقود طائره ؟ او كيف تحلل معادله ؟ كل هذا اصبح متاحا عبر البرمجيات الحديثه .

اذن هل ستتشجع لتصبح مبرمجا ؟

- مقاله مترجمه بتصرف .
- المقال الآصلي : The Atlantic