كان احد اهدافي من لغة كلمات ان تكون اسهل ما يمكن في التعلم للاطفال لكن في نفس الوقت تشبه اللغات الاخرى الشهيرة، لكي يستطيع الاطفال ان يقفزوا منها إلى عالم البرمجة الاحترافية، ولكي لا يسخر منها احد ويقول انها لعبة (لا يحب الطفل الاكل بالملعقة الصغيرة لو فهمت قصدي).
لكن ماذا لو لم يهمني ذلك؟ لو اردت عمل لغة جديدة للاطفال، بالعربية، ويمكنني ان اضحي بمشابهة اللغات الاخرى مقابل سهولة الاستخدام؟
حسناً..اولا سيكون امر التخصيص في صورة ->، بدلا من علامة =، لتحديد اتجاه ذهاب البيانات. أيضاً سيتم تبديل الاتجاهات
س -> ص معناها "ضع س في ص".
ايضاً لن يكون هناك امر اقرأ ولا اطبع، لكن سيكون هناك كائنات Objects تعبر عن الشاشة، لوحة المفاتيح،...الخ
"مرحبا" -> الشاشة
المفاتيح -> س
الماوس ->(س1، ص1)
الماوس ->(س2، ص2)
ارسم.خط (س1،ص1)-(س2،ص2)
هل لاحظت (س1،ص1)؟ هذا لأن اللغة ستدعم تجميعات من القيم tuples. بالمناسبة هكذا تكون عملية التبديل مثلاً سهلة جداً:
(أ، ب) -> (ب، أ)
"خلي أ تبقى ب، وب تبقى أ"
لو أردت ان تكون اللغة object oriented جداً فيمكنني اصلا ان ارسل قيماً كما اريد للشاشة وما شابه..
خ = خط(100، 100، 200، 200)
د = دائرة(100، 100، 75)
خ -> الشاشة
د -> الشاشة
هذه الطريقة تجعل امور معينة سهلة جداً..ماذا لو اردت برنامج يرسم خطوطا باستمرار؟
كرر:
خط(الماوس، الماوس) -> الشاشة
تابع
حسناً....كفانا لعباً بالمعامل ->، ماذا نفعل أيضا؟؟
تعال نصنع طريقة بسيطة لعمل الدوال:
مجموع(أ، ب) = أ + ب.
وطريقة لتعريف الاجراءات:
حرك(أ، بداية، نهاية) =
ارسم(أ، بداية)
انتظر(30)
ارسم(أ، نهاية).
تبدو اللغة نوعاً ما مثل لغة prolog..أليس كذلك؟
مادمنا قد بدأنا في هذا المشوار، تعال نكمل بأن نضيف طريقة مبسطة لتعريف البيانات.
نوع شخص(اسم، سن، عنوان).
شخص(اسم: "حمدي"، سن: 12، عنوان: "الجيزة") -> ح
اسم ح -> الشاشة
ماذا عن الOOP؟ سوف نعرف كل الmethods كأنها رسائل للانواع المختلفة بكلمة في اللغة اسمها معنى
معنى شخص(أ، ب، ج) -> الشاشة =
("هذا شخص اسمه "، أ، "وسنه "، ب) -> الشاشة.
هذه هي الطريقة التي مكنتني من تعريف كيف ارسم خطاً بأن ارسله للشاشة مثلاً في الامثلة السابقة. لاحظ انني عرفت method بين نوع كامل من البيانات (شخص) وبين كائن object واحد هو الشاشة...يمكن في اللغة المزج بحرية بين classes وobjects..مثلما يمكنني في الحياة الطبيعية ان اقول هذا الكلب يجري حين يرى القطط، فأكون عرفت تصرف كائن معين بفصيلة من الكائنات.
هل هذه اللغة ابسط فعلاً أم هي فقط ازالت بعض الصعوبات ووضعت مكانها صعوبات جديدة؟ ماذا عن سطر مثل خط(الماوس، الماوس) -> الشاشة هل هة مفهوم؟ وهل هذه طريقة جيدة للبرمجة اصلاً؟
يحتاج الامر لتجربة. ما رأيك أن تنفذ انت هذه اللغة وتجرب على اطفال؟
نسيت شيئاً...ماذا اسميها؟ من الصعب عليّ أن أفكر في مشروع بدون اسم جيد له..ماذا عن "سهم"؟ بديهي اكثر مما ينبغي؟ سأبقيها هكذا حتى العثور على اسم افضل. أو سمّه انت لو ستنفذه :)
لكن ماذا لو لم يهمني ذلك؟ لو اردت عمل لغة جديدة للاطفال، بالعربية، ويمكنني ان اضحي بمشابهة اللغات الاخرى مقابل سهولة الاستخدام؟
حسناً..اولا سيكون امر التخصيص في صورة ->، بدلا من علامة =، لتحديد اتجاه ذهاب البيانات. أيضاً سيتم تبديل الاتجاهات
س -> ص معناها "ضع س في ص".
ايضاً لن يكون هناك امر اقرأ ولا اطبع، لكن سيكون هناك كائنات Objects تعبر عن الشاشة، لوحة المفاتيح،...الخ
"مرحبا" -> الشاشة
المفاتيح -> س
الماوس ->(س1، ص1)
الماوس ->(س2، ص2)
ارسم.خط (س1،ص1)-(س2،ص2)
هل لاحظت (س1،ص1)؟ هذا لأن اللغة ستدعم تجميعات من القيم tuples. بالمناسبة هكذا تكون عملية التبديل مثلاً سهلة جداً:
(أ، ب) -> (ب، أ)
"خلي أ تبقى ب، وب تبقى أ"
لو أردت ان تكون اللغة object oriented جداً فيمكنني اصلا ان ارسل قيماً كما اريد للشاشة وما شابه..
خ = خط(100، 100، 200، 200)
د = دائرة(100، 100، 75)
خ -> الشاشة
د -> الشاشة
هذه الطريقة تجعل امور معينة سهلة جداً..ماذا لو اردت برنامج يرسم خطوطا باستمرار؟
كرر:
خط(الماوس، الماوس) -> الشاشة
تابع
حسناً....كفانا لعباً بالمعامل ->، ماذا نفعل أيضا؟؟
تعال نصنع طريقة بسيطة لعمل الدوال:
مجموع(أ، ب) = أ + ب.
وطريقة لتعريف الاجراءات:
حرك(أ، بداية، نهاية) =
ارسم(أ، بداية)
انتظر(30)
ارسم(أ، نهاية).
تبدو اللغة نوعاً ما مثل لغة prolog..أليس كذلك؟
مادمنا قد بدأنا في هذا المشوار، تعال نكمل بأن نضيف طريقة مبسطة لتعريف البيانات.
نوع شخص(اسم، سن، عنوان).
شخص(اسم: "حمدي"، سن: 12، عنوان: "الجيزة") -> ح
اسم ح -> الشاشة
ماذا عن الOOP؟ سوف نعرف كل الmethods كأنها رسائل للانواع المختلفة بكلمة في اللغة اسمها معنى
معنى شخص(أ، ب، ج) -> الشاشة =
("هذا شخص اسمه "، أ، "وسنه "، ب) -> الشاشة.
هذه هي الطريقة التي مكنتني من تعريف كيف ارسم خطاً بأن ارسله للشاشة مثلاً في الامثلة السابقة. لاحظ انني عرفت method بين نوع كامل من البيانات (شخص) وبين كائن object واحد هو الشاشة...يمكن في اللغة المزج بحرية بين classes وobjects..مثلما يمكنني في الحياة الطبيعية ان اقول هذا الكلب يجري حين يرى القطط، فأكون عرفت تصرف كائن معين بفصيلة من الكائنات.
هل هذه اللغة ابسط فعلاً أم هي فقط ازالت بعض الصعوبات ووضعت مكانها صعوبات جديدة؟ ماذا عن سطر مثل خط(الماوس، الماوس) -> الشاشة هل هة مفهوم؟ وهل هذه طريقة جيدة للبرمجة اصلاً؟
يحتاج الامر لتجربة. ما رأيك أن تنفذ انت هذه اللغة وتجرب على اطفال؟
نسيت شيئاً...ماذا اسميها؟ من الصعب عليّ أن أفكر في مشروع بدون اسم جيد له..ماذا عن "سهم"؟ بديهي اكثر مما ينبغي؟ سأبقيها هكذا حتى العثور على اسم افضل. أو سمّه انت لو ستنفذه :)
هناك تعليقان (2):
لالالالالالالالالالالالالالالالالالالالالالالالالالا
خلينا كبار :)
انا شايف متغيرش اللغة لكده :)
او ممكن تعمل لغتين لو تحب ^___^
ههههه بهزر :)
________________________________
انا نفسي بس لغة برمجة عربية تشبه
محرك unity لو تعرفه وهو مصمم لصناعه العاب ويعتمد على لغة java او فيها برنامج لتصميم واجهات Gui بسهولة زي vb وc# هتحقق طفرة كبيرة جداً
وللاسف مشاريع زي ديه تحتاج فريق كامل اكبر من 75 شخص واكيد يمكن اكبر من 200 شخص :) انت حضرتك مبرمج وعارف اكتر مني
غير الدعم المفترض انه يكون من الحكومات قبل الشركات لاني شايف ان البرمجة هي لغة العصر ولغة اي ألة لتحقق التقدم التكنلوجي والصناعي وبرمجة الالات الذكية لكن للاسف الجهل ثم الجهل ثم الجهل مسيطر على رؤوس كل مسؤول وحتى عامة الشعب :( لوسألت اي شخص ما بين 100 قد يكون 3 بالكثير يعرفوا معنى لغة برمجة
وعلى العموم عمري 16 وفاقد الامل في مستقبل بلدنا
ولله يكون في عون الي عاش عمره كله في بلد سرقت حياته واهدافه وكل ما يحلم به حتى متطلباته الاساسية :(
@معاً لدعم كلمات
ما تقلقش، ماكنتش ناوي بالتأكيد اغير لغة كلمات للصورة دي..الموضوع ما هو إلا افكار/تجارب.
على فكرة موضوع عمل لغات برمجة مش بالصعوبة اللي انت فاكرها. لفة كلمات نفسها عملها شخص واحد (أنا) في 2010، في ظروف مالية وصحية سيئة. واول اصدارة تأتي بمخرج بسيط (يعني تشغل برامج طباعة نص على الشاشة أو جمع رقمين) ظهرت في بضع اسابيع! مش لأني فلتة مثلاً، ده الوقت الطبيعي لحاجة زي كدة. طبعا اخذت شهور من الضبط وتصليح الاخطاء بعد ذلك لتكون منتجاً حقيقياً بس جزء انها "لغة برمجة" ما كانش حاجة مستحيلة.
اعتقد ان الفريق اللي عمل unity نفسه صغير غالباً..خمسة او عشرة مثلاً..
اما المجتمع المصري فلا اقلق عليه بشدة..ربما تأتي النهضة بعد سنة او 10 او حتى 15، لكن اظن انه قد جاء أوانها.
اما عن حلمك، ربما تود أن تبدأ تقرأ عن الcompilers من الآن؛ من يدري :)
إرسال تعليق