أهلا وسهلا أيها القارئ الكريم...
أيها القارئ، أنا لا أعلم من أنت
ولا أين تعيش
ولا ماذا تدرس
ولا ما تخصصك
ولا ما عمرك
ولا ما جنسك
ولا ماذا تحب
ولا ماذا تكره،
لكني أعلم أنك يجب أن تتعلم البرمجة!
"ماذا تقول أيها المؤلف؟ أنا تخصصي (كذا)، كما أني لا أحب الكمبيوتر والرياضيات، لم قد أهتم بالبرمجة؟!"
حسنا أيها القارئ، من حقك أن ترى كلامي غريبا بعض الشيء وألا تقتنع، فمن يحب الحواسيب سوى هؤلاء الغرباء الشواذ؟! ولكن شرفني من فضلك بقراءة هذه الكلمات التالية مني عسى أن أقنعك. في الواقع أنا لا أريدك أن تتعلم البرمجة فحسب، بل وأن تشجع أبناءك على تعلمها! تشعر أني بالغت، أليس كذلك؟
كل من في هذا البلد يجب أن يتعلم كيف يبرمج الكمبيوتر، لأنها تعلمك كيف تفكر.
ستيف جوبس، مؤسس شركة آبل، في لقاء تلفزيوني
هذه ليست الأسباب الوحيدة، لكنها موضوع المقال فحسب!
موضوع هذا المقال هو تأثير البرمجة على حياتك اليومية وطريقة تفكيرك، ولكن هذه ليست الأسباب الوحيدة التي تجعلك تتعلم البرمجة، فالبرمجة هي المستقبل! في المستقبل القريب ستستحوذ مجالات التكنولوجيا على أغلب الوظائف، لكني سأتحدث هنا عن تأثير البرمجة على طريقة تفكيرك اليومية، إذا لنبدأ!
البرمجة وحل المشاكل
عندما أجلس مع أقاربي من طلاب المدرسة لأشرح لهم شيئا في الرياضيات أو الفيزياء أو الكيمياء، فأعطيهم مسألة يحلونها، يبدون عجزا عن حل هذه المسألة بحجة أنهم "لم يدرسوا قانون هذه المسألة". عجبا! وهل المسألة لها قوانين؟ عندما أعطيك مسألة رياضية أو فيزيائية فأنا أعطيك مشكلة.. عندما أعطيك مشكلة فأنت عليك أن تستخدم المعرفة التي لديك والمعرفة التي أعطيها لك في المشكلة بعد أن تفكر في طريقة للوصول للحل باستخدامها، لا "قوانين" في هذه اللعبة!
(أرجو العلم: المصطلح "مشكلة" في هذا المقال ليس بمعنى الخلاف بين شخصين وأكثر ونحوه، بل المقصود به نتيجة أو إجراء تريد الوصول إليه، فمثلا إذا كنت تريد حساب مساحة مربع ما: فهذه مشكلة، حل هذه المشكلة (طريقة الوصول للنتيجة التي تريدها) هي أن تحسب طول ضلع ذلك المربع ثم تعطيه للأس اثنين.)
البرمجة تحسن مهارات حل المشاكل
إذا كيف يمكن للبرمجة أن تساعد؟ عندما يريد المبرمج صنع برنامج ما فإنه لا ينظر لقوانين، المبرمج يبدأ في التفكير في ما يسمى الخوارزمية. الخوارزمية هي حل المشكلة، أو كيف يمكن أن تصل للنتيجة المرغوبة. يفكر المبرمج في كيف يمكن أن يصل إلى النتيجة المرغوبة، ثم يبدأ بترجمة خوارزميته التي توصل إليها- إلى كود برمجي.
ما أهمية مهارات حل المشاكل؟
نحن نعطي أبناءنا إجابات ليحفظوها أكثر مما نعطيهم مشاكل ليحلوها. نقول لهم "إذا كان السؤال كذا فأجب بكذا، ذلك لأن هذه هي الإجابة النموذجية التي سنعطيك عليها الدرجة. ". هذا يقتل مهارات حل المشاكل عند الطالب، لتنمية قدرته على حل المشاكل علينا إعطاؤه مشاكل، في صورة تحديات أو مسائل أو غيرها، وأن ندع الطفل يفكر لوحده حتى يصل لحل المشكلة.
هل تريد التأكد من ذلك؟ ائت بطفل درس قانون حجم المكعب (طول ضلع المكعب تكعيب)، أعطه السؤال التالي:
مكعب طول ضلعه 5 سم، احسب حجمه.
سيجيب الطفل غالبا على السؤال جيدا وسيقول أنه سؤال سهل، الآن اسأله السؤال التالي:
حاوية مكعبية طول أحد أحرفها 2 متر نريد أن نخزن بها عددا من الصناديق مكعبية الشكل، حجم كل صندوق منهم 0.5 متر مكعب، كم صندوقا نستطيع أن نضع بالحاوية؟
سيقول الكثير من الطلاب للأسف أن هذا السؤال أصعب قليلا، مع أننا لم نخرج عن قانون حجم المكعب. سيقول لك أنه لم يدرس قانون هذا السؤال! وسؤالي لك هو: عندما يخرج الطالب للحياة والعمل فهل سيقابل مشاكل من النوع الأول أم الثاني؟
علاقة البرمجة بالتفكير النقدي
إذا.. هل شرحت له إجابة هذا السؤال أو عرفها بنفسه؟ الآن اسئله هذا السؤال:
حاوية بشكل متوازي مستطيلات، أبعادها 1 متر، 1.5 متر، 2متر، نريد أن نضع بها صناديق حجم كل منها 0.5 متر مكعب، كم صندوقا نستطيع أن نضع بالحاوية؟
ربما -بعد أن شرحت له حل المشكلة السابقة- سيحل هذا السؤال بنفس الطريقة، فيحسب حجم الحاوية ويقسمه على حجم الصندوق فيجد عدد الصناديق، ولكن هذا خطأ! نحن لم نذكر له شكل الصندوق في هذا السؤال، أهو مكعب أم متوازي مستطيلات أم ماذا، وشكل الصندوق يؤثر على عدد الصناديق التي يمكن أن نضعها بالحاوية. هذه صورة مربعين مساحة الثاني ضعف مساحة الأول، لكنك لا تستطيع وضع مربعين من الأول داخل الثاني لأن الشكل لن يسمح بذلك.
على النقيض تستطيع أن تضع مربعين داخل مستطيل (بأبعاد محددة) مساحته الضعف لأن الشكلين متوافقان.
فإجابة هذا السؤال كانت من المفترض أن تكون نقدا له وليس حلا له! الإجابة كانت من المفترض أن تكون: "لا يمكن أن نعرف لأننا لا نعلم شكل الصندوق.". هذا ما يسمونه التفكير النقدي Critical thinking، وتعريفه البحت هو التحليل الموضوعي للحقائق لصياغة حكم. تعريفه بشكل أبسط هو التفكير بعمق أكثر في المشكلة لإيجاد معلومات وحقائق لم تكن ظاهرة والوصول للحكم الصحيح الخالي من أي انحيازات. التفكير النقدي يجب أن يكون خاليا من أي انحيازات، سواء أكانت عادات أو رغبات أو حتى معتقدات دينية، لهذا قلت عنه في التعريف البحت "التحليل الموضوعي". التفكير النقدي تفكير عقلاني غير متحيز وهي عملية منفصلة، فهي ذاتية التوجيه والتنظيم والمتابعة والتصحيح، فلا يصح أن تهاجم أو تصحح تفكيرا نقديا إلا بتفكير نقدي آخر.
التفكير النقدي ليس ضرورة في الحياة الوظيفية فحسب بل ومهم أيضا في الحياة اليومية
أنا من الناس الذين يرون أن البرمجة تعلم الإنسان التفكير النقدي، ولست وحدي، انظر هذه المقالات 1 2 3. لماذا أرى ذلك؟ لعدة أسباب منها أن البرمجة والتفكير النقدي يتشاركان في الكثير من الصفات والخطوات. 1: عرف المشكلة 2: حلل المشكلة 3: عدد الحلول الممكنة 4: جرب واختبر حلك 5: كرر. عندما نبمرمج فإننا في الواقع نمارس التفكير النقدي. نحن نمارس التفكير النقدي في كل برنامج نكتبه.
دروس أخرى...
البرمجة أيضا تعلمك أن تجعل عقلك متفتحا ومتقبلا للفكر والآراء المختلفة لحل مشكلة، لأن كل مشروع برمجي (سواء موقع أو أنيميشن أو لعبة أو برنامج) له طريقة وتصميم مختلف تماما عن باقي المشاريع، بهذا تعلمك أنه يوجد أكثر من حل واحد صحيح للمشكلة.
البرمجة تعلمك أن ارتكاب الأخطاء شيء طبيعي وليس عيبا. نحن المبرمجون مرتكبون حمقى للأخطاء! حتى لو كنت أمهر مبرمج في العالم كله فإنك إذا كتبت برنامجا فأنت قد ارتكبت الكثير من الأخطاء في الكود، عليك أن تختبر وأن تفشل كثيرا وأن تصحح الكود مرارا حتى تصل لبرنامج يعمل، وهذه العملية تسمى التصحيح البرمجي Debugging. في الواقع إذا عددنا الأشياء التي تعلمك إياها البرمجة فلن ننتهي!
أنا لست من النوع الذي يخطط كثيرا، أنا أنظر لحاضري، أنا مهندس حاسوب. أنا ليس لدي خطة لخمسة أعوام تالية. لا بأس عندي في ذلك النوع من الناس الذين ينظرون للسحب والسماء والنجوم ويقولون "أريد أن أكون هناك مستقبلا"، لكني من النوع الذي ينظر للأرض تحتي محاولا إصلاح الحفرة قبل أن يقع فيها.
لينوس تورفالديس - المبرمج الأول لنواة نظام التشغيل لينكس
ليس لهذه المقولة علاقة بالموضوع سوى أن قائلها مبرمج، لكني وجدتها جميلة وأردت عرضها لكم.
موقع جميل جداً ومعلومات مفيدة وممتعة .
ردحذفشكراً لك واتطلع للمزيد :)
على الرحب والسعة
حذف