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

صفحة الإنترنت والاتصالات كان لها هذا اللقاء الشيق والمفيد مع الأستاذ إبراهيم.

من يكون ابراهيم بيدي؟

  • إبراهيم بيدي 25 سنة أمازيغي الأصل مسقط الرأس الأطلس الكبير بمدينة ورززات جنوب المملكة المغربية، أقيم حاليا مع أسرتي بمدينة الدار البيضاء، كانت دراستي الفنون التشكيلية، إلى أن تعرفت على الزائر الجديد الانترنت سنة 1998، حيث رافقني صديق لي رغما عني إلى أحد نوادي الانترنت، لم أكن أريد أن أذهب معه لأني لم أكن أفقه شيئا عن الحاسوب، فكيف بالإنترنت، تعلمت التعامل مع الانترنت قبل أن أتعلم كيف أتعامل مع سطح المكتب، شيئا فشيئا بدأت أتعلم، إلى أن اكتسبت و لله الحمد خبرة في البرمجة، بلغات البرمجة القياسية ECMAScript JScript و ActionScript و خصوصا JavaScriptوإتقان اللغات التي تتوافق مع المنضمة العالمية w3s كHtml Xhtml Css Dom Svg Xml.

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

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

ماهي لغة الوينوسكريبت WinoScript - وما هو الهدف والفكرة من ورائها وماذا يعني هذا الاسم؟

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

والوينوسكريبت إن قلنا عليها لغة فهي لغة برمجة نصية وليست هيكلية أي هي ترجمة للغة أخرى Scripting Languages.

ولي هدفان منها أولا:

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

الهدف الثاني:

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

أصل التسمية:

سكريبت: نص برمجي غالبا يترجم من طرف برنامج ك javascript من طرف المتصفح و ActionScript من طرف flashPlayer وmircScript من طرف الميرك وليس كباقي لغات البرمجة الهيكلية. وينو: للتملك بالأمازيغية تعني (لي) بالعربية كهذا لي وينو سكريبت كأنك تقول (لي برمجتي النصية).

كيف طورت هذه اللغة (السكريبت) وهل تعمل على جميع المتصفحات؟

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

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

هل تعتزم على طرح منصة IDE يمكن استخدامها لكتابة سكريبتات بلغة WinoScript ؟

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

    القواعد اللغوية والأوامر البرمجية في اللغة (مثل الجمل الشرطية مادام أو الوظائف مثل صاين) هل تم الرجوع لقاموس مصطلحات اللغة العربية في الحاسب أم تم الاجتهاد في بناء التعبيرات البرمجية؟ وكيف يمكن البرمجة بهذه اللغة (السكريبت)؟

  • المصطلحات البرمجية ك ادا() مادام() مع() تجزيء() الصاين() استدعي() او جيب التمام هم من اجتهادي، وضعت مؤقتا وهي قابلة للتغير، لأنني لا يمكن أن أجزم أنها صحيحة 100 ٪.

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

لبرمجة كود بالوينو سكريبت، نفتح ملفا نصيا عاديا، وتكون التقنية كما ECMAscript القياسية، أي لتجاهل السطر نستعمل علامتي // و لتجاهل عدة اسطر /**/ ولإعلان المتغير

المتغير الف = 1000 ;

المتغير ا = ب = ج = د = ه = و = ز = «هذه حروف عربية» ;

الدالة دالةجديدة(){} او دالةجديدة = الدالة(){}

الفاصلة المنقطة غير مهمة طالما أننا قفزنا السطر في البرمجة، ولإعطاء متغير قيمة ما نستعمل = ولإضافة + ولإضافة قيمة عليه += و للمقارنة == وللمخالفة ! ...وهكذا.

هل تحتاج لغة WinoScript إلى مترجم خاص بها؟ إذا نعم ما هو هذا المترجم ومن قام بنائه وكيف يمكن تضمينه في المتصفح؟

  • بطبيعة الحال وينو سكريبت تحتاج إلى مترجم خاص بها، بعد أن ننتهي من ملف البرمجة بالعربية نقوم بتضمينه في المتصفح أي باستدعاء المفسر أولا كما نستدعي أي ملفjs لكن ببعض الإضافات الخاصة على الشكل رقم (1)، فيقوم المتصفح أولا بإدخال ملف ال wino.script أي المفسر الذي هو أصلا مبرمج بالجافا سكريبت وفق المعايير القياسية، حينها يقوم المفسر بجلب الملف الذي يكون في التعريفة link، بعد جلبه يقوم بترجمة الجمل الشرطية وإعادتها لصيغتها البرمجية ثم يُفعل الكود، لكن عند تفعيلها قد تكون هناك استدعاءات من داخل الملف العربي لبعض الدوال أو الكائنات أو مكتبات، فيقوم المفسر بإدخالها وتفعيلها ثم إتمام الكود سطر سطر، وهذه الكائنات أو المكتبات ممكن أن تكون مرفقة مع الوينو سكريبت كما يمكن إضافتها من طرف المبرمج أو المطور، فمثلا كائن HttpRequest فالمفسر سيقوم بكل المعاملات الخاصة بهذا الكائن والمبرمج قد لا يحتاج ان يكون ملما بتقنية أجاكس للتعامل بها فيكفي المبرمج ان يكتب في الحالات العادية الموجود في شكل رقم (2).

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

وهذا المفسر قمت ببنائه بنفسي، حسب خبرتي وتجربتي المتواضعة.

كم استغرق بناء لغة WinoScript وهل هناك أمثلة تطبيقية عليها... وكيف وجدت إقبال المبرمج العربي عليها؟

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

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

لمن يريد أن يجرب اللغة كيف يمكن له البدء باستخدامها؟

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

    هل هناك نية لطرح اللغة (السكريبت) كمصدر مفتوح... أو إرسالها لأحد المهتمين لتبنيها سواء كان في العالم العربي أو الغربي؟

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

    ماهي خططك المستقبلية؟

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

hend@alriyadh-np.com