:: كل المقالات ::

Tue, 13 Dec 2016

الشعراء و المبرمجون


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

1.0-بعض الشعراء بديهيون يقولون الشعر ارتجالا او يسارعون بكتابته عندما تفيض مشاعرهم او تتقد اذهانهم بافكار جديدة .. و هم يعتبرون هذا الشعر افضل انواع الشعر لانه بعيد عن التكلف و التصنع و التخطيط و التفكير الممل.
1.1- بعض المبرمجين بديهي ما ان تضع امامه شاشة حاسب و محرر نصوص الا يبدأ بالبرمجة و كتابة الاكواد فهو لا يحب ان يضيع كثيرا من وقته للتخطيط و التفكير بل يتبنى منهج الخطأ و التجريب فهو يبدأ ، و يعالج المشاكل عندما تظهر فلا جدوى كثيرة من التخطيط لان المشاكل لا تظهر الا عند التطبيق ..
1.2- بعض الشعراء متكلف يخطط لقصيدته طويلا و يجمع افكاره ثم يستغرق وقتا طويلا للتخطيط و التنظيم لكل بيت شعر سيقوله و كل كلمة سيقولها و يعيد كتابة البيت مرات و مرات و يهتم بالديباجة كثيرا فتطول مدة كتابة القصيدة الى شهور و ربما سنين مثل قصائد الحوليات و مع ذلك لا تسلم القصيدة من اسقاط بعض الابيات في النسخ النهائية..
1.3- بعض المبرمجين متكلف فهو لا يبدأ البرمجة الا بعد ان يعمل تقريرا بكل المتطلبات و طريقة سير العمل Workflow و يخطط مليا لتطوير البرنامج مهما كان بديهيا و سهلا و من ثم يبدأ مرحلة النمذجة باستخدام UML و ينتج مخططات مختلفة باستخدام هذه اللغة ويدرس كل السيناريوهات المحتملة ثم يبدأ البرمجة بعد توفير كل الادوات التطويرية و ربما شراء بعض التراخيص لاستخدامه المنتجات الاحتكارية مع توافر البديل الحر لها . و لكن في النهاية هو راض عن نفسه لانه يعتبر مرحلة التخطيط و الهندسة جزء لا يتجزأ من عملية البرمجة و انها ستعود بالفائدة في سهولة الصيانة و جودة الاكواد البرمجية …
2.0- بعض الشعراء كلاسيكيون يحبون ان يتمسكوا بالاصول و بالارث التليد و ربما يحبون التجديد و لكن بشرط ان يكون ضمن الحدود المتوارثة و لا يخترق تلك الحدود المقدسة مثل العامودية في القصيدة و شروط قوافيها..
2.1- بعض المبرمجين كلاسيكيون يحبون ان يتمسكوا بالمفاهيم و التقنيات القديمة و ربما يحاربون التجديد ان كان يتعارض مع مبادئهم التي ورثوها و كبروا عليها ..
المبرمج الكلاسيكي يفضل التمسك بلغاته القديمة لانها اكثر نضوجا بنظره و اقوى و ستبقى الاقوى من اللغات الحديثة فهو يحب Lisp و C..
و يعتقد ان اللغات الجديدة مجرد فقاعات اعلامية فالذي تستطيع PHP فعله على الويب تستطيع سي ان تفعله …
المبرمج الكلاسيكي يحب التمسك بعاداته التي اصبحت جزءا من ثقافته فهو مثلا يفضل البرمجة باستخدام Emacs او Vim او اي محرر بسيط اخر ..وهو ايضا يعتبر البرمجة المرئية لعب اطفال ..
2.2- بعض الشعراء حداثويون (مولدون) يحبون التجديد و يحبون الابتكار و ان كان على حساب الاصول الموروثة و القيم المعروفة و الطرق المرسومة ، و ربما يسخرون من الكلاسيكيين ..
قل لمن يبكي برسم درس ( واقفا ) ما ضر لو كان جلس؟ (ابو نواس)
يحبون ان يجددوا على حساب المضمون و القالب و ان كان التجديد في المضمون مرغوب فالتجديد في القالب غير مرغوب خاصة في بداياته و يحتاج الى اناس يقفون في وجه المدفع يتلقون انتقادات الكلاسيكيين و ازدراء الرأي العام ..
2.3- بعض المبرمجين حداثويون يحبون ان الا يتقوقعوا على انفسهم و على موروثاتهم البالية ، و مستعدون للوقوف و الاعتراض و نشر ثقافتهم و مبادئهم الجديدة فهم تواقون لاختراع و تبني التقنية الحديثة فهم لا يستخدمون Emacs فقط لان ستالمان يعتبره برنامجا مقدسا بل يسخرون منه فهم ابناء الـ NetBeans و الـ Eclipse و هم يسخرون من استخدام اللغات الكبيرة للانترنت و يفرحون باستخدام البي اتش بي و روبي !. و يحبون جافا و دوت نيت فسي و غيرها لغات قديمة يجب التخلص من لعنتها، فمن قال ان Lisp وPerl لغات الهكر الحقيقي يا غراهام؟
المبرمج الحداثوي يحب ان يجعل اللغة تفعل له كل شي مثل ادارة الموارد فهو ديناميكي و يريدها ديناميكية و لا يحب ان يوسخ يديه بهذه الامور بل لا بأس بأن تكون اللغة مثقلة بأطنان من الدوال الجاهزة مثل PHP …
3.0- بعض الشعراء يحب الكتابة في البحور الطويلة مثل البسيط و الطويل و غيرها فهو يحتاج كلمات كثيرة لكل بيت شعر و لكنه يفضل هذا بحجة ان الابيات الطويلة تعطي مساحة اوسع للتعبير و تمثيل الصور المعقدة .. فالابيات الشعرية تبلغ ذروتها في مثل هذا البيت :
” يريدون ان يخفـــوا النواقر بيننــا — و قد صاحت الاضغان في الحدق المرض ”
3.1- بعض المبرمجين يحب التطويل في البرمجة فهو مثلا لبناء برنامج بسيط يأخذ قيمة من المستخدم و يرجع قيمة اخرى، يقوم بكتابة كلاس كامل و يصنع ميثود رئيسي و يختار اسماء طويلة و واضحة لكل كلاس و ميثود و متغير و ربما لا يكتفي بهذا بل يغلف البرنامج بواجهة رسومية فيصبح البرنامج البسيط يحتوي على عشرات الاسطر البرمجية و ربما يصل الى فوق المائة في لغات مثل جافا و Swing. و لكنه يفضل هذا بحجة ان التفصيل الممل يسهل على المستخدم النهائي و ايضا يسهل على المبرمج في صيانة البرنامج .
3.2- بعض الشعراء يحب الكتابة في البحور القصيرة مثل الهزج و غيره و يعتقد ان غاية البلاغة في الاختصار و ان الاختصار لا يعني التقييد و لديه ثقة بنفسه اذ يستطيع ان يرسم اعقد الصور الخيالية باستخدام اقل عدد ممكن من المفردات ، و يرى ان كل كلمة يمكن الاستغناء عنها هي مجرد حشو .. فهو يرى ان الابيات الشعرية يجب ان تكون بهذا الشكل و هذه الرشاقة:
” يا دين قلبك من بارق ينير و يخبو ” مطلع احدى روائع الشريف الرضي
3.3- بعض المبرمجين يحب الاختصار في البرمجة فهو يفضل اللغات السريعة و لا يهتم بالتفاصيل المملة فهو لكتابة برنامج بسيط يأخذ قيمة من المستخدم و يرجع قيمة، يشرع مباشرة باستلام قيمة المتغير و يرجع القيمة بدون كلاسات و لا ميثودز و لا واجهات رسومية و باقل عدد ممكن من الاسطر البرمجية و لا تراه يعير اهتماما في اختيار اسماء متغيراته ودواله فهي قصيرة قد تأخذ اشكالا مثل foo , bar, var , tx…, و ذلك بحجة ان الاشياء البسيطة يجب ان تبقى بسيطة و قصيرة و ان التطويل تعقيد و تصعيب لعملية الصيانة في منتهى المطاف و ضياع للوقت و الجهد ..
4.0- بعض الشعراء يحبون البساطة . البساطة في المعنى و البساطة في اللفظ و البساطة في التركيب فالبساطة جمال و هي السهل الممتنع وكما قالوا البساطة منتهى التعقيد. فهذا البيت مع سهولته و بساطته الا انه ممتنع و غاية في البراعة و البلاغة :
و ربما و الهوى ضلــة ترى العين ما لا تنال اليد
4.1- بعض المبرمجين يحبون البساطة فهم يبحثون عن الحلول الرشيقة و يجيدون الاختصار و يبتعدون عن البهرجة و استعراض العضلات و التطويل و التعقيد فهم بدلا من ان يستخدموا برنامجا مساعدا لرسم الواجهة الرسومية ينتج عشرات الاسطر الاضافية يفتحون المفكرة و يكتبون بضع اسطر تفي بالغرض كله ( ايضا هذه النقطة تنطبق على برامج تصميم مواقع الويب)..
4.2- بعض الشعراء يحبون التعقيد فتراه يختار الغريب من الالفاظ و يعقد التراكيب فهو يقدم و يؤخر و في النهاية يفلسف المعنى فهو يستمتع بشعور الانجاز و يفرح عندما ترتسم على وجوه الحضور و القراء ملامح الاعجاب و الاستغراب و الاقرار بصعوبة الاتيان بمثل هذا الكلام .. و النماذج كثيرة مثل ” لزوم ما لا يلزم ” للمعري .
4.3- بعض المبرمجين يحب التعقيد فهو يحب ان يبهر زملاءه بصعوبة قراءة اكواده فهذا يجعلهم مبتدئين امامه لا يملكون حتى القدرة على قراءة البرامج فما بالك بكتابتها .. ربما يتسطيع ان يحل المشكلة بشكل واضح و لكنه يحب ان يبحث عن طرق اصعب ! بدلا من ان اكتب دائرة تكرار بسيطة هنا لما لا اكتبها بطريقة العودية فيحتاج اصحابي ان يقضوا بعض الوقت حتى يفهموا ماذا تفعل هذه الدالة ؟!..
Obfuscation ( الغموض) و ان كان له بعض المزايا الا ان الكثير يتعمده فقط من باب استعراض العضلات و بيان القدرات الخرافية فهو يحشر به في برامجه كي تبدو معقدة و تحتاج لخبير لكتابتها ..
- للمزيد في هذا الجانب انصح بالقراءة عن المصطلح السالف و مصطلح OverKill
5.0- الشعراء ينتمون لمدارس مختلفة كل منها له توجهه الرئيسي و المحوري فالرومانسيون بتوجههم العاطفي يجعلون من المأساة و الالم و مناجاة الطبيعة و المشاعر و العاطفة الذاتية محورا للشعر و مدارا يدور حوله و في المقابل نرى الرمزيين يجعلون من الترميز و الكنايات و الخيالات و الصور المعقدة و التوريات محورا للشعر و سمة اساسية و اما الكلاسيكيون فهم لا يزالون متمسكون بجزالة الالفاظ و وحدة الابيات بدلا عن وحدة القصيدة و سيبقون يحتفظون بالملامح الاساسية للقصائد الموروثة..
5.1- المبرمجون ينتمون لمدارس مختلفة كل منها له توجهه الرئيسي و نظرته المختلفة للامور و لطرق حل المشاكل فالكائنيون يرون الوجود كله على انه اشياء لها سمات و افعال و من هذا المبدأ ينطلقون لحل المشاكل البرمجية . الوظيفيون من جهة اخرى يرون ان المشاكل يمكن التعبير عنها على شكل دوال رياضية و من هذا المنطلق يتتبعون الحل . الاجرائيون ايضا يحبون التسلسل المنطقي لحل المشكلة و تجزيء المشكلة الكبيرة الى اوامر صغيرة تتوصل في النهاية الى الحل المرجو . الحداثويون يجعلون من الاحداث محورا لبرامجهم فهم لا يفرضون شيئا لتسيير عملية البرنامج بل يزرعون المتنصتات بهدوء و بناء على كل حدث يتخذون الاجراء المناسب ، و اصحاب البرمجة الاعلانية يتخذون منهجا مغايرا كليا فهم يصفون ما على البرنامج تحقيقه بدلا من ان يخبروه كيف يحققه !..
6.0- بعض الشعراء يحبون حفظ قصائدهم و توثيقها و ذلك بكتابة المقدمات للقصائد و شرح المناسبة و تاريخ الكتابة و بعض المعلومات الاخرى لكي يكون القارئ على بينة اكبر عن خلفية القصيدة و ربما في بعض الاحيان يشرحون بعض ابياتها او يكلفون غيرهم بهذه المهمة ..
6.1- بعض المبرمجين يحبون توثيق برامجهم سواء توثيقا خارجيا منفصلا او توثيقا مضمنا داخل البرامج و لا يتوانون عن شرح كل سطر برمجي لتسهيل عملية الصيانة للمبرمجين الاخرين و تسهيل عملية الاستخدام للمستخدمين النهائيين.
6.2- بعض الشعراء لا يهتمون بتوثيق قصائدهم و لا يكترثون حتى بمسألة جمعها و حفظها من الضياع و يتركون هذه المهمة للقضاء و القدر ان يسخر لهم راويا يتكفل بعملية البحث و التجميع و التوثيق و التمحيص و التدقيق و من ثم يخرجها للناس و المجتمع.
6.3- بعض المبرمجين لا يهتم بعملية توثيق البرامج فهو لا يكترث ان يضمن توثيقا و ان كان فقط للاجزاء الصعبة من برنامجه و يترك المبرمجين الاخرين في متاهة فهم البرنامج وآلية عمله ما يجعلهم عاجزين عن تطوير البرنامج او اصلاح اخطائه. اما التوثيق الخارجي فهو لا يعرف ما معنى التوثيق الخارجي اصلا …
7.0- بعض الشعراء لا يحبون ان يعرضوا قصائدهم للنقاد و زملائهم الشعراء قبل اعتماد النسخة النهائية ، لكي يستفيدوا من ارائهم و اقتراحاتهم و تعديلاتهم ..
7.1- بعض المبرمجين لا يحبون ان يكتبوا اختبارات Unit Tests لبرامجهم فضلا عن ان يبدؤوا برامجهم باختبارات Test Driven Development فهم سيعرضون برنامجهم للاستخدام النهائي سواء نجح البرنامج في الاختبارات كلها او لم ينجح .

و في النهاية صدق الله العظيم في قوله تعالى :
(وَالشُّعَرَاء يَتَّبِعُهُمُ الْغَاوُونَ أَلَمْ تَرَ أَنَّهُمْ فِي كُلِّ وَادٍ يَهِيمُونَ وَأَنَّهُمْ يَقُولُونَ مَا لَا يَفْعَلُونَ إِلا الَّذِينَ آمَنُوا وَعَمِلُوا الصَّالِحَاتِ وَذَكَرُوا اللَّهَ كَثِيرًا وَانتَصَرُوا مِنْ بَعْدِ مَا ظُلِمُوا وَسَيَعْلَمُ الَّذِينَ ظَلَمُوا أَيَّ مُنقَلَبٍ يَنقَلِبُونَ)