المتابعون للمدونة

الجمعة، 19 يناير 2018

عشرون عاما من البرمجة 2


عشرون عاما من البرمجة
 (2/4)


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

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

هلا سألت القوم يا ابنة مالك
تعطينا الرموز:
/./. //./. /./ /. // /.//.
حيث الشرطة تدل على حرف متحرك والنقطة تدل على حرف ساكن.
ولم يعد باقيا إلا تحليل هذه الرموز لنحصل على التفعيلات:
مُسْتَفْعِلُنْ مُسْتَفْعِلُنْ مُتَفَاعِلُنْ


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

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

كانت خوارزميتي تجرب تقطيع الرموز إلى أطوال مختلفة (أربعة حروف أو خمسة أو ستة أو سبعة) ومقارنتها برموز التفعيلات للوصول إلى التتابع الصحيح للتفعيلات.. ولكني تعاملت مع هذا التقطيع بصورة خطية وافترضت أنني أتعامل مع مصفوفة مكونة من 4 خانات، بينما اكتشف محمد أن المفروض أن تكون هناك شجرة احتمالات للأطوال المختلفة، كل جذر في هذه الشجرة تخرج منه 4 فروع لدراسة كل التفعيلات المحتملة في كل موضع، وأننا لهذا نحتاج إلى مصفوفة عدد خاناتها 4 + 16 + 64 خانة للتعامل مع شطرة واحدة تتكون من 3 تفعيلات!


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

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


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


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

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


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

وكان وسيط التخزين حينها هو القرص المرن Floppy Desk، وحينما أردت أن أطبع بعض اللقطات من البرنامج لأضعها في التقرير، اكتشفت أن القرص المرن تلف أثناء انتقالي من دمياط إلى القاهرة، واضطررت أن أركب القطار للعودة إلى دمياط ذهابا وعودة في يوم واحد وهو أمر يضيع 10 ساعات مرهقة في المواصلات، للحصول على الكود مرة أخرى، وهذه المرة اشتريت عدة أقراص مرنة ونسخته عليها كلها :) وظللت أحافظ على البرنامج بعدها على 10 أقراص مرنة إلى أن نسخته إلى حاوسبي وعلى أقراص ضوئية فيما بعد!

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


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

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


ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر