لغة البرمجة العربية (كلمات)

قرأت في وادي التقنية الإسبوع الماضي خبر حول لغة برمجة عربية جديدة تدعى كلمات، وتمت برمجتها بأداة التطوير QT-Creator.

وقد قمت بعمل عدة تجارب بها في نظام لنيكس ووندوز. وهي لغة مناسبة للتعليم وبها إمكانات عالية، مثل البرمجة الهدفية و الواجهة الرسومية.

وهذا مثال لبرنامج جدول الضرب:

اقرأ "الرجاء إدخال رقم"،#س
لكل ص من 1 إلى 12:
اطبع س، " * "، ص، " = "، س * ص
تابع

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

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


اطبع س، " * "، ص، " = "، س * ص

أتمنى نجاح هذه اللغة الجديدة وإستمرار تطويرها وإنتشارها في العالم العربي إن شاء الله

13 thoughts on “لغة البرمجة العربية (كلمات)

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

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

    مع ذلك طالب المعلوماتية يستطيع أيضا أن يستخدم توابع أو خوارزميات تحليل جاهزة لذلك راجع http://www.devincook.com/goldparser/articles/parser.htm
    أذكر أنني وجدت نسخة تحليل مكتوبة بالباسكال دلفي لـ goldparser أيضا تستطيع استخدامها لانشاء لغتك الخاصة.

    لن أحكم على المشروع قبل تجريبه و الاطلاع على المصدر و لكن من البداية بعض العقبات، أولها الخبر على وادي التقنية 😛
    و على GoogleCode وهو محجوب بل و و يحجب بعض عناوين برنامج البروكسي أيضا، تم تجاوز هاتين العقبتين سريعا 😀

    ما زلت افضل http://scratch.mit.edu/ لأولادي في المستقبل

    ملاحظة: الوصلة العليا لها يجب أن تشير إلى الموقع الرسمي للغة، و في الأسفل تضع تذييل “مصدر الخبر هو…”

  2. قمت بتحويل الرابط اﻷول.

    لغة إسكراتش هذه تبدو أفضل من لوغو.
    حاولت إنزالها، لكن حدثت مشكلة : connection interrupted

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

  3. @أبو إياس:

    شكراً لتجربتك لغتي! بالمناسبة يمكن إدخال جميع الرموز من لوحة المفاتيح العربية، لكن أماكن بعضها مختلفة عن نظائرها على لوحة المفاتيح الانجليزية للأسف 😦

    ربما تفيد هذه الخارطة؛ كنت أستعين بها أثناء تطوير اللغة http://en.wikipedia.org/wiki/File:KB_Arabic.svg

    أخيراً يبدو المثال الذي كتبته شيقاً..ألا تريد تقديمه على مدونتك و/أو إرساله لي لأدرجه مع الأمثلة الأخرى الموجودة مع حزمة اللغة؟ 🙂

    @زاهر ديركي
    أتمنى سماع رأيك بعد تجربتها؛ هذه بعض الأمثلة لفتح شهيتك:
    http://iamsamy.blogspot.com/2011/06/blog-post_23.html
    http://iamsamy.blogspot.com/2011/07/blog-post_07.html
    http://iamsamy.blogspot.com/2011/06/blog-post.html

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

  5. اخي محمد سامي، أنت أشرت إلى أنها مناسبة لتعليم البرمجة للأطفال، ذلك جيد جنبك فكرة أنها لن ترقى إلى أن تكون لغة حقيقية تنافس اللغات الأخرى، أي تجنبت هذا النوع من النقد :D.
    مع ذلك لا استطيع الحكم عليها أنها كذلك، لدي أطفال و لا استطيع سوى ان افكر في تعليمهم البرمجة إلا من خلال scratch (وهو يدعم العربية)، أو ان انتقل فورا إلى اللغة البرمجية العادية، حتى لغة لوغو، لا استطيع أن اصنفها انها مناسبة للأطفال.

    لكن من النظرة الأولى بالإضافة إلى النقاط على الموقع الرسمي
    هي لغة تفسيرية SCRIPT أي انها يمكن أن تعمل على كل الأنظمة، هذه ميزة جيدة
    أيضا لها صيغة مشابهة للغة بيسك BASIC منها إلى اللغات التي تعتمد اسلوب BLOCKS مثل السي و الـ PHP و الباسكال و هذه نفطة سيئة
    ولكنها أقرب و اسهل للميتدئين
    إلى الآن هي مدمجة بالـ IDE و الواجهة الرسومية الداخلية، بالرغم أنه من المصدر استطيع أن اقول انك قمت بتجزئة العمل.

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

    إذا انت بحاجة إلى فصل مكتبات التنفيد و الدخل و الخرج، و انت بحاجة إلى ان تجعلها في مكتبات منفصلة DLL, SO و مجموعة من توابع API لربطها مع برامج خارجية، و تعريف توابع و Classes (فصائل) من خارج اللغة نفسها أي من قبل البرنامج المضيف.
    شي يشبة LUA و PYTHON بهذه الطريقة تكون حققت فائدة عملية حقيقة، تتجاوز فكرة المتعة برؤية لغة عربية نستتمتع بها ساعة، ثم ندخل تعابير الفرحة و كلمات المجاملة و الثناء في المدونة، و نتركها كما تركنا قبلها.

  6. @زاهر ديركي
    > ذلك جيد جنبك فكرة أنها لن ترقى إلى أن تكون لغة حقيقية تنافس اللغات الأخرى
    تعال نتخيل أن كلمات لم تكن عربية؛ بل كانت في الواقع لغة مبنية على الانجليزية لتعليم الأطفال البرمجة. كيف كانت ستنافس اللغات التالية يا ترى…Python، Scratch، SmallBasic؟

    بالنسبة لسكراتش فهي قد تكون مقدمة جيدة لكنها تضع سقفاً لإمكانات البرامج التي يستطيع الطفل أن يتخيلها..
    – هل يقدر أن يصنع بها برامج رسومية GUI ذات ازرار، قوائم، combo boxes…الخ؟
    – هل يقدر أن يقسم البرامج المعقدة إلى إجراءات ودوال؟ هل يستطيع عمل مكتبات؟
    – هل يمكنه أن يتعلم تجريد البيانات data abstraction أو البرمجة بالأشياء؟
    – هل يستطيع عمل برامج غير هندسية ولا قصصية، مثل دليل الهاتف؟

    نجد إذاً أن سكراتش هي، في أفضل الأحوال، منصة يصعد عليها الطفل إلى لغات برمجة أخرى. ماذا عن Smallbasic؟ نجد أنها قوية في إمكانات معينة (الرسومات، التوصل بالإنترنت…) لكنها ليست قوية جداً كلغة؛ مثلاً الإجراءات لا تأخذ عوامل parameters، لا يوجد data abstraction…

    نأتي إلى البايثون. هنا نجد أنفسنا أمام لغة قوية محترمة، لكن تحتاج بعض العوائق قبل البدء فيها..
    – أولاً لا يوجد معها IDE مبنية جاهزة مناسبة للأطفال. ربما يمكن تشغيلها مع GEdit أو ما شابه لكن هذه خطوة إضافية، كما أن هذه ليست IDE بالمعنى المفهوم – لا يوجد مثلاً step into أو breakpoints
    – لابد من تحميل مكتبة رسومية مثل PyGame قبل بدء عمل البرامج الرسومية، خطوة أخرى
    – كلمات في الواقع أقوى من البايثون – ليس مطلقا في صورتها الحالية بلا شك ولكن في نقاط صغيرة معينة، مثل دعم tail-call elimination أو built-in support for concurrency.

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

    نأتي إلى نقاط معينة قد ذكرتها:
    – اللغة في الواقع block-structured لكنها لا تبدو كذلك، هذا متعمد لكي لا يضطر المعلم إلى البدء بشرح الblocks لو لم يرد ذلك (لكن الاختيار مازال أمامه).
    – نعم، أكبر ثغرة في اللغة حاليا هي عدم وجود وسيلة لاستخدام إجراءات خارجية بدون تغيير المفسر (foreign function interface) لكن هذا عيب لم أنكره، وفي الخطة تغييره
    – هل أنوي أن أجعل كلمات “تكبر” ويمكن عمل برامج احترافية بها، سواء برامج مستقلة أو تتحكم في برامج أكبر كما وصفت؟ هذا ليس صعباً جداً لأن الأساس المبنية عليه اللغة يحتمل، لكن سيحدد ذلك أولوياتي: هل أريدها أن تستمر لتعليم الأطفال فحسب (وهنا قد أشتق منها – أو يشتق غيري- لغة أخرى مشابهة احترافية) أم الجمع بينها وبين إمكانات احترافية لتصير مزدوجة الهدف.

    لو أردت الاطلاع على خططي لمستقبل اللغة يمكنك إلقاء نظرة هنا: http://www.kalimat-lang.com/wiki/Ideas_for_Kalimat_2.0 مع ملاحظة أن بعض هذه الإمكانات قد نُفّذ بالفعل 🙂

    شكراً على اهتمامك باللغة، وأرحب بآرائك 🙂

  7. >—————-
    الطفل أن يتخيلها..
    – هل يقدر أن يصنع بها برامج رسومية GUI ذات ازرار، قوائم، combo boxes…الخ؟
    – هل يقدر أن يقسم البرامج المعقدة إلى إجراءات ودوال؟ هل يستطيع عمل مكتبات؟
    – هل يمكنه أن يتعلم تجريد البيانات data abstraction أو البرمجة بالأشياء؟
    – هل يستطيع عمل برامج غير هندسية ولا قصصية، مثل دليل الهاتف؟
    >—————-

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

    >تعال نتخيل أن كلمات لم تكن عربية؛ بل كانت في الواقع لغة مبنية على الانجليزية لتعليم الأطفال البرمجة. كيف كانت ستنافس اللغات التالية يا ترى…Python، Scratch، SmallBasic؟
    الإجابة بإضافة مزايا إضافية قمت باقتراح أحدها في مداخلتي السابقة

  8. @زاهر ديركي

    > انا اقصد الطفل بحدود سن العاشرة، لا يحتاج إلى هذه النقاط التي ذكرتها
    لدينا إذاً أفكاراً مختلفة عن الأطفال في العاشرة 🙂

    على أية حال من الواضح أن خلفياتنا الفكرية مختلفة، فلنوقف النقاش عند هذه النقطة إذاً، وقد فهمت وجهة نظرك ولو لم أقتنع بها. شكراً لاهتمامك وبذل الوقت في الرد.

  9. […] لغة البرمجة العربية (كلمات) « مدونة أبو إياس – وقد قمت بعمل عدة تجارب بها في نظام لنيكس ووندوز. وهي لغة مناسبة للتعليم وبها إمكانات عالية، مثل البرمجة الهدفية و الواجهة الرسومية. وهذا مثال لبرنامج جدول الضرب: اقرأ “الرجاء إدخال رقم”،#س لكل ص من 1 إلى 12: اطبع س، ” * “، ص، ” = “، س * ص تابع. ويوجد شرح بسيط وعدد كبير من … جرت مناقشة قديمة (أكثر من 10 سنوات) بين و بين صديقي عن امكانية تقبل اللغة العربية لتكون لغة برمجة، و انا كنت من مناصري هذا الفكرة حتى ولو كانت للتجارب التعليمية. و لكن على مر السنين اكتسبت خبرة بأن … Tweet(function() {var s = document.createElement('SCRIPT'), s1 = document.getElementsByTagName('SCRIPT')[0];s.type = 'text/javascript';s.async = true;s.src = 'http://widgets.digg.com/buttons.js';s1.parentNode.insertBefore(s, s1);})();← كرتون الاميرة والوحش […]

  10. السلام عليكم من بعد إذنك من أين بحسن أحمل برنامج كلمات ؟
    أنا طالبة ماستر هندسة الكمبيوتر وعمبعمل paper مقارنة بين اللغات البرمجة العربية فأتمنى تساعدني بالهموضوع ؟

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s