المتابعون للمدونة

الاثنين، 16 ديسمبر 2024

سلسلة الطفل المبرمج


بالنسبة لي، لغة Small Visual Basic هي أهم إنجازاتي بحمد الله.. أهدف بها إلى تعليم البرمجة للأطفال من المرحلة الابتدائية، ورفع مستواهم في الرياضيات والعلوم والتفكير المنطقي وتطوير التعليم بالتبعية.
كما أنها بوابة سهلة لتعلم فيجوال بيزيك دوت نت وسي شارب، ففي ظل هيمنة بايثون على مؤسسات التعليم حاليا، هناك خطورة على مستقبل منصة دوت نت مع قلة من يتعلمونها من الأجيال الجديدة.
* سمول فيجوال بيزيك هي حصيلة 4 سنوات من العمل لتطوير مترجم كود سمول بيزيك وأدواته إلى سمول فيجوال بيزيك وإضافة مصمم النماذج ومكتبة صغيرة لنماذج الويندوز.. الكود بالكامل منشور على GitHub.
* برنامج الإعداد مجاني وخفيف ومرفق به أكثر من 160 مثالا شيقا تغطي كل مناحي اللغة.
* سلسلة دروس مبسطة لتعليم البرمجة للأطفال والمبتدئين في قناة سمول فيجوال بيزيك على يوتيوب.. حوالي 80 فيديو حتى الآن والبقية تترى.
أكثر من 8 شهور لكتابة وتطوير المرجع الإنجليزي الكامل للغة (أكثر من 860 صفحة حتى الآن).. يمكنكم تصفحه على جوجل درايف، كما أني يأتي مع برنامج إعداد اللغة أيضا.
* ثلاثة كتب إنجليزية حتى الآن (والرابع على بداية العام الجديد بإذن الله) ضمن سلسلة sVB Kid Programmer لتعليم اللغة والبرمجة والرياضيات للأطفال من سن 6 سنوات بالتوازي مع مناهج الدراسة، بأبسط أسلوب ومحتوى ممكن.

أرجو أن يستفيد المبرمجون بالكود الأصلي للغة (فيه خبرات هائلة في تصميم الواجهات ومحرر الكود ومصمم النماذج باستخدام XAML)
وأدعو الله أن يستفيد به أطفالهم في تعلم البرمجة.
كما أدعوهم ألا يكسلوا عن المساهمة في إيصال هذا العمل الضخم لمن يستفيد به، وتشجيعي بدعوة صالحة.
أخوكم: م. محمد حمدي غانم


 

sVB is easier than Python!



 أقولها بكل جرأة: لقد جعلت لغة Small Visual Basic أسهل من Python للأطفال والمراهقين!

لقد طورت لغة سمول فيجوال بيزيك بنفسي لتكون أفضل أداة لتعليم البرمجة للأطفال:

1.   فهي تتميز بنفس بساطة لغة Microsoft Small Basic من حيث سهولة أوامر اللغة وروعة نافذة الرسوم والسلحفاة، ولكني أصلحت عيوب Small Basic التي لا تحتوي على نطاق للمتغيرات Variable Domains، ولا دوال Functions، ولا معاملات للإجراءات Subroutine parameters، ولا كائنات Objects.. لغة سمول فيجوال بيزيك تحتوي على كل هذا بجانب تحسينات إضافية لنافذة الرسوم والسلحفاة.

2.   كما أن لغة سمول فيجوال بيزيك لغة عصرية مثل VB .NET، وتستخدم بعض الصياغة الخاصة بها مثل واضع القيم المبدئية للمصفوفة Array Initializer، ويستفيد من أنماط التنسيق Styles الخاصة بلغة توصيف التطبيق XAML. لكن برغم هذا تظل سمول فيجوال بيزيك بنفس سهولة لغة Visual Basic الكلاسيكية، فهي تستخدم نفس مصمم النماذج Form Designer ونفس الآلية البسيطة لمعالجة الأحداث Event Handling.

 

لكن لماذا يمكن أن يفضل أحد سمول فيجوال بيزيك بدلاً من بايثون، وهي الأكثر شهرة وشيوعًا في الوقت الحالي؟ فلنرَ بعض الأسباب:

1.   بايثون هي لغة شاملة لمختلف الأغراض، بينما سمول فيجوال بيزيك مخصصة فقط لتطبيقات سطح المكتب وللأغراض التعليمية، ما يجعلها تركز كل طافتها على هذا الغرض لتقيدم البرمجة بأبسط صورة للطفل.. لكن هذا لا يعني أن سمول فيجوال بيزيك ليس لها مستقبل، أو أنها مجرد لعبة مسلية، فهي أسهل بوابة للعبور إلى منصة تطوير برمجية شائعة وقوية هي DotNET، وبتعلمها تكون على بعد حطوة واحدة من بيئة VS .NET. فمن السهل استخدام فهمك لأكواد سمول فيجوال بيزيك ومكتبتها ومصمم النماذج، وحتى خبراتك مع محرر الكود للانتقال إلى لغة VB .NET (وفيما بعد إلى لغة سي شارب إذا أردت).

وغير هذا، لا تعتبر سمول فيجوال بيزيك مجرد لعبة على الإطلاق، فهي تحتوي في الواقع على بعض المواضيع المتقدمة، مثل تصميم تطبيقات متعددة النوافذ، واستخدام أنماط التنسيق XAML Styles، واستخدام البرمجة متعددة المهام Mutti Threading، وإنشاء مكتبات الكود الخاصة بها.

كما تأتي سمول فيجوال بيزيك أيضًا مع مكتبة خارجية هي LitDev التي تحتوي على محرك ثلاثي الأبعاد ومحرك فيزياء، ما يسمح بإمكانيات متقدمة لا حصر لها.

 

2.   تنتمي كل من بايثون وسمول فيجوال بيزيك إلى اللغات مرنة النوع Dynamically typed، لكن سمول فيجوال بيزيك أسهل في هذا الجانب، لأنها لا يتطلب عمليات تحويل بين الأنواع كما في بايثون .

 

3.   بايثون حساسة لحالة الأحرف (ومن المدهش أن كلا من الكلمتين True وFalse تبدأ بحرف كبير في بايثون)، بينما سمول فيجوال بيزيك غير حساسة لحالة الأحرف، ومحرر الكود يضمن إعادة حروف الكلمات إلى حالتها الأصلية، وهذا يجعل تعلمها أسهل وكتابتها الكود بها أسرع.

 

4.   ترقيم القوائم في بايثون يبدأ من الخانة رقم صفر، بينما يبدأ ترقيم المصفوفات في سمول فيجوال بيزيك من افتراضيًا من الخانة رقم 1، وهذا طبيعي أكثر ويجعل تعامل الأطفال معها أسهل، ولكن لا شيء يمنعهم من استخدام الترقيم صفر أو حتى أرقام سالبة، لأن المصفوفات في سمول فيجوال بيزيك هي في الواقع قواميس، لذا فإن أرقام الخانات هي في الواقع مفاتيح نصية string keys!

 

5.   في كلتا اللغتين تتعامل الدوال المثلثية مع الزوايا بالتقدير الدائري Radian. لكن الطفل يستطيع في سمول فيجوال بيزيك تعطيل هذا السلوك لاستخدام التقدير الستيني Degrees باستخدام هذا الأمر:

Math.UseRadianAngles = False

 

6.   حلقات التكرار For loops في بايثون قد تكون مربكة بسبب عدم دخول نهاية النطاق في الاعتبار.. هذا مثلا كود بايثون الذي يطبع الأعداد عكسيا من 5 إلى 1:

for i in range(5, 0, -1):

    print(i)

بينما حلقات التكرار في سمول فيجوال بيزيك بسيطة جدا ويسهل فهمعا بمجرد النظر:

For i = 5 To 1 Step -1

    TW.WriteLine(i(

Next

7.   استخدام بايثون للمسافات البادئة لتمييز مقاطع الكود Code blooks مربك جدا للأطفال، ويجعل مقاطع الكود المتداخلة أصعب في الفهم وأكثر عرضة للأخطاء بسبب إمكانية الخطأ في عد المسافات، بينما تستخدم سمول فيجوال بيزيك كلمات أساسية لتمييز نهاية كل مقطع مثل EndIf، EndSub، وNext، ما يجعل الكود أوضح وأكثر تنظيما.. وضيق محرر الكود تلقائيًا كلمة نهاية المقطع أثناء كتابة بدايته، كما أنه يضبط المسافات البادئة للمقاطع وينسق حالة الأحرف للكلمات ويضبط المسافات بينها.. بل إنه يفرض أيضا قاعدة تسمية المتغيرات: فالمتغيرات الموضعية والمعاملات تبدأ بحروف صغيرة، بينما المتغيرات العامة والإجراءات والدوال تبدأ بحروف كبيرة.. كل هذا يضبطه محرر الكود بدون تدخل من الطفل على الإطلاق، لذا، لتسمح له سموال فيجوال بيزيك بأن يركز على منطق الكود الذي يكتبه، وليس على شكله وتنسيقه!

 

8.   وبشكل عام، فإن بيئة التطوير المتكاملة IDE الخاصة بلغة سمول فيجوال بيزيك اسهل وأقوي من فإن بيئة التطوير المتكاملة الرسمية التي تأتي مع بايثون.

 

ولأثبت كل هذا عمليا، بدأت نشرت على أمازون حتى الآن 3 كتب باللغة الإنجليزية من سلسلة كتب المبرمج الطفل بلغة سمول فيجوال بيزيك:

sVB kid Programmer

هذه الكتب تستهدف تلاميذ الصفوف الدراسية من أولى ابتدائي إلى 6 ابتدائي، وستستمر السلسلة بإذن الله باسم مختلف للمرحلتين الإعدادية والثانوية.

هذه الكتب ليست فقط لتعليم البرمجة للأطفال، بل لتعزيز مهاراتهم في الرياضيات، والعلوم فيما بعد أيضًا (باستخدام محرك الفيزياء من مكتبة LitDev).

أرجو أن تدعموا لغة ـسمول فيجوال بيزيك بتقديمها للأطفال.. على الأقل جربوها، فهي لغة مجانية وعند تثبيتها على الجهاز يأتي معها أكثر من 160 مثال ممتع، وكذلك المرجعي الأجنبي الكامل للغة بصيغة PDF، كما أني أشرحها للأطفال العرب على قناة يوتيوب خاصة بها، تحتوي حاليا على جوالي 80 درس بمتوسط 10 دقائق لكل منها، وهناك المزيد بإذن الله.

لا تنسوني من دعواتكم وتشجيعكم.

 

الكتاب الثالث من سلسلة المبرمج الطفل


 بحمد لله وفضله وتوفيقه، نشرت للتو على أمازون كتاب: المدخل البرمجي للهندسة المستوية للإخوة مدرسي الرياضيات والحاسب الآلي

ماذا؟.. لا لا لا.. أقصد: كتاب مرحبا بالسلحفاة Hi Turtle لطلبة الصف الثالث الابتدائي!

ما هذه اللخبطة؟.. لحظة حتى نفهم:

لو شئت، يمكنك اعتباره كتابا في الهندسة المستوية Geometry، لكنه متنكر في ثوب كتاب برمجي، لكي لا يبدو مخيفا!

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

كل هذا في مئة صفحة فقط، مليئة بالرسوم والأمثلة والأسئلة والتدريبات التي تبدو كتحديات صغيرة شيقة لاستثمار ما تعلمه الطفل في رسم أشكال مركبة من بعض الأشكال الأساسية.. فمثلا، الفصل الأخير يعلم الطفل كيف يرسم بالسلحفاة هرما من صفوف المربعات، ويلون كلا منها بلون عشوائي.. وفي التدريب على هذا الفصل سألته أن يعيد نفس البرنامج لكن باستخدام المثلثات بدلا من المربعات.

ولكن لماذا السلحفاة؟

السلحفاة أسهل أداة لتعليم البرمجة والرسوم منذ ظهرت في لغة لوجو عام 1967.. فهذه السلحفاة ترسم خطا وهي تمشي للأمام، ويمكنها أن تدور يمينا ويسارا بالزاوية التي نريدها.. وبتكرار هذين الأمرين البسيطين يمكن رسم أشكال مدهشة بسيطة أو حتى معقدة لو شئت.. وستجدون على صفحاتي أمثلة استخدمت فيها السلحفاة لرسم زهور وفراشات وأرابيسك وأشكال مبهرة.. كل هذا بأكواد مختصرة، لكنها تعتمد على قدرة الحاسوب على التكرار بلا كلل أو ملل.

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

مع السلحفاة، يمكن أن يألف الطفل أوامر لغة البرمجة واستخدام الأبعاد والاتجاهات والزوايا، لأنه يظن أنه يلعب ويركز على ما ترسمه السلحفاة له، ويستمتع بالتحدي في إنجاز المطلوب.

وقد مهدت للأمر بنبذة عن الزوايا، والسبب الفلكي التاريخي وراء تقسيم تدريج المنقلة إلى 360 درجة، لأن أحد مشاكل مناهج التعليم هو الاختصار المخل الذي يفرغها من تاريخ العلم وفلسفة العلم، بل وحتى تطبيق العلم!

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

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

وتغيير كل هذا يحتاج إلى تأسيس وتدريب طويل من سن أصغر، لتشكيل الصلصال في أمثل صورة قبل أن يجف.. وهذا ما أحاول أن أفعله، بجعل البرمجة تسير جنبا إلى جنب مع مناهج المدرسة من الصفوف الأولى.

ولن أيأس أبدا من انتظار اليوم الذي يقرر فيه أصدقائي مدرسو الرياضيات والحاسب الآلي تعلم البرمجة، للخروج من صندوق المدرسة، وتقديم مثل هذا المحتوى لتلاميذهم في الدروس الخصوصية، بدلا من استمرار طاحونة التلخيص والحفظ والتسميع ولم درجات مجوفة من الفائدة.. هذه الطاحونة التي صدعتنا جعجعتها بدون طحين!

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

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

وهكذا وجدت أن ما بدأته يوما كفيديوهات لشرح لغة سمول بيزيك للأطفال، قد زج بي إلى تطوير لغة برمجة أسميتها سمول فيجوال بيزيك، ثم انتهى بي إلى محاولة وضع مناهج دراسية رياضية برمجية بنفسي!

وقد نشرت حتى الآن بحمد الله ثلاثة كتب في سلسلة "الطفل المبرمج بلغة سمول فيجوال بيزيك":

Small Visual Basic Kid Programmer

وهي سلسلة أكتبها لتعليم البرمجة للأطفال باللغة الإنجليزية، أما الأطفال العرب فقد خصصت لهم قناة على يوتيوب، نشرت فيها حاليا حوالي 80 فيديو (بمتوسط 10 دقائق) وما زلت أواصل النشر.. وبإذن الله سأقدم الكتب العربية يوما ما، حينما تختمر التجربة وتتوفر الظروف الملائمة.. فللأسف ما زلت أعاني من التهميش والتجاهل على جميع المستويات!

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

هذه ترجمة لمقدمة الكتاب:

لغة Small Visual Basic هي لغة تعليمية سهلة وممتعة، ويهدف هذا الكتاب إلى إثبات هذا باستخدام رسوم السلحفاة Turtle Graphics لتقديم محتوى هندسي بسيط وغني لطلاب الصف الثالث الابتدائي ومن هم أكبر.

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

 

كما يقدم الكتاب بعض المهارات البرمجية الجديدة مثل:

·      تغيير الألوان من خلال الكود.

·      تعريف الإجراءات الفرعية subroutines والمعاملات parameters.

·      استدعاء الإجراءات الفرعية وتمرير القيم إليها.

·      استخدام حلقات التكرار Loops لتكرار تنفيذ الأكواد.

 

وعلاوة على ذلك، يهدف الكتاب إلى تعزيز مهارات الطلاب في الرياضيات من خلال:

·      تقديم بعض أساسيات الهندسة المستوية، مثل حساب المحيط والمساحة للمربعات والمستطيلات والدوائر.

·      فهم أولويات العمليات الحسابية.

·      تقديم الخصائص الأساسية لبعض المضلعات، مثل المثلثات والأشكال الرباعية بأنواعها المختلفة.

·      رسم أكثر من 20 شكلاً هندسياً مختلفاً بتحريك وتدوير السلحفاة فقط، دون الحاجة إلى أي حسابات مثلثية.

·      توليد أرقام وألوان عشوائية، واستخدامها في تطبيقات ممتعة.

·      تقريب الأعداد العشرية.

·      تحويل الأطوال المقاسة على الشاشة من البكسل إلى السنتيمتر.

 

بالرغم من صغر حجم هذا الكتاب (103 صفحة)، هناك الكثير من المتعة التي سيجعلك تعيشها في صحبة السلحفاة، والكثير من المعرفة الهندسية التي سيضيفها إليك.

فماذا تنتظر؟

صفحة الشاعر