السبت، 19 نوفمبر 2005

لغة برمجة عربية؟ لم لا؟

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

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

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

هل هناك لغات البرمجة أجنبية؟

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

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

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

كل شيء أو لا شيء

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

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

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

أفكار للغة البرمجة العربية

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

لغة متخصصة في معالجة النصوص والبيانات

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

قواعد البيانات للجميع

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

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

برنامج مثل هذا وباللغة العربية؟ سيكون أمراً رائعاً، من الجميل أن نوفر للناس أداة للبرمجة والإبداع لا تحتاج لمعرفة تقنية كبيرة.

سطر الأوامر بالعربي

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

في الختام

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