Nothing Special   »   [go: up one dir, main page]

Ar PHP

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 8

‫مشروع ‪ PHP‬واللغة العربية‬

‫خالد الشمعة ‪khaled.alshamaa@gmail.com‬‬


‫‪http://www.ar-php.org‬‬
‫مقدمة‪:‬‬

‫تعد لغة ‪ PHP‬أكثر لغات البرمجة في العالم شعبية في مجال تطوير مواقع ال‪11‬ويب‪ ،‬ل‪11‬ذا فق‪11‬د عم انتش‪11‬ارها كوس‪11‬يلة‬
‫لبناء مواقع الويب المتوسطة والصغيرة ضمن ما بات يعرف ببيئة‪ LAMP 1‬حيث يشير مصطلح أوائ‪11‬ل األح‪11‬رف‬
‫هذا إلى ‪ Linux‬كنظام تشغيل و ‪ Apache‬كمخدم ويب و ‪ MySQL‬كقاعدة بيانات فيم‪11‬ا ح‪11‬رف ‪ P‬يش‪11‬ير إلى أي‬
‫من ‪ Perl‬أو ‪ Python‬أو ‪ ،PHP‬وجميع مكونات ه‪1‬ذه البيئ‪1‬ة مفتوح‪1‬ة المص‪1‬در بامتي‪1‬از‪ .‬إن النج‪1‬اح المتم‪1‬يز له‪1‬ذه‬
‫البيئة وجدارتها ك‪1‬ان م‪11‬دخل الكث‪1‬يرين إلى اس‪1‬تخدام ال‪1‬برامج الح‪1‬رة المفتوح‪1‬ة المص‪1‬در‪ .‬من جه‪1‬ة أخ‪1‬رى ف قد نمى‬
‫استخدام اإلنترنت على المستوى العالمي بش‪11‬كل هائل خالل األع‪11‬وام القليلة الماض‪11‬ية‪ ،‬وك‪11‬ان ه‪11‬ذا النمو أس‪11‬رع في‬
‫المناطق غير الناطقة باإلنجليزية وبالذات في العالم العربي‪ .‬فعلى سبيل المثال‪ ،‬لقد نمى عدد مس‪11‬تخدمي اإلن‪11‬ترنت‬
‫في الشرق األوسط بين عامي ‪ 2000‬و ‪ 2008‬بنسبة ‪ ،%2062.2‬في حين يقدر أن حجم المحتوى العربي على‬
‫شبكة الويب يتض‪1‬اعف في كل ع‪1‬ام‪ .‬إن مثل هك‪11‬ذا نمو أوجد حاجة إلى مص‪1‬ادر برمجية تس‪1‬اعد في تط‪1‬وير مواقع‬
‫الويب باللغة العربية‪.‬‬

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

‫إال أن الثقة تبقى هي العائق األهم ‪ -‬بحسب وجهة نظري الشخصية ‪ -‬أم‪11‬ام التح‪11‬ول من مج‪11‬رد مس‪11‬تخدمين س‪11‬لبيين‬
‫لنتاج البرمجيات الحرة المفتوحة المص‪1‬در إلى عناص‪1‬ر إيجابي‪1‬ة فاعل‪11‬ة ومنتج‪1‬ة‪ ،‬فالش‪1‬عور ال‪1‬دفين بأنن‪11‬ا مت‪1‬أخرون‬
‫زمنيا ومهاريا عن اللحاق بركب من سبقنا إلى عالم البرمجيات الحرة المفتوحة المصدر هو هاجس مثب‪11‬ط لعزيم‪11‬ة‬
‫الكث‪11‬يرين وهممهم‪ .‬ل‪11‬ذا س‪11‬نحاول من خالل ه‪11‬ذه المقال‪11‬ة إطالعكم على خ‪11‬برة العم‪11‬ل على أح‪11‬د المش‪11‬اريع الح‪11‬رة‬
‫المفتوحة المصدر من وجهتي نظر مختلفتين‪ ،‬حيث سنناقش بداية وجهة نظر المبرمج الش‪11‬اب ال‪11‬ذي يتهيب دخ‪11‬ول‬
‫هذا المعترك وما ترافق معه من دروس قد تفيد اآلخرين في تجاربهم الخاصة‪ ،‬ثم ننتقل إلى وجهة نظر من يتطل‪11‬ع‬
‫إلى نتائج هذا المشروع ومدى الفائدة التي يمكن أن يجنيها اآلخرون منه أو من اإلضافة إليه‪.‬‬
‫القصة من البداية‬

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

‫لقد كانت الفكرة الرئيسية للمشروع هي العامل األساس في نجاحه‪ ،‬وهي التي حولت مخاوف الضعف إلى أس‪11‬باب‬
‫قوة وقلبت قواعد اللعبة لمصلحتنا‪ ،‬وقد كانت دعوة مفتوح‪11‬ة للمض‪11‬ي خط‪11‬وة جدي‪11‬دة إلى األم‪11‬ام متج‪11‬اوزين ح‪11‬اجز‬
‫تعريب برمجيات اآلخرين وصوال إلى المساهمة الفعلية في كتابة الش‪11‬يفرات البرمجي‪11‬ة‪ ،‬فمن يفوقن‪11‬ا معرف‪11‬ة بلغتن‪11‬ا‬
‫األم ومن أعلم منا بخفاياها؟ ومن سيحرمك التميز إن أنت قدمت حلوال تناسب لغتك وثقافتك؟ إنها البداية المالئم‪11‬ة‬
‫لفتح باب اإلبداع واس‪1‬عا على مص‪1‬راعيه دونم‪1‬ا رهب‪1‬ة أو ت‪1‬ردد ح‪1‬ول أهمي‪1‬ة المش‪1‬اركة ال‪1‬تي نض‪1‬يفها إلى مجتم‪1‬ع‬
‫البرمجيات الحرة المفتوحة المصدر‪.‬‬

‫تم اختيار العمل على تطوير أصناف ‪ Classes‬مفردة صغيرة في البدء نظرا ألن العمل على ه‪11‬ذا المش‪11‬روع ك‪11‬ان‬
‫يتم خالل أوقات الفراغ من جهة‪ ،‬ولكون الشريحة المستهدفة منه لم تكن المستخدم النهائي بقدر ما ك‪11‬انت الم‪11‬برمج‬
‫الذي يعمل على تطوير موقع ويب عربي ضمن بيئة ‪ LAMP‬من جهة أخ‪11‬رى‪ .‬وك‪11‬انت البداي‪11‬ة م‪11‬ع ص‪11‬نف س‪11‬مي‬
‫‪ ArQuery‬والذي يختص بتحسين آلية البحث ضمن قاعدة ‪ MySQL‬للبيان‪11‬ات وذل‪11‬ك من خالل توظي‪11‬ف تقني‪11‬ات‬
‫التعابير النظامية ‪ Regular Expressions‬بغية الحصول على نتائج أفضل عند التعامل مع النصوص العربي‪11‬ة‪.‬‬
‫حيث أن معظم المواقع العربية المبني‪1‬ة باس‪1‬تخدام برمجي‪1‬ات ط‪1‬ورت أساس‪1‬ا للتعام‪1‬ل م‪1‬ع اللغ‪1‬ة اإلنجليزي‪1‬ة ال تق‪1‬دم‬
‫لألسف أكثر من وظيفة البحث الح‪1‬رفي لزوارها ومس‪11‬تخدميها‪ ،‬لكن المش‪11‬كلة في حال‪11‬ة اللغ‪11‬ة العربي‪11‬ة تكمن في أن‬
‫ذات الكلمة يمكن لها أن تظهر بأش‪11‬كال مختلفة بحسب س‪11‬ياق النص‪ ،‬وأض‪1‬رب على ذلك مث‪11‬الا‪ :‬إن ك‪11‬ان المس‪11‬تخدم‬
‫يبحث عن كلمة مغ‪111‬تربين‪ 1‬فإنه لن يحصل في مجموعة نتائجه على تلك الس‪111‬جالت ال‪111‬تي ك‪111‬انت تتض‪111‬من كلمة‬
‫مغتربون! ليس هذا فحسب‪ ،‬فاألمور يمكن لها أن تسوء أكثر لتجعل من عملية البحث تلك منقوصة إلى حد بعيد‪.‬‬

‫يقوم صنف ‪ ArQuery‬بالبحث بداللة ساق الكلمة مع ما يستلزمه ذلك من إجراءات لتقييس شكل الكلمة وتوحيده‪،‬‬
‫وهو ما يتم من خالل التعامل مع التشكيل‪ ،‬والهمزة بأشكالها المختلفة‪ ،‬إضافة إلى موضوع السوابق ك‪11‬واو العطف‬
‫ال‪11‬تي تلصق أحيانا بالكلمة أو أل التعري‪11‬ف‪ ،‬واللواحق مثل إش‪11‬ارات التثنية والجمع والت‪11‬أنيث والض‪11‬مائر المتص‪11‬لة‪،‬‬
‫وذلك دون أن ننسى ض‪11‬رورة التعامل مع األخط‪11‬اء الش‪11‬ائعة من قبيل اس‪11‬تبدال الت‪11‬اء المربوطة باله‪11‬اء أو األلف‬
‫المقصورة بالممدودة أو بالعكس‪ ،‬وسواها من حاالت أخرى‪ .‬وقد ط‪1‬ور ه‪11‬ذا الص‪1‬نف بطريق‪11‬ة تس‪1‬هل دمجه مع أي‬
‫تط‪11‬بيق يس‪11‬تخدم لغة ‪ PHP‬ويحفظ معلوماته في قاع‪111‬دة ‪ MySQL‬للبيان‪11‬ات‪ ،‬بحيث تعطى الكلمة أو مجموعة‬
‫الكلمات التي أدخلها المستخدم كدخل لهذا الصنف‪ ،‬فيما نحصل منه بالنتيجة على تركيبة القسم الشرطي من عبارة‬
‫‪ SQL‬ال‪11‬تي يجب تمريرها إلى قاع‪11‬دة البيان‪11‬ات لتتم عملية البحث بأس‪11‬لوب س‪11‬اق الكلمة آخ‪11‬ذين بعين االعتب‪11‬ار‬
‫مجموعة النقاط التي سبق اإلشارة إليها إضافة إلى المزيد غيرها من النقاط‪.‬‬
‫بعد إتمام بناء هذا الصنف وتجريبه تمت إضافته بداي‪11‬ة األم‪11‬ر إلى موق‪11‬ع ‪ http://www.phpclasses.org‬وه‪11‬و‬
‫ذات الموقع الذي كنت أتوجه إليه فيما مضى بحثا عن أصناف تؤدي وظائف أحتاج إليها في تط‪11‬وير ه‪11‬ذا التط‪11‬بيق‬
‫أو ذاك‪ ،‬لكنها كانت الم‪11‬رة األولى بالنس‪11‬بة لي ال‪11‬تي ألعب فيه‪11‬ا دور المؤل‪11‬ف ال‪11‬ذي يض‪11‬يف عمال مفت‪11‬وح المص‪11‬در‬
‫ليصبح متاحا لآلخرين‪ .‬إحدى النقاط اإليجابية في هذا الموقع هي أن‪1‬ه ليس مج‪1‬رد مك‪1‬نز لألص‪1‬ناف ال‪1‬تي يطوره‪1‬ا‬
‫المبرمجون من جميع أصقاع العالم فقط‪ ،‬بل لهذا الموقع إدارة ومشرفين يعاينون البرامج التي ترسل إلي‪11‬ه فإم‪11‬ا أن‬
‫يوافقوا عليها لتضاف‪ ،‬أو يعت‪1‬ذرون عن قبوله‪1‬ا إن ك‪1‬انت دون المع‪11‬ايير ال‪1‬تي يل‪1‬تزمون به‪1‬ا (على ال‪1‬رغم من أنه‪1‬ا‬
‫معايير أقل صرامة من مكانز أخرى مثل ‪ PEAR‬المكنز الرسمي ألصناف ‪ PHP‬المعيارية)‪ ،‬ليس ه‪11‬ذا فحس‪11‬ب‪،‬‬
‫بل كانت هنالك لجنة تنتقي أفضل عشرة أعمال تمت إضافتها إلى الموق‪11‬ع في ك‪11‬ل ش‪11‬هر ليج‪11‬ري التص‪11‬ويت عليه‪11‬ا‬
‫طيلة أيام الشهر الذي يليه من قبل المبرمجين المنتس‪1‬بين للموق‪1‬ع الختي‪1‬ار أفض‪1‬لها‪ ،‬وق‪1‬د ك‪1‬ان الختي‪1‬ار ‪ArQuery‬‬
‫ومن ثم حلوله في المركز الثامن في شهر شباط ‪ /‬فبراير من عام ‪ 2006‬بمثابة مفاجئة س‪11‬عيدة عملت على تحوي‪11‬ل‬
‫فك‪1‬رة غض‪1‬ة طفولي‪1‬ة إلى مش‪1‬روع حقيقي أخ‪1‬ذ يس‪1‬تهلك ش‪1‬يئا فش‪1‬يئا معظم أوق‪1‬ات ف‪1‬راغي‪ .‬وهك‪1‬ذا ت‪1‬والت األفك‪1‬ار‬
‫واألعمال والجوائز‪ ،‬فأصبح هنالك ما يزيد عن ‪ 17‬صنفا نالت ‪ 7‬جوائز ‪ 4‬منها كانت للصدارة‪.‬‬

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

‫مع نهاية العام ‪ 2007‬وصل هذا المشروع مرحلة من النضج ًّ‬


‫وكما من المنتجات استدعت االنتقال به خطوة جديدة إلى األمام‬
‫نحو مزيد من االحتراف والمعيارية في عالم البرمجيات الح‪44‬رة المفتوحة المص‪44‬در‪ ،‬وهك‪44‬ذا انطلقنا بداية الع‪44‬ام ‪ 2008‬بالعمل‬
‫على جمع برامج المشروع المتفرقة في مكتبة واح‪44‬دة مس‪44‬تفيدين بش‪44‬كل عميق من المزايا األص‪44‬يلة للبرمجة الغرض‪44‬ية التوجه‬
‫التي بات اإلص‪44‬دار الخ‪44‬امس من لغة ‪ PHP‬يوفره‪44‬ا‪ ،‬حيث انصب اهتمامنا على تحس‪44‬ين ج‪44‬ودة ش‪44‬يفرتنا المص‪44‬درية وطرائقنا‬
‫الخوارزمية والتعليمات البرمجية التي كنا ننتقيها بعناية لخدمة هدف زيادة سرعة التنفيذ وخفض مس‪44‬احة ال‪44‬ذاكرة المس‪44‬تهلكة‪4،‬‬
‫وهي عملية ال تزال مستمرة حتى اآلن‪.‬‬

‫لم تقتصر نشاطات‪ 4‬االنطالقة الجديدة للمشروع على ذلك فحسب‪ ،‬بل تعدتها إلى طيف من الخدمات الداعمة المحيطة به والتي‬
‫تكمل بدورها صورته وتعزز مكانته ليقف على قدم المساواة بين غيره من البرمجيات الحرة المفتوحة المصدر كإضافة‪4‬‬
‫جديدة صغيرة لكنها تتبع ذات اإلجراءات والمعايير القياسية التي يتبعها الكبار من محترفي هذا القطاع من تقنية المعلومات‪،‬‬
‫فمن إدارة أفضل للشيفرة المصدرية باستخدام ‪ CVS‬حيث باتت تنشر اآلن على موقع ‪ ،sourceforge.net‬إلى وضع آلية‬
‫لضبط الجودة من خالل تطبيق عملية فحص مؤتمتة تختبر كافة‪ 4‬مرافق المكتبة عقب إجراء أي تعديل عليها وذلك قبل نشر‬
‫النسخة المعدلة من جديد وذلك باستخدام إطار عمل ‪ PHPUnit‬لبناء االختبارات المؤتمتة‪ ،‬هذا عدى عن إضافة توثيق‬
‫متكامل للشيفرة المصدرية بصيغة معيارية باالستفادة من برنامج ‪ phpDocumentor‬لتوثيق الشيفرة البرمجية بشكل شبه‬
‫آلي‪ ،‬كل ذلك والمزيد تم نشره في موقع المشروع على شبكة الويب‪.‬‬

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

‫مع بداية عام ‪ 2009‬اتخذ هذا المشروع بعدا جديدا حيث بدأ العمل على التطبيقات العملية التي تستفيد من‬
‫مجموعة الوظائف التي باتت تتيحها هذه المكتبة في بناء اإلضافات وتعديل ما هو موجود من برمجيات حرة‬
‫مفتوحة المصدر لتقدم دعما أفضل للغة العربية‪ .‬حيث أصبحت هذه المكتبة متوفرة بصيغة مالئمة إلطار عمل‬
‫‪ CakePHP‬ومكتبة ‪ PEAR‬مما ساهم في زيادة سهولة استخدامها وتطبيقها في مثل هذه البيئات‪ .‬كذلك تم‬
‫تطوير بعض اإلضافات التي تطبق مجموعة من وظائف وخدمات المشروع في كل من مدونة ‪Wordpress‬‬
‫ونظام ‪ Drupal‬إلدارة المحتوى‪ ،‬وجار العمل إلضافة المزيد‪ ،‬هذا عدى عن إضافة خاصة بالمتصفح ‪Firefox‬‬
‫و أداة ‪ TinyMCE‬لتنقيح النصوص والتي تعمل بمبدأ ما تراه هو ما ستحصل عليه وتستخدم في العديد من‬
‫تطبيقات الويب التفاعلية ‪ .‬المثير لالهتمام في مثل هذا التوجه أن معظم هذه النشاطات باتت تدار وتطور من قبل‬
‫طائفة من المبرمجين ممن هم أصدقاء للمشروع ومتابعين له‪.‬‬

‫وجاءت المشاركة في ماراثون البرمجة للتقنيين العرب والذي نظم في القاهرة ما بين ‪ 20‬و ‪ 23‬مايو ‪ /‬أيار‬
‫‪ 2009‬فرصة للقاء العديد‪ 1‬من المطورين والمبرمجين العرب أصحاب الخبرة من المهتمين بدعم اللغة العربية‬
‫على شبكة الويب‪ ،‬حيث تم العمل على دمج هذه المكتبة بتطبيقات جديدة مثل نظام ‪ Drupal‬إلدارة المحتوى‪ ،‬أو‬
‫تطوير بعض اإلضافات الموجودة أصال كتلك الخاصة بمدونة‪ Wordpress 1‬أو متصفح ‪ ،Firefox‬ليس هذا‬
‫فحسب‪ ،‬بل تم العمل على تطوير نواة المكتبة ذاتها وتحسينها بناء على خبرات ونصائح بعض المشاركين مما‬
‫انعكس إيجابا على جودتها وفعاليتها‪ ،‬كذلك انضم بعض المتحمسين إلى قائمة مطوري المكتبة ذاتها حيث قاموا‬
‫بإضافة وظائف جديدة أو عدلوا على وظائف سابقة وحسنوها‪ ،‬وانتهى بنا المطاف بفريق عمل مكون من تسعة‬
‫مطورين يعملون بجد إلطالق اإلصدار الثاني من هذه المكتبة قريبا‪ ،‬هذا عدى عن تقديم طيف واسع من‬
‫التطبيقات واإلضافات المبنية على وظائف ومزايا هذه المكتبة‪ .‬لمزيد من المعلومات حول هذا الحدث‪:‬‬

‫فعاليات اليوم األول‪http://www.arabtechies.net/node/70 :‬‬


‫فعاليات اليومين الثاني والثالث‪http://www.arabtechies.net/node/71 :‬‬

‫قصة جميلة‪ ،‬لكن ما الفائدة التي سيجنيها اآلخرون؟‬

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

‫يقوم صنف ‪ ArAutoSummary‬بعملية التلخيص اآللي للنص العربي‪ ،‬فكل ما عليك القيام به هو تمرير النص‬
‫الكامل إلى هذا الصنف إضافة إلى اإلشارة إلى عدد الجمل األقصى الذي تريده في الخرج‪ ،‬أو نسبة حجم‬
‫التلخيص إلى حجم النص الكامل‪ ،‬لتحصل بالنتيجة على التلخيص المنشود‪ .‬ليست هذه بالفكرة الجديدة‪ 1،‬فهي‬
‫موجودة منذ زمن في معالجات النصوص مثل ‪ ،MS-Word‬كما أنها متاحة كمنتج تجاري لتطبيقات الويب من‬
‫قبل شركة صخر ضمن حزمة السراج لتحليل النص العربي (تصنيف‪ ،‬تلخيص‪ ،‬كلمات مفتاحية‪ ،‬أعالم)‪ ،‬لكنها‬
‫المرة األولى التي يقدم فيها صنف مفتوح المصدر لمبرمجي ‪ PHP‬لتلخيص النص العربي‪.‬‬

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

‫أحد األصناف األخرى التي طورت في إطار مشروع ‪ PHP‬واللغة العربية هو الصنف ‪ ArSoundex‬المختص‬
‫بكشف التشابه اللفظي بين األسماء التي ال تشترك في ذات طريقة الكتابة‪ ،‬ففي البدء كانت اللغة‪ ،‬ومن ثم جاءت‬
‫الكتابة لترمز األصوات التي تقال باألشكال التي ترسم (أو تكتب)‪ ،‬وقامت كل أمة بصياغة أحرف كتابة لغتها بما‬
‫يتناسب واألصوات التي يطلقونها حين التحدث والكالم‪ ،‬لكن المشكلة تظهر حينما يراد كتابة اسم ما أو مصطلح‬
‫بلغة أجنبية تختلف عن لغته األم‪ ،‬فحينها قد ال تسعف أحرف اللغة المنقول إليها في التعبير عن اللفظ الحقيقي لتلك‬
‫الكلمة‪ .‬إن الكلمات التي تكتب خطأ بأكثر من تهجئة عادة ما تشكل كابوسا حقيقيا لمصممي قواعد البيانات‪ ،‬ومنها‬
‫األسماء على سبيل المثال‪ ،‬خصوصا تلك األعجمية منها والتي تعود بأصولها إلى التركية أو األرمنية أو الكردية‬
‫أو سواها من مصادر ثقافات أخرى‪.‬‬
‫لحل هذه المشكلة برزت الحاجة إلى خوارزمية تستطيع العثور على األسماء أو المصطلحات ذات األصوات‬
‫المتشابهة‪ ،‬إن مثل هكذا فئة من الخوارزميات تدعى ‪ ،SoundExes‬حيث تقوم بتحويل كلمة ممررة إليها (كإسم‬
‫شخص على سبيل المثال) إلى سلسلة نصية تحدد مجموعة الكلمات التي تقاربها لفظا‪ .‬تقوم الفكرة األساسية لهذه‬
‫الفئة من الخوارزميات على تصنيف األحرف في مجموعات بحسب طريقة لفظها‪ ،‬وتمتلك لغة ‪ PHP‬تابعا خاصا‬
‫بها إلجراء تلك المعالجة ويدعى ‪ ،Soundex‬لكن كما هو واضح فإنه مخصص للكلمات المكتوبة باللغة‬
‫اإلنجليزية وعديم الفائدة تماما في حالة اللغة العربية‪ ،‬ما قمنا به في هذا المشروع هو تطوير صنف مخصص‬
‫للغة العربية‪ ،‬فإن أنت أدخلت أي من األسماء التالية (كلينتون‪ ،‬كلينتن‪ 1،‬كلينطون‪ ،‬كلنتن‪ ،‬كلنتون‪ ،‬كالينتون‪)1‬‬
‫لحصلت على الدوام على الرمز ‪ K453‬كقيمة ‪ Soundex‬لهذه الكلمات‪ ،‬في حين أن اسم مثل "كلينزمان" له‬
‫قيمة ‪ Soundex‬مختلفة وهي ‪.K452‬‬

‫هنالك أيضا الصنفين ‪ ArTransliteration‬و ‪ EnTransliteration‬والذين يقومان بعملية توليد المكافئ‬


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

‫ليس لهذا النوع من المسائل وجود فعلي حينما تتشارك اللغتان المراد التحويل فيما بينهما ذات األبجدية (كما في‬
‫معظم اللغات األوروبية)‪ ،‬لكن الحال ليست كذلك بين اللغة العربية واإلنجليزية‪ ،‬لذا طورنا صنف‬
‫‪ EnTransliteration‬لتحويل األسماء العربية إلى مكافئاتها اللفظية لكن باستخدام أحرف إنجليزية (فمثال "نِزار‬
‫قَبَّانِي" تصبح ‪ ،Nizar Qab'bani‬و " ُغوطَة ِد َمشق" تصبح ‪ ،)Ghutah Dimashq‬وكذلك الصنف‬
‫‪ ArTransliteration‬والذي يقوم بالدور المعاكس من خالل تحويل األسماء والكلمات اإلنجليزية إلى ما يكافئها‬
‫لفظا بالعربية (فمثال ‪ Internet‬تصبح "إنترنت"‪ ،‬و ‪ Arizona‬تصبح "أريزونه")‪.‬‬

‫دعونا اآلن نستعرض معا في عجالة بعض من األصناف التي تم تطويرها ضمن إطار ذات المشروع‪ ،‬فهنالك‬
‫الصنفين ‪ ArDate‬و ‪ ArMktime‬للتحويل فيما بين صيغة التأريخ الهجري والميالدي إضافة إلى وظائف‬
‫إظهار التأريخ باألسماء العربية لألشهر واأليام‪.‬‬

‫أما الصنف ‪ ArNumbers‬فيقوم بتحويل رقم صحيح معطى إلى ذات الرقم لكن كتابة باللغة العربية‪ ،‬أو ما‬
‫اصطلح على تسميته عادة بالتفقيط‪ ،‬وهي وظيفة كثيرة االستخدام في التطبيقات المصرفية أو التي تجري بها‬
‫تعامالت مالية مثل الفواتير‪ ،‬حيث تراعي هذه المكتبة عالمة إعراب المعدود‪ 1‬سواء كانت بالرفع أم النصب أم‬
‫الجر‪ ،‬إضافة إلى حالة المعدود سواء كان مذكرا أم مؤنثا‪.‬‬

‫بالحديث عن التذكير والتأنيث تجدر اإلشارة إلى الصنف ‪ ArGender‬والذي يقوم بتمييز الكلمات العربية المؤنثة‬
‫تأنيثا لفظيا‪ ،‬مثل الكلمات التي تنتهي بالتاء المربوطة أو المفتوحة‪ ،‬أو تلك التي تنتهي باأللف المقصورة أو األلف‬
‫والهمزة‪ .‬يمكن االستفادة من هذا الصنف على سبيل المثال في مساعدة الصنف الخاص بالتفقيط للحصول على‬
‫خرج أصح لغويا‪.‬‬
‫هنالك أيضا مجموعة من األصناف المفيدة ألنظمة البحث عن المعلومات واسترجاعها‪ ،‬منها الصنف‬
‫‪ ArWordTag‬الذي يحدد التعابير اإلسمية أو تلك التي تتضمن أرقاما أو تواريخ ضمن النص المعطى‪ ،‬وهي‬
‫عادة المقاطع األكثر أهمية من ذلك النص والتي تتضمن أكبر قدر من المعلومات فيه‪ .‬يتم تحديد التعابير اإلسمية‬
‫باستخدام بعض القواعد اللغوية‪ ،‬فاألسماء على سبيل المثال هي التي تعرف بأل التعريف أو التي تتلو أحرف‬
‫الجر‪ .‬هنالك صنف آخر مفيد ألنظمة استرجاع البيانات هو الصنف ‪ ArIdentifier‬الذي يستخرج النصوص‬
‫العربية الموجودة ضمن وثيقة متعددة اللغات تستخدم مجموعة المحارف العالمية الموحدة ‪ UTF-8‬في ترميزها‪.‬‬
‫كذلك فقد طورنا الصنف ‪ ArCharsetD‬ليقوم بمهمة التعرف على مجموعة المحارف المستخدمة في ترميز‬
‫وثيقة عربية ما من خالل نموذج إحصائي يقارن ما بين أكثر الرموز تكرارا وما يجب أن يكافئها من حروف‬
‫عربية بحيث يتم إنتقاء الترميز الذي يحقق أكبر مطابقة ما بين هذين العاملين‪ .‬أما إن أردت التحويل فيما بين‬
‫مجموعات المحارف العربية المختلفة التي تستخدم عادة في مواقع الويب العربية وهي ‪ Windows-1256‬و‬
‫‪ UTF-8‬مع وجود القليل من المواقع التي تعتمد مجموعة المحارف ‪ ،ISO 8859-6‬في تلك الحالة يمكنك‬
‫استخدام الصنف ‪ ArCharsetC‬إلنجاز عملية التحويل هذه‪.‬‬

‫من جهة أخرى تمتلك لغة ‪ PHP‬مكتبة مخصصة لتوليد ملفات ‪ PDF‬الديناميكية‪ 1،‬لكنها لألسف ال تدعم اللغة‬
‫العربية حتى اآلن‪ ،‬لذا توجهنا ناحية استخدام مكتبة مطورة من قبل طرف ثالث تدعى ‪ UFPDF‬تستطيع التعامل‬
‫مع مجموعة المحارف العالمية الموحدة ‪ ،UTF-8‬وهو ما سيمكننا ضمنا من التعامل مع النصوص العربية‪ .‬لكن‬
‫المشكلة ظهرت مع أول تجربة لنا حين ظهر النص العربي بأحرف مفصولة عن بعضها البعض‪.‬‬

‫ذات المشكلة كانت تظهر أيضا مع مكتبات ‪ PHP‬األخرى التي تنشئ ملفات ‪ SWF Flash‬ديناميكية أو تتعامل‬
‫مع النصوص ضمن بيئة ‪ VRML‬للواقع االفتراضي أو تكتب على ملفات الصور باستخدام مكتبة ‪ ،GD‬فجميع‬
‫تلك المكتبات تتعامل مع األحرف العربية بشكل مصمت دون أي معالجة للسياق‪ ،‬حيث أن تلك المعالجة غير‬
‫معروفة أو مستخدمة في حالة اللغة اإلنجليزية‪ ،‬فأشكال األحرف تبقى على حالها بغض النظر عما يسبقها أو‬
‫يتلوها‪ ،‬وهذه ليست حال اللغة العربية‪ ،‬لذا قمنا بتطوير الصنف ‪ ArGlyphs‬والذي يجري معالجة أولية على‬
‫النص العربي المدخل إليه بحيث يعطي كخرج له سلسلة من رموز مجموعة المحارف العالمية الموحدة الموافقة‬
‫تماما لألشكال التي يجب أن تظهر عليها تلك الحروف بحسب مكانها من سياق الكلمة‪ ،‬وبذا أصبح ممكنا‬
‫الحصول على نص عربي سليم المظهر مع أي من تلك المكتبات السابقة الذكر‪.‬‬

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

‫ما هي الخطوة التالية؟‬

‫كل صباح أستيقظ ألخاطب نفسي قائال‪ :‬حسنا‪ ،‬ماذا بعد؟ لكنني دوما ما أجد األفكار الجديدة‪ 1‬في هذه األرض‬
‫الخصبة العذراء‪ ،‬في ذات الوقت فإن مهمة تسجيل وإضافة هذا المشروع إلى مكتبة ‪ PEAR‬المعيارية الموحدة‬
‫لتلبية احتياجات اللغة العربية هي إحدى المهام التي تقبع على رأس األولويات‪ ،‬وذلك رغبة في استكشاف آفاق‬
‫جديدة من االندماج في عالم تطوير البرمجيات الحرة المفتوحة المصدر ولعب دور إيجابي فاعل فيه‪ ،‬من يدري‬
‫ربما نتحدث بعد عام عن تطوير مكتبة ‪ PECL‬أيضا!‬

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

‫في الختام أدعوكم لزيارة موقع المشروع على شبكة الويب على العنوان ‪ http://www.ar-php.org‬لإلطالع‬
‫على ما يوفره من خدمات وأمثلة برمجية وما يرتبط بها من توثيق‪ ،‬أما من يجدون في أنفسهم الهمة والخبرة على‬
‫المساهمة في هذا المشروع فعليهم بصفحة المشاركة (كيف تساهم) حيث سيجدون العديد‪ 1‬من األفكار واألساليب‬
‫التي يستطيعون من خاللها أن يكونوا أكثر إيجابية تجاه هذا المشروع وتجاه مجتمع الويب العربي‪:‬‬

‫‪http://www.ar-php.org/participate_php_arabic.html‬‬

You might also like