في مطلع سبتمبر 2021، أُطلق Exercism v3 أخيرًا. وAngelika Tyborska واحدة من المشرفين الرئيسيين الذين ساعدونا على تجاوز خط النهاية. وإلى جانب كونها إحدى المشاركات في إنشاء تمارين التعلّم والمنهج الخاصّين بـ Elixir، كانت Angelika صوتًا محوريًا طوال تطوير v3، إذ أضافت أفكارًا ورؤى على مدار عملية البناء. إنها من أبرز المساهمين في Exercism.
في هذا العرض المرئي، تأخذنا Angelika في جولة عبر المشكلات التي صُمّم v3 لمعالجتها، وبعض الإضافات الرئيسية إلى المنصّة، وكيف يتكامل كل شيء معًا، مستكشفةً المحلّلات والممثّلات وتمارين التعلّم الجديدة.
النصّ
تاريخ Exercism
Exercism موجودة منذ زمن. أنشأتها Katrina Owen أول مرة في 2013 كأداة لطلابها. في v1، لم تكن سوى مجموعة من تمارين التطبيق المثيرة للاهتمام. وفي v2، أصبحت منصّة لإرشاد الكود المجاني.
v3 🚀 01.09.2021
في الأول من سبتمبر، صدر الإصدار الثالث من Exercism.
في هذا الفيديو سأشرح لكم التغييرات في v3، وأوضّح لماذا جرى إجراؤها، وكيف ستحسّن تجربتكم على Exercism.
نبذة عني
هذه أنا [صورة تظهر عند 0:38]. أنا Angelika. بالتعاون مع Tim، زميلي في الإشراف، بنينا الأدوات وأكثر من 30 تمرين تعلّم لمسار Elixir من أجل Exercism v3. أعتقد أن Exercism بشكلها الجديد لديها القدرة على أن تصبح أفضل أداة لتعلّم لغات برمجة جديدة.
ما الجديد في v3؟
ما الجديد في Exercism v3؟ الجواب المختصر: الكثير.
كل التغييرات الجوهرية التي جاء بها v3 تهدف إلى معالجة أكبر المشكلات التي واجهها الناس في v2.
المشكلات في v2
هناك ثلاث مشكلات رئيسية يعالجها v3. الأولى: صعوبة الإعداد الأولي، والثانية: التدرّب على الكود دون تعلّم، والثالثة: طول زمن استجابة المرشد.
المشكلة 1. صعوبة الإعداد الأولي
المشكلة رقم واحد: صعوبة الإعداد الأولي. للبدء مع Exercism، تحتاج إلى تثبيت واجهة سطر الأوامر الخاصة بـ Exercism، ولغة البرمجة التي تريد تجربتها، وتحتاج إلى أن تكون مرتاحًا في الطرفية. وتحتاج إلى ضبط محرّرك ليقوم بتلوين الصياغة للغة الجديدة، وهكذا. بالنسبة للمطورين المتقدّمين، كل هذا الإعداد مضيعة وقت مزعجة. أما للمبتدئين، فقد يكون عقبة يستحيل تجاوزها.
الحل: دع الناس يكتبون الكود في المتصفح. لا حاجة لإعداد أولي.
ولتيسير ذلك، أصبح لدى Exercism الآن محرّر ويب، ولكل لغة برمجة مشغّل اختبارات خاص بها مخصّص لتشغيل الاختبارات على تمارين Exercism.
محرّر الويب
هذا هو محرّر الويب [لقطة شاشة تظهر عند 2:25]. له لوحتان، الكود المصدري على اليسار والتعليمات ومجموعة الاختبارات على اليمين.
لا يحتوي على أي ميزات فاخرة لأن هدفه ليس أن يكون بديلًا عن أدواتك المفضّلة. هدفه أن يتيح لك تأجيل تثبيت كل الأدوات والاعتماديات اللازمة إلى أن تشعر بمزيد من الارتياح مع لغة البرمجة الجديدة وتعرف أنك تريد مواصلة العمل بها.
محرّر الويب اختياري بالكامل. يمكنك الاستمرار في استخدام واجهة سطر الأوامر والعمل بأدواتك المفضّلة على حاسوبك.
مشغّلات الاختبارات
لكي يكون محرّر الويب قابلًا للاستخدام، لا بد من وجود طريقة لتشغيل الاختبارات على الحل الذي تكتبه في المتصفح. وهذه مهمة مشغّل الاختبارات.
لكل لغة على Exercism مشغّل اختبارات خاص بها. مشغّل الاختبارات مسؤول عن الإبلاغ بنتائج الاختبارات، لكن هذا ليس كل شيء. فهو يحتاج أيضًا إلى استخراج جسم الاختبار لتعرف الكود الذي يُنفَّذ فتتمكّن من تفسير رسالة الفشل، وكذلك إلى التقاط مخرجات الاختبار لتتمكّن من تصحّح أخطاء الكود في المتصفح باستخدام puts أو print أو console.log أو أي دالة طباعة تقدّمها لغتك.
مشغّلات الاختبارات ضرورية لحل التمارين في المتصفح، لكنها ستُستخدم أيضًا مع الحلول المُرسَلة عبر واجهة سطر الأوامر. عند تصفّح حلول المجتمع لتمرين معيّن، أو عند إرشاد طالب، يمكنك أن ترى ما إذا كان الحل ينجح في الاختبارات دون الحاجة إلى تنزيله وتنفيذه محليًا.
المشكلة 2. التدرّب على الكود دون تعلّم
المشكلة رقم اثنين: Exercism منصّة للتدرّب على الكود، لكنها لم تكن تقدّم أي موارد لتعلّم لغة معيّنة من الصفر. كان عليك أن تفعل ذلك في مكان آخر أولًا.
صُمّمت تمارين Exercism لتكون ممتعة ومليئة بالتحدّي، لكن في بعض الأحيان حتى أسهلها يكون صعبًا للغاية ليكون مدخلًا إلى لغة برمجة جديدة. وهذا يصحّ بشكل خاص عندما تحاول تعلّم لغة بصياغة مختلفة تمامًا أو حتى تتبع نمطًا برمجيًا مختلفًا.
الحل: تقديم التعلّم إلى جانب التدرّب.
بإضافة المنهج وتمارين التعلّم، أصبحت Exercism الآن أداة ممتازة للغوص مباشرة في لغة برمجة جديدة.
المنهج
ما هو المنهج؟ المنهج شجرة من المفاهيم التي تتكوّن منها كل لغة برمجة. المنهج فريد لكل مسار على Exercism لأن كل لغة برمجة مختلفة ولها مفاهيم مختلفة.
المفاهيم تعتمد بعضها على بعض، فتكوّن فروعًا متعدّدة للشجرة. عليك أن تتعلّم المفهوم السابق في الفرع لتفتح المفهوم التالي.
مثلًا، هذه بداية منهج Elixir [لقطة شاشة تظهر عند 5:10]. يبدأ بمفهوم يُسمّى basics، ويغطّي: كيفية تعريف وحدة، وكيفية تعريف دالة مسمّاة، وأين تجد التوثيق للمكتبة القياسية. هذه المعرفة ضرورية لكل تمرين على Exercism على حدة. عليك أن تتعلّم basics لتفتح أي مفهوم آخر. ويمكنك أن تتعلّم مثلًا booleans، وبعد أن تعرف booleans، يمكنك أن تتعلّم تعبير cond، وهكذا.
وللتوضيح، هذا هو منهج Elixir الكامل [لقطة شاشة تظهر عند 6:16]. في الوقت الحالي، يحتوي على أكثر من 50 مفهومًا، لكنه ما زال بحاجة إلى التوسّع.
في الأعلى ستجد مفاهيم مثل: السلاسل النصية، والمصفوفات، والخرائط، والصفوف. وفي الوسط: وحدة Enum، والتعبيرات النمطية، والهياكل، وكتابة مواصفات الأنواع. وفي النهاية: البروتوكولات، والعمليات، والمهام.
تمارين التعلّم
تتعلّم المفاهيم من المنهج بحل تمارين التعلّم. تمارين التعلّم مختلفة عن تمارين التطبيق. صُمّمت لتعليم مفاهيم البرمجة لطلاب لا يعرفون لغة البرمجة المحدّدة إطلاقًا، لكنهم يعرفون لغة أخرى على الأقل ومفاهيم البرمجة الأساسية.
المقدّمة
يبدأ كل تمرين تعلّم بمقدّمة. تصف المقدّمة معلومات أساسية عن المفاهيم التي يعلّمها هذا التمرين. معظم تمارين التعلّم تُعلّم مفهومًا واحدًا، لكن هناك استثناءات.
يعرض هذا المثال مقدّمة عن خرائط Elixir [لقطة شاشة تظهر عند 7:12]. تشرح ما هي الخرائط، وكيفية تعريف خريطة، وكيفية الوصول إلى قيمة في خريطة، وهكذا. تحتوي على بعض أمثلة الكود لعرض الصياغة الجديدة، لكنها لا تحتوي على الكثير منها كي لا تتمكّن من مجرّد نسخ المقدّمة ولصقها لحلّ التمرين.
التعليمات
ثم تأتي التعليمات. تنقسم تعليمات تمارين التعلّم إلى مهام صغيرة. صُمّمت المهام لتدفع الطالب نحو استخدام أهم أجزاء أي مفهوم معيّن.
مثلًا، سيجعل تمرين التعلّم الذي يعلّم الخرائط الطالب ينشئ خريطة، ثم يقرأ قيمة من خريطة، ثم يحدّث قيمة في خريطة، ثم يحصل على كل المفاتيح من خريطة، وهكذا.
لكل تمرين تعلّم قصّة، لكن القصّة ليست بتلك الأهمية. فهي موجودة حتى لا تضطر إلى استخدام قيم لا معنى لها مثل "foo bar" و"1 2 3"، لكنها لا تلعب دورًا كبيرًا في التمرين كما هو الحال في تمارين التطبيق.
التلميحات
تأتي كل مهمة مع قائمة صغيرة من التلميحات في حال تعثّر الطالب. غالبًا ما تكشف التلميحات عن الدالة المحدّدة التي يجب استخدامها في أي مهمة، وتقودك إلى التوثيق لتلك الدالة.
التدرّب على المفاهيم
لكن حل تمرين تعلّم واحد لا يكفي لإتقان المفهوم حقًا. تحتاج إلى التدرّب عليه أيضًا. لهذا راجعنا كل تمارين التطبيق التي كانت موجودة بالفعل في v2 واخترنا بعضها الذي يمكن استخدامه للتدرّب على كل مفهوم.
هكذا يبدو مفهوم واحد في الشجرة [لقطة شاشة تظهر عند 9:01]. تمثّل النقاط التمارين. النقطة الأولى ذات أيقونة المصباح هي تمرين تعلّم، والنقاط الأخرى هي تمارين تطبيق.
هكذا يبدو مفهوم بعد حلّ بضعة تمارين [لقطة شاشة تظهر عند 9:37]. لاحظ كيف أن بعض تمارين التطبيق لهذا المفهوم ما زالت مقفلة، رغم أن تمرين التعلّم مكتمل. هذا لأن تمارين التطبيق لا تقتصر على التدرّب على مفهوم واحد. قد تحتاج إلى تعلّم مفاهيم أكثر من الذرّات فقط [المفهوم المعروض في لقطة الشاشة] قبل أن تُفتح تلك التمارين.
من المفترض أن تكون تمارين التعلّم بسيطة للأشخاص الذين يتقنون لغة معيّنة بالفعل. لكن لا تقلق، فهي اختيارية تمامًا. يمكنك التبديل من وضع التعلّم إلى وضع التدرّب، ما يمنحك وصولًا فوريًا إلى كل تمارين التطبيق الممتعة دون الحاجة إلى إنجاز المنهج أولًا.
المنهج = جهد هائل
هناك تفصيل مهم يجب أن أذكره لإدارة توقّعاتكم، وهو أن تطوير المنهج جهد هائل جدًا. فليس كل مسار لديه عدد كافٍ من المشرفين النشطين ليكون لديه منهج جاهز الآن.
في وقت تسجيل هذا الفيديو [4 سبتمبر 2021]، لا تتوفّر تمارين التعلّم إلا في: Common Lisp، وC#، وElm، وElixir، وF#، وGo، وJava، وJavaScript، وPython، وRuby، وRust، وSwift. وسيطلق مسار Julia منهجه قريبًا.
المشكلة 3. طول زمن استجابة المرشد
المشكلة رقم ثلاثة: طول زمن استجابة المرشد. ليس كل مسار لديه عدد كافٍ من المرشدين. بعض المسارات لديها مرشدون قلائل جدًا حتى إن زمن الانتظار للإرشاد قد يصل إلى شهر. وقد كان هذا دائمًا مُثبّطًا للطلاب إلى حد بعيد. إنها مشكلة جوهرية في Exercism إلى درجة أنها تُعالَج من 3 زوايا مختلفة.
التغذية الراجعة الآلية
الحل رقم 1 هو تقديم تغذية راجعة آلية. الكثير من التغذية الراجعة التي يكتبها المرشدون للطلاب متكرّر. والقدرة على كشف الأخطاء الشائعة تلقائيًا والإبلاغ بها للطالب مباشرة أمر يغيّر قواعد اللعبة.
سيتيح الحصول على تغذية راجعة آلية حول الأخطاء الشائعة للطالب تحسين حلّه حتى قبل أن يطلب الإرشاد، ما سيجعل مهمة المرشد أسهل أيضًا. وسيوفّر على المرشدين عناء ذكر تفاصيل مملّة مثل snake_case مقابل camelCase والتركيز على جوهر الحل. وفي بعض الحالات، ستكون التغذية الراجعة الآلية كافية لإرضاء الطالب، ولن يطلب الإرشاد على الإطلاق.
في v3، هناك نوعان من الأدوات للتغذية الراجعة الآلية: المحلّلات والممثّلات.
المحلّلات
المحلّل أداة تبحث عن خصائص معيّنة في الحل، وتُرجع للطالب قائمة بتعليقات معدّة مسبقًا حول ما تجده. أما ما هي هذه الخصائص، فهذا يعتمد كليًا على اللغة والتمرين المحدّد.
مثلًا، لدى Elixir اصطلاح تسمية محدّد جدًا للدوال والمتغيّرات. أحد الفحوصات التي يجريها محلّل Elixir لكل تمرين على حدة هو فحص جميع أسماء المتغيّرات والدوال. وإذا وجد اسمًا غير مكتوب باستخدام snake_case، فسيذكّر الطالب باصطلاح التسمية.
فحص آخر يمكن لمحلّل Elixir القيام به هو كشف استخدام وحدة معيّنة. مثلًا، هذا الفحص [لقطة شاشة تظهر عند 13:20] الخاص بعدم استخدام وحدة Enum مخصّص لتمرين التعلّم الخاص بالاستدعاء الذاتي. فاستخدام وحدة Enum يُفقد تمرين التعلّم غايته، لذا سيذكّر المحلّل الطالب بألّا يفعل ذلك ويستخدم الاستدعاء الذاتي بدلًا منه.
الممثّلات
الأداة الثانية التي ستساعدنا في تقديم التغذية الراجعة الآلية على Exercism هي الممثّل. يأخذ الممثّل الحل ويزيل الأجزاء غير الجوهرية. فهو يُوحّد التنسيق، ويزيل التعليقات والتوثيق، ويستبدل أسماء الدوال والمتغيّرات بعناصر نائبة.
يُسمّى ناتج الممثّل تمثيلًا. كل حل يُرسَل إلى Exercism سيُمرَّر إلى الممثّل وسيُخزَّن تمثيله على المنصّة إلى جانب الحل.
سيتمكّن المرشدون بعد ذلك من الوصول إلى واجهة يستعرضون فيها تمثيلات الحلول المُرسَلة. ولكل تمثيل فريد، يمكن للمرشد أن يترك تغذية راجعة على ذلك التمثيل. ثم ستُعرض تلك التغذية الراجعة على كل طالب يُرسل حلًا مشابهًا له التمثيل نفسه. وهكذا لا يحتاج المرشد إلى كتابة التغذية الراجعة إلا مرة واحدة لتصل إلى كل من يحتاجها.
الممثّلات نفسها مُنفّذة ومنشورة بالفعل لبعض اللغات، لكن في وقت تسجيل هذا الفيديو [4 سبتمبر 2021]، ما زالت الواجهة الخاصة بالمرشدين غائبة عن المنصّة، لذا علينا الانتظار قليلًا حتى تصبح هذه الميزة متاحة بالكامل.
تجنّب جلسات الإرشاد غير المرغوبة
من الحلول الأخرى لطوابير الإرشاد الطويلة تجنّب جلسات الإرشاد غير المرغوبة. في v2، كان الإرشاد مطلوبًا للتمارين الأساسية. فإرسال تمرين أساسي كان يعني أنك تطلب الإرشاد تلقائيًا، ولم يكن بإمكانك الانتقال إلى التمرين الأساسي التالي دون موافقة المرشد. وكان الكثير من الطلاب يتعلّمون اللغة بالعمل عبر التمارين الأساسية، فكانوا يحتاجون إلى الإرشاد ليقودهم خلال عملية التعلّم.
لم يعد الأمر كذلك. فقد حلّت تمارين التعلّم والمحلّلات محلّ الدور التعليمي للتمارين الأساسية وموافقة المرشد. في v3، الإرشاد اختياري دائمًا ويجب طلبه صراحةً.
طلب الإرشاد
لطلب الإرشاد، عليك الإجابة عن سؤالين: ما الذي تأمل أن تتعلّمه من هذا المسار؟، و: كيف يمكن للمرشد مساعدتك في حلّك؟ فبمعرفة توقّعات الطالب من جلسة الإرشاد заранее، يستطيع المرشد اختيار طلبات الإرشاد التي تناسب معرفته وأسلوبه في الإرشاد أكثر من غيرها، ما يزيد احتمال أن يخرج الطرفان راضيين من جلسة الإرشاد.
طابور الإرشاد والمفضّلة
في طابور الإرشاد الجديد، يمكن للمرشدين رؤية إحصاءات عن تاريخ إرشاد الطالب. فيرون أي طالب لم يُرشَد من قبل قط وقد يحتاج إلى مراجعة أكثر عناية، وأي طالب مرّ بالإرشاد مرات عديدة ويفهم كيف يعمل.
ويستطيع المرشدون أخيرًا العثور على الطلاب الذين أرشدوهم من قبل وبناء علاقات معهم. بل يمكن للمرشدين إضافة الطلاب إلى المفضّلة واستخدام ذلك لإعطاء الأولوية لإرشاد الطلاب الذين سبق أن خاضوا معهم تجربة جيدة.
قوائم الحجب
بعد كل جلسة إرشاد، يكون للطالب والمرشد على حد سواء خيار حجب الطرف الآخر. وهناك قائمتان للحجب: الطلاب المحجوبون والمرشدون المحجوبون. فإذا حجبتك أنا كمرشد بصفتك طالبًا، فقد تُرشدني أنت لاحقًا. وبالطبع لن يكون للطرف الآخر أي فكرة عن أنه محجوب، فلا يستطيع الانتقام منك.
يمكنك اختيار حجب أي شخص لأي سبب، لكن إذا كانوا يخالفون مدوّنة السلوك، فالرجاء الحرص على الإبلاغ عنهم صراحةً أيضًا لحماية المستخدمين الآخرين.
تخفيف الآثار السلبية لأوقات الانتظار الطويلة
أخيرًا، الخطوة الأخيرة في التعامل مع مشكلة أوقات الانتظار الطويلة هي ضمان أنه حتى إذا احتجت إلى الانتظار أحيانًا، تبقى الآثار السلبية للانتظار في حدها الأدنى. في v3، لا يمنعك الانتظار للحصول على الإرشاد من حلّ تمارين أخرى. ويمكنك مواصلة التقدّم في المسار.
يمكن إنهاء جلسة الإرشاد من أي من الطرفين. فإذا كنت طالبًا ولا يعجبك الأسلوب الذي يتبعه مرشد معيّن معك، فيمكنك دائمًا طلب أسلوب مختلف، أو اختيار إنهاء الجلسة. ومهما كانت طريقة انتهاء جلسة الإرشاد، يمكن للطالب طلب جلسة إرشاد جديدة مع مرشد آخر للحل نفسه.
فتحات الإرشاد
لكل مسار، يمكن أن يكون لديك من 1 إلى 4 فتحات إرشاد. وامتلاك عدة فتحات إرشاد يساعدك عندما تريد طلب الإرشاد لتمرين صعب يُرجّح ألّا يحصل على إرشاد سريع، مع بقائك قادرًا على الحصول على إرشاد لتمارين أخرى في الوقت نفسه.
يمكن فتح فتحات الإرشاد بكسب السمعة. وتُمنح السمعة عند نشر حلولك ليستعرضها الجميع، وعند إرشاد الطلاب، وعند المساهمة في أي من مستودعات Exercism. ويعني هذا أن الطلاب الذين يساهمون أكثر في المنصّة يمكنهم الحصول على مزيد من الإرشاد.
الخلاصة
تلك بعض الجوانب الجوهرية التي تغيّرت بها Exercism في الأول من سبتمبر 2021.
أضفنا تمارين التعلّم لتتعلّم دون مغادرة المنصّة، ومحرّر ويب لتكتب الكود دون تثبيت أي شيء، والمحلّلات والممثّلات لتحصل على تغذية راجعة آلية فورية. كما أزلنا الكثير من العقبات المُحبِطة من عملية الإرشاد.
وهناك الكثير غير ذلك من الجديد لتستكشفه: قسم المساهمة لدينا، والشارات، والملفّات الشخصية الجديدة، وصفحة الرحلة التي تضمّ تاريخك الكامل في Exercism، وأكثر من ذلك بكثير.
تفضّل بزيارة exercism.org وجرّبه.
شكرًا لك.