مفهوم – بالتأكيد جميع من يرغب في تعلم البرمجة يبحث عن الطريقة الصحيحة لتعلم البرمجة، فكثيرًا ما نواجه مشاكل مختلفة وخاصة في بداية الطريق.
تعلم البرمجة يعتبر رحلة يمر فيها المتعلم بمراحل مختلفة، وربما تمتد مرحلة البداية مع البعض إلى مدة طويلة وتختلف بطبيعة الحال من شخص إلى آخر.
نستعرض معكم مجموعة من النصائح للطريقة الصحيحة التي يمكن من خلالها تعلم البرمجة، النصائح من كتابة عبدالعزيز سعد العبودي عضو هيئة التدريس في جامعة الملك سعود، قسم هندسة البرمجيات.
الطريقة الصحيحة لتعلم البرمجة
1. تعلم البرمجة من الأعلى إلى الأسفل وليس العكس (top-down approach only ):
التعلم من الأعلى إلى الأسفل هي طريقة لتعلم المفاهيم الأساسية أولاً من دون الخوض في أي تفاصيل أخرى. حينما تعلمت البرمجة في المرة الأولى، أولى الدروس كانت تركز على شرح أن الأوامر البرمجية بلغة الجافا تتحول إلى بايت كود ومن ثم يتم تنفيذها من خلال ال JVM، لم أستفد أي شيء من تعلم هذه المعلومات في ذلك الوقت.
بل في الحقيقية أنها أعطتني انطباع مبدئي أن البرمجة مملة ومعقدة، هذه الطريقة خاطئة لأنها لم تبدأ بالمفاهيم الأساسية في البرمجة بل بدأت بمفاهيم غير أساسية في تعليم البرمجة، يشار لهذه الطريقة وما شابهاها بطريقة التعليم من الأسفل إلى الأعلى (bottom-up approach).
الطريقة الصحيحة في نظري وهي كما أشرت سابقاً تسمى من الأعلى إلى الأسفل تكون بالقيام بشرح كيفية كتابة برنامج بسيط أولاً، ومن ثم يتم شرح كيفية تحويل هذا البرنامج إلى بايت كود، وليس العكس كما تم تعليمي.
اقرأ ايضًا: أخطاء يقع فيها المبرمجين في بداية الطريق
2. تعلم البرمجية يكون من خلال أمثلة سهلة ولها معنى واضح:
كثير ما نرى أمثلة وأسئلة برمجية لتعليم البرمجة تقوم بإدخال مفاهيم أخرى مثل الرياضيات والفيزياء في توصيل المعلومة للطلاب. بنظري هذه الطريقة خاطئة ومن الممكن أن تعطي انطباع أن البرمجة صعبة ومرتبطة بشكل أساسي بالعلوم النظرية.
فمثلاً حينما كنت أخطو خطواتي الأولى في تعلم البرمجة، قام الدكتور بإعطائنا أول واجب برمجي وكان عبارة عن برنامج يحدد نوع المثلث استنادا إلى معطيات المستخدم، هذا البرنامج كان تطبيق عملي لاستخدام الجمل الشرطية، ودعني أقول هنا أني عانيت في فهم وبرمجة المفهوم الرياضي أكثر من تطبيق الجمل الشرطية.
الواجبات والتطبيقات البرمجية يجب أن تركز بشكل أساسي على تعلم مفاهيم البرمجة وإبعاد كل ما يمكن أن يشتت ذهن الطالب في فهم أسس البرمجة، فمثلا بدل من إعطاء برنامج يحدد نوع المثلث المدخل، يكون البرنامج التطبيقي يحدد المرحلة الدراسية للشخص المدخل من قبل المستخدم استنادا إلى عمره.
بهذا المثال لا نطلب من المتعلم القيام بمراجعة علوم ومفاهيم خارج البرمجة من أجل القيام بعمل برنامج بسيط لفهم أساس من أسس البرمجة، بل يكون من خلال مفاهيم عامة لا تحتاج إلى جهد خاص لفهمها خارج إطار تعلم البرمجة.
3. تعلم البرمجة من خلال عدة لغات وعدة نماذج برمجية(paradigms):
من المؤسف أنه خلال دراستي للمرحلة الجامعية والماجستير كان جُل المناهج الدراسية تركز على تدريس البرمجة باستخدام لغة واحدة وهي الجافا وبنموذج واحد وهو البرمجية الشيئية (Object Oriented Paradigm) لا أقول هنا أن لغة الجافا ليست بالجيدة أو أن البرمجية الشيئية غير مؤهلة بأن تدرس في الجامعات.
لكن ما أريد إيصاله أنه يجب أن يُعلم الطالب كيف ينظر للحلول والمشاكل البرمجية بعدة زوايا وبعدة خيارات وليس بطريقة واحدة وبلغة برمجية واحدة. كنت أتمنى مثلا أن يتم تدريس مدخل البرمجة باستخدام لغة برمجية ذات تصميم سهل للمبتدئين مثل لغة بايثون أو جافا سكربت، ومن ثم تدريسي البرمجية الشيئية وتراكيب البيانات باستخدام الجافا، وأخير إضافة مادة برمجية تقوم بتعليم البرمجية الوظيفية (Functional Paradigm) باستخدام لغة Haskell.
اقرأ ايضًا: كل ما تحتاج معرفته عن لغة بايثون Python
الهدف هنا ليس تشتيت الطالب وإنما محاولة تعليم الطالب طرق مختلفة للنظر للمشكلة، فكلنا نعلم أن ليس هناك لغة واحدة أو نموذج برمجي معين قادرة على توفير أفضل الحلول لجميع المشاكل.
فلهذا يجب أن يتعلم الطالب عدة لغات وعدة نماذج برمجية ليكون قادر على اختيار أفضل الحلول الممكنة.
4. البرمجة يجب أن تكون المحور التعليمي وليس جزء منه:
هناك مواد كثيرة غير مرتبطة بشكل أساسي تدرس للطلاب الجامعين في تخصص الحاسب الآلي بشكل عام مثل الفيزياء والكمياء والرياضيات الغير مرتبطة بعلم المنطق.
جميع هذه العلوم وغيرها يمكن ربطها بسهولة في تعليم البرمجة، فتكون هناك واجبات ومشاريع لهذه المواد يتم حلها وتطبيقها باستخدام ما تعلمه الطالب من علوم ومهارات برمجية، فبهذه الطريقة يكون الطالب قادر على فهم وتحليل أي مشكلة كانت عن طريقة كتابة برامج بسيطة.
هذه النقطة لا تتعارض مع النقطة رقم ٢، فتلك النقطة توضح أنه من الخطأ إدخال مفاهيم أخرى أثناء تعلم البرمجة، لكن إذا تعلم الطالب المفاهيم وأتقنها، فليس هناك أي عائق في حل المشاكل في مجالات أخرى باستخدام البرمجة للتطبيق وتعزيز الفهم.
5. تعلم البرمجة يجب أن يكون بالطريقة الصحيحة من البداية:
هناك اعتقاد سائد للأسف عند معلمي ومتعلمي البرمجة أنه يجب أولاً أن يتعلم الشخص الطريقة السهلة واليسيرة في البرمجة حتى وإن كانت تحمل أخطاء معروفة، فمثلاً بعض الأحيان يتم تعليم الطلاب الطريقة الأسهل للاتصال بقاعدة البيانات مع أنها طريقة تحمل ثغرات أمنية خطيرة وقد تسبب مشاكل كبيرة إذا تم استخدامها في مشاريع حقيقية.
والسبب الذي يدعيه من يؤيد هذه الطريقة أن الهدف الرئيسي هنا هو تعليم مبادئ المبرمجة وعلى الطالب بعد ذلك تعلم الطريقة الصحيحة سواء بنفسه أو لاحقاً في نفس المقرر.
المشكلة هنا أنك تضيع وقت الطالب في تعلم شيء خاطئ، فتخيل مثلا أن الخباز يتعلم أولا كيف يخبز خبزاً محروقاً ثم بعد ذلك يتعلم كيف يخبز بطريقة صحيحة! لماذا لا يتم تعليم الخباز الطريقة الصحيحة حتى لو كانت أصعب من الطريقة الخاطئة، فالهدف هنا هو إيصال المعلومة الصحيحة وليس إيصال أي معلومة فقط.