دورات الكبار · البرمجة من الصفر
دورة البرمجة للكبار من إديونست دروس مباشرة عبر الإنترنت للمهنيين وطلاب الجامعات في قطر ممن لم يكتبوا سطرًا برمجيًا من قبل. يعمل المعلم معكم وحدكم على شاشة مشتركة، فتبدؤون بأساسيات Python، ثم تنتقلون إلى HTML وCSS وJavaScript، وتختمون كل مرحلة بمشروع صغير بنيتموه بأيديكم وتستطيعون شرحه سطرًا سطرًا.
أحضروا حاسوبكم المحمول وسببًا يدفعكم إلى التعلّم: مهمة متكررة في جداول البيانات تودّون أتمتتها في العمل، أو شيفرة يتحدث عنها فريقكم في الاجتماعات، أو موقعًا خاصًا بكم. أنتم من يكتب كل سطر، والمعلم يتابع ويسأل ويصحّح.
ما يغطيه البرنامج
تسعة محاور مرتبة كما يلتقيها أغلب المبتدئين. تأتي Python أولاً لأن صياغتها الواضحة تترك انتباهكم للمنطق نفسه، ثم تنقل مرحلة الويب هذا المنطق إلى صفحة يراها الآخرون ويتفاعلون معها.
يتبع الترتيب هدفكم أنتم. فمن يحتاج صفحة ويب لعمله في وقت قريب يمكنه أن يبدأ بتعلّم HTML، ثم يعود إلى Python بعد ذلك.
تثبّتون Python 3، وهو الإصدار المدعوم وحده منذ انتهى دعم Python 2 في 1 يناير 2020، ومعه محرر للشيفرة، ثم تكتبون برامج قصيرة وتشغّلونها من ملف محفوظ. وأكثر ما يربك في البداية تشغيل الملف من مجلد غير الذي حُفظ فيه.
تتصرف النصوص والأعداد الصحيحة والأعداد العشرية كلٌّ بطريقته، والتسمية الجيدة للمتغيرات تُبقي البرنامج مقروءًا. والفخ المعروف هنا أن input() تعيد نصًا دائمًا، فإذا أدخلتم 5 و3 وجمعتموهما ظهر 53 إلى أن تحوّلوا القيمتين إلى أعداد.
تتيح if وelif وelse للبرنامج أن يختار بين طريقين، وتكرر حلقتا for وwhile العمل فلا تحتاجون إلى نسخ السطر عشر مرات. والمسافة البادئة في Python جزء من المعنى، فمسافة واحدة في غير موضعها تغيّر الأسطر التي تتبع الحلقة.
تجمعون الخطوات في دوال باستخدام def وreturn، وتتعلمون قراءة رسالة التتبّع (traceback) من سطرها الأخير صعودًا. ويخلط المبتدئ كثيرًا بين طباعة القيمة وإعادتها، ولا يظهر الفرق إلا حين تُستدعى الدالة مرة ثانية داخل برنامج أكبر.
تحفظ المجموعات قيمًا كثيرة معًا، وتتيح الملفات للبرنامج أن يحتفظ بنتائجه بعد إغلاقه. تقرؤون ملف CSV مُصدَّرًا من جدول بيانات، وتجمعون أحد أعمدته، وتكتبون ملخصًا. وأغلب رسائل IndexError الأولى سببها أن العدّ في القوائم يبدأ من الصفر.
العناوين والفقرات والروابط والصور والنماذج هي ما يمنح الصفحة معناها. وتضبطون السمتين lang وdir لتُقرأ النسخة العربية من اليمين إلى اليسار كما ينبغي. أما الزلة الشائعة فوسوم لم تُغلق، أو وسوم تداخلت في غير ترتيبها الصحيح.
المحددات ونموذج الصندوق وflexbox تحدد شكل الصفحة على الحاسوب وعلى الهاتف. والخصائص المنطقية مثل margin-inline-start تحفظ التخطيط ثنائي اللغة سليمًا في الاتجاهين. وتفاجئ قواعد الأولوية بين المحددات معظم من يبدأ بتعلّمها.
المتغيرات والدوال والأحداث تجعل الزر أو النموذج أو القائمة تتفاعل مع من يستخدمها. وتقرؤون وحدة التحكم (console) في المتصفح كما قرأتم رسائل Python من قبل. وفي JavaScript تلصق علامة + العدد بالنص بصمت، دون أي تنبيه.
يسجّل Git كل نسخة من عملكم، فيصبح التراجع عن الخطأ ممكنًا وعرض التقدّم سهلًا. وتخرجون بمجموعة صغيرة من المشاريع، لكل منها ملاحظة قصيرة تشرح ما يفعله المشروع وطريقة تشغيله، فيسهل عرضها على جهة عملكم أو جامعتكم.
كيف تسير الدروس
يجمع كل درس بين الشرح والكتابة والإصلاح. فالبرمجة مهارة تُكتسب بالكتابة المتكررة، لذلك يكون معظم الوقت لكم على لوحة المفاتيح، والمعلم يتابع شاشتكم المشتركة ويتدخل بالسؤال في اللحظة المناسبة.
الخطوة 1
يسألكم المعلم أين تقع البرمجة من عملكم أو دراستكم، ويتأكد أن Python تعمل على حاسوبكم، ثم يتفق معكم على مشروع أول. فالمحلل المالي وطالبة التصميم يبدأ كلٌّ منهما من مثال مختلف يناسب عالمه.
الخطوة 2
تكتبون كل سطر بأنفسكم والمعلم يتابع. وإذا تعطّل شيء سألكم أولاً عمّا توقعتم أن يحدث، قبل أن يشير إلى أي سطر، لأن التعبير عن التوقع بصوت مسموع هو ما يبني عادة تتبّع الأخطاء وإصلاحها.
الخطوة 3
بين درس وآخر تمرين واحد مركّز يتسع له مساء بعد الدوام: توسيع برنامج اليوم، أو إصلاح خطأ زرعه المعلم عمدًا، أو إعادة بناء ميزة صغيرة من الذاكرة. ويبدأ الدرس التالي بمراجعة ما أنجزتموه.
الخطوة 4
تناسب دروس المفاهيم أمسيات الأحد إلى الخميس بعد انتهاء يوم العمل. أما الموعد الأطول يوم الجمعة أو السبت فيلائم العمل على المشاريع، حين يتسع الوقت للتعثر وتجربة أكثر من حل ثم إنهاء ما بدأتموه.
الخطوة 5
تنتهي كل مرحلة بمشروع تشرحونه للمعلم سطرًا سطرًا، على طريقة المطوّرين حين يراجعون الشيفرة معًا. ويسألكم المعلم لماذا اخترتم هذا الحل، وما الذي كنتم ستغيرونه لو بدأتم من جديد. فقدرتكم على شرح شيفرتكم بوضوح هي أصدق علامة على أنكم فهمتموها.
تُحدَّد المواعيد كلها بتوقيت قطر (UTC+3، دون تغيير للساعة طوال العام)، وتتكيف مواعيد الدروس في رمضان مع ساعات العمل المعلنة في كل عام.
ما نبحث عنه في المعلم
المعايير التي يستوفيها معلم البرمجة قبل أن يُرشَّح لمتعلم كبير يبدأ من الصفر.
يعمل بثقة في Python وفي HTML وCSS وJavaScript، فتجد أسئلتكم الجانبية عن الأدوات المستخدمة فعلًا إجابات دقيقة وحديثة.
سبق له تعليم كبار بدؤوا من الصفر، ويعرف الأفكار التي يتعثر عندها القادمون الجدد، كالحلقات والدوال، والترتيب الذي يجعلها تتضح واحدة بعد أخرى.
يسمّي كل مصطلح جديد بكلمات مألوفة، ويستطيع شرح رسالة خطأ إنجليزية بعربية واضحة متى كان ذلك أيسر لكم، ثم يعيدكم إلى نصها الإنجليزي لتعتادوه.
يشير إلى السطر المقصود بعينه، ويبيّن سبب الخطأ، ثم يترك الإصلاح لكم، فتبقى خطوة التعلّم في أيديكم.
يطلعكم برسائل منتظمة على تقدّمكم ومهمتكم التالية، ويتفق معكم على طريقة التعامل مع أسئلتكم بين درس وآخر.
صعوبات شائعة
ست عقبات يلتقيها الكبار كثيرًا في الأشهر الأولى من تعلّم البرمجة، ولكل منها علاج عملي.
سبب الصعوبة
تطبع Python رسالة تتبّع تبدو مخيفة، مع أن المعلومة المفيدة تكون في الغالب في سطرها الأخير.
كيف يساعد المعلم
يعلّمكم المعلم القراءة من الأسفل: نوع الخطأ، ثم نص الرسالة، ثم رقم السطر. وتحتفظون بسجل لكل خطأ وطريقة إصلاحه، بالعربية أو بالإنجليزية حسب ما يريحكم. ومع الوقت تلاحظون أن الأخطاء نفسها تتكرر، فتعرفونها من اسمها قبل إكمال الرسالة.
سبب الصعوبة
مشاهدة غيركم يبرمج تمنح شعورًا بالفهم، والكتابة تتطلب منكم التخطيط لكل خطوة بأنفسكم.
كيف يساعد المعلم
قبل أي شيفرة تكتبون الخطوات جملًا بسيطة، ويراجع المعلم الخطة معكم. وحين تتحول كل جملة إلى سطر أو سطرين من Python يصبح الملف الفارغ أمرًا يمكن التعامل معه.
سبب الصعوبة
تعيد input() النص دائمًا، وجمع نصّين يضع أحدهما بجوار الآخر.
كيف يساعد المعلم
يطلب منكم المعلم طباعة نوع كل قيمة، ثم تحويلها عبر int() أو float(). وتعود الفكرة نفسها في JavaScript، فتتعلمونها مرة واحدة وتتعرفون عليها مرتين. ويصبح سؤال «ما نوع هذه القيمة؟» عادة تسبق كل عملية حسابية.
سبب الصعوبة
تعتمد Python على المسافة البادئة لتحديد الأسطر التابعة للحلقة أو الشرط أو الدالة.
كيف يساعد المعلم
يضبط المعلم محرركم لإظهار المسافات، ويطلب منكم تتبّع كل كتلة بصوت مسموع. ثم تنقلون السطر نفسه داخل الكتلة وخارجها لتروا الفرق بأعينكم. وحين ترون أين تبدأ الكتلة وأين تنتهي يصبح IndentationError إصلاحًا سريعًا.
سبب الصعوبة
الفجوات الطويلة بين جلسات التدريب تُذهب الصياغة الجديدة قبل أن تُستعمل بما يكفي لتثبت في الذهن.
كيف يساعد المعلم
تبقى المهام صغيرة ومرتبطة بالدرس الأخير، ويبدأ كل درس بمراجعة سريعة، ويُترك وقت المشاريع الأطول للجمعة أو السبت متى سمح أسبوعكم بذلك. فالتدريب القصير المتقارب يُبقي الأفكار حاضرة أكثر من جلسة طويلة متباعدة.
سبب الصعوبة
تحفظ Python النص العربي سليمًا، غير أن بعض نوافذ الطرفية لا تصل الحروف العربية ولا ترتبها من اليمين إلى اليسار.
كيف يساعد المعلم
يريكم المعلم كيف تتحققون من المخرجات العربية في ملف أو في صفحة ويب، حيث تتيح السمتان lang وdir للمتصفح تشكيل الحروف وترتيبها ترتيبًا صحيحًا، ثم تطبّقون ذلك في صفحة صغيرة بالعربية والإنجليزية ضمن مشاريعكم.
أسئلة المتعلمين
أخبرونا بما تودّون بناءه وباللغة التي تفضلونها للدروس. يقرأ أحد أفراد فريقنا كل استفسار ويقترح معلمًا مناسبًا لكم.