البرامج الحرة الأساسية التي تحتاجها اللغة العربية

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

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

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

ولقد فكَّرتُ مراراً في حال الحاسبات وكيف ستكون لو أن من أنتجها بادئ ذي بدء كان عربياً أو مسلماً؟! ولمعرفة الجواب على هذا السؤال الإفتراضي، ينبغي علينا الرجوع للخلفية الثقافية والتاريخية للعرب والمسلمين. فالإسلام ذو طابع عالمي وأممي، ولذلك يوجد في تاريخه فترات كثيرة ساد فيها “التعايش الثقافي” بين أعراق ولغات مختلفة، فالكثير من الدول التي فتحها المسلمون مثلاً ما تزال محتفظة بهوايتها ولغاتها حتى اليوم. ومن هنا يمكننا تَصوُّر حال الحاسب لو كان مُنتَـجاً عربياً بالأساس. وحتى لا أطيل في هذا الموضوع، دعني أرجع إلى مثال الشاشة أعلاه. فالمهندس العربي كان على الأرجح سيستهدف مستخدِمين من غير العرب، وسيعرف بالتالي أن اعتماد يمين الشاشة مناسب للغته الأم ولكنه قد يسبب بعض التعقيد للآخرين. لذا، فإنه كان سيعتمد منتصف الشاشة ربما كنقطة المرجِع. وهذا قد يسهل عليه وعلى غيره برمجة جهازه الجديد لعرض أي لغة، سواء كانت تُكتب من اليسار إلى اليمين أو من اليمين إلى اليسار أو من فوق إلى تحت (كالكتابة العمودية في شرق آسيا).

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

التدقيق الإملائي:

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

هذه الطريقة مناسبة جداً للغات التي تستخدم اللواحق affixes بشكل أساسي في بنية كلماتها. ولكنها غير مناسبة لحد ما للغة العربية. فأول عيوبها هو عدم قدرتها على التعامل مع علامات التشكيل في اللغة العربية. إذ تَعتبر الكلمة المشكَّلة خاطئة لأنها ليست في قائمة الكلمات لديها! وهذا بالذات أحد عيوب المدقق الإملائي العربي في برنامج LibreOffice مثلاً. عيب آخر لهذه المحركات هو فشلها في اقتراح الكلمات الصحيحة المقاربة للكلمة الخاطئة التي تجدها. إذ عادة ما تسرد عدداً كبيراً من الكلمات التي تظنها صواباً، ولكن المستخدم في أحيان كثيرة لا يجد الكلمة الصحيحة التي يريدها من بين تلك المقترحات!

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

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

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

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

العَدُّ العربي

وقبل الابتعاد عن المدققات الإملائية يجدر بنا مناقشة مفقود لطيف ذي صلة تحتاجه البرامج العربية، ألا وهو العَدُّ أو التعداد العربي. فالكثير من برامج اليوم تستخدم لغة ركيكة عند إظهار الأعداد ووحداتها، فتكتب مثلاً: ١ قلم، ٢ أقلام، ١٥ أقلام. وهي هنا تعامل العربية معاملة الإنجليزية، فالواحد مفرد وما فوق الواحد جمع. بينما الوضع يختلف تماماً مع اللغة العربية كما هو معروف. فالعربية تُفَرِّق بين المفرد والمثنى والجمع من ٣ إلى ١٠ وما هو أكبر. كما أن العربية قد تضع الوِحدة قبل الرقم فتقول “كتاب واحد”، وقد تضعها بعد الرقم فتقول “١١ كتاب.” كما أن وِحدة التعداد في العربية يمكن أن تكون مؤنثة أو مذكرة أو متصلة بضمير.

إن المبرمج لن يملك الوقت أو الخبرة (خاصة إذا كان أعجمياً) لمعالجة اللغويات المتعلقة بالتعداد. لذا، فحبذا لو وُجِدَ مكتبات برمجية بلغات مثل C وَ Java وَ PHP وغيرها يمكن للمبرمجين تضمينها في برامجهم واستدعاءها عند الحاجة لإظهار أو طباعة أي معدود. بحيث يتم تزويدها بالرقم والوِحدة، لتقوم بدورها في معالجتهما وفق قواعد اللغة العربية وإرجاع النتيجة على هيئتها الفصيحة.

التعرف الضوئي على المحارف

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

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

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

التعرف الآلي على الكلام

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

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

النُطق الآلي

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

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

التعبير النمطي

من أهم وأقوى الأدوات التي يستخدمها المبرمجون عند تعاملهم مع النصوص هي أداة أو مكتبة التعبير النمطي Regular expression (RegEx). لن أخوض في التفاصيل هنا لأنها قد لا تهم غير المختصين، ولكن يوجد حاجة فعلية لتمكين هذه الأداة من تمييز الحروف والكلمات والأرقام العربية والتعامل معها. فعلى سبيل المثال، عند الطلب من هذه الأداة إيجاد كلمة أو حروف باستخدام الأمر ( \w ) فإنها لن تجد أي شيء مكتوب باللغة العربية. والحال ذاته مع الأمر ( \d ) الذي لن يجد أي رقم هندي (وهي الأرقام التي نستخدمها اليوم في العربية مثل ١ ٢ ٣ وليس 1 2 3)

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

التاريخ الهجري

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

إنه من الواجب فعلاً على الجهة القائمة على حساب تقويم أم القرى، وهي مدينة الملك عبدالعزيز للعلوم والتقنية، أن تطرح مكتبات وبرامج مفتوحة المصدر بلغات برمجية متعددة يستطيع المطورون من خلالها تضمين تقويم أم القرى الرسمي في برامجهم وجعلها متوافقة معه مستقبلاً. وفي الحقيقة، أن المدينة قد نشرت منذ سنوات بعيدة برنامجاً حراً بلغة C لحساب التاريخ الهجري، إلا أنه كان لا يحسب ما بعد سنة ١٤٥٠هـ إن لم تخني الذاكرة. لذا فللمبرمج العربي أو لغيره ممن يريد استخدام التاريخ الهجري حق على المدينة أن تزوّده بالبرامج اللازمة.

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

المعايير

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

  1. البحث والترتيب: كيف نبحث عن الكلمات العربية الـمُشَكَّـلَةِ أو المحتوية على لواحق مثل واو الجماعة وألف الإثنين والضمائر و(ال) التعريف؟ وأيضاً، ما هو المعتمد عند ترتيب الكلمات التي تبدأ بألف أو همزة أو مد (ا أ إ آ) أو بـ (ال) التعريف؟
  2. التنقيط: هل تُوضع مسافات بين الكلمات وعلامات التنقيط كالنقطة والفاصلة والشَرطة والاستفهام والتعجب؟ وهل من الأصوب أن تسبق علامة الاستفهام علامة التعجب أو أن التعجب تسبق الاستفهام؟! ومتى تُكتب الفاصلة المنقوطة وكيف نميز الجمل الاعتراضية، بشرطتين أم بقوسين؟
  3. الفاصلة العشرية: ما هي علامة الفاصلة العشرية؟ هل هي النقطة (.) كما “تفترضه” أنظمة ماك وأندرويد مثلاً مع ما يثيره هذا من لبس بينها وبين الصفر (٠) أم هي الفاصلة (،) أم الفاصلة العشرية (,) المعتمدة في مناهج الرياضيات العربية في المدارس؟
  4. الفاصلة الألفية: هل توضع بعد كل ثلاثة خانات من يمين الأرقام الطويلة (من عشرة آلاف وأكبر) أم من يسارها كما يفعل البعض؟ وما هو شكلها، هل هي الراء الصغيرة (٫) مع ما فيها من شبه مع الفاصلة العشرية، أم أنها الفاصلة العلوية (٬)؟
  5. العملات: لا يوجد بحسب علمي رموز خاصة لأي من العملات العربية، ولكن أيضاً لا يوجد لها اختصارات متفق عليها! فالريال السعودي مثلاً يُختصر كالتالي: رس ، ر.س ، ر.س. ، SR ، S.R. ، SAR ! إن تعدد الاختصارات هذا يسبب مشاكل وخلط بين عملات دول أخرى كالعملة الهندي والجنوب أفريقية. ثم أين يوضع رمز العملة، هل يوضع عن يسار الرقم أم عن يمينه؟
  6. الرموز العلمية: وهذه تمثل مشكلة كبيرة عند كتابة المعادلات الرياضية والفيزيائية والكيميائية باللغة العربية. فمنتجو أنظمة التشغيل والخطوط وبرامج النشر المكتبي وتحرير النصوص وغيرها غير متفقين على كثير من تلك الرموز عندما يتعلق الأمر باللغة العربية. وهذا يسبب كثير من الحيرة سواء للمبرمج أو للمستخدم على حد سواء.

لقد حاول مَجْمَع يونيكود Unicode الدولي توحيد العرب على رموز موحّدة. ولكن للأسف، لم يأخذ الجميع بما أقره المجمع في جداوله الخاصة بالمحارف العربية. وهذا إما بسبب الجهل بها أو بسبب عدم الإجماع عليها. وأظن أن هذه المسائل الدقيقة ينبغي أن تتبناها وتفرضها هيئات المواصفات والمقاييس الرسمية في كل دول عربية، أو منظمة عربية شاملة تتبع جامعة الدول العربية، حتى تصبح البرامج المنتَجة محلياً وخارجياً تُعامِل لغتنا العربية بالاحترام اللائق بها فتستخدم أنساقها وضوابطها كما تفعل مع بقية اللغات الراقية في العالم.

نشر الوعي

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

– الإنعكاس mirroring المتعلق بعكس الكلمات والجمل وواجهات المستخدم من اليمين إلى اليسار right-to-left (RTL) وما يتعلق بهذا من تعديلات على برامجهم.

– تراميز المحارف العربية character encodings المختلفة والتحويل بينها، كالتحويل من ترميز ويندوز أو آي بي إم إلى ترميز يونيكود.

– أشكال الحروف العربية shaping وكيف أن شكل الحرف يتغير بحسب موقعه في الكلمة.

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

0

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *