السلام عليكم ورحمة الله،
تطرقنا في المرة السابقة إلى أهمية التوجيه الصارم في المشاريع الكبيرة، وكيف أنه يجعل المنتج النهائي متجانساً مع نفسه. وقد ضربتُ مثالاً لا بدّ أنه لم يساعد أبداً في زيادة شعبيتي بين قرّائي وزملائي المبرمجين. لذا أردتُ الثرثرة اليوم والحديث عن بعض الظواهر المعاصرة التي أرجو أن تبيّن لكم أني لا "أهرف" تماماً هنا. تعالوا معي لنستمع لقصتين ظريفتين من عالم البرمجة والرسوميات.
ضيفنا الأول اليوم هو لغة سي بلس بلس العتيدة. لغة ظهرت عام ١٩٨٥م وأخذت مكانتها في تطوير الألعاب بعد ما لا يقل عن العقد من الزمن. مطوّر اللغة السيد بيارن ستروسترب، وقد وضع السيد بيارن عدة قواعد صارمة لمزايا اللغة العديدة. أهمها أن المزايا التي لا يستخدمها المبرمج يجب ألا تضيف أية كلفة على البرنامج الناتج (بمعنى آخر، كأن هذه المزايا ليست موجودة أصلاً). ولعل أشهر هذه المزايا القوالب (templates) ومعلومات الأنواع أثناء زمن التشغيل (run-time type information). قاعدة ممتازة هي، فهي تسمح بتطوير اللغة دون جعل المزايا الجديدة تؤثر على أداء الكود المكتوب للإصدارات السابقة من اللغة. وهذا أمر مهم، لأن الكثير من الشركات (وخاصة الكبرى منها كالبنوك والمصانع) لا تحب أن تُفاجأ بتصرفات غير متوقعة في برامجها كلما تمّت ترجمتها بالمترجم الجديد للغة.
ويشهد التاريخ المعاصر بأن مكتبات كود لغة سي بلس بلس (وسي البحتة أيضاً) من أطول الكودات عمراً وثباتاً. يمكنك بسهولة أن تسحب كود مكتبة ما منذ ١٥ سنة وتترجمه بأحدث مترجم سي بلس بلس، وستجد أن الأمور بخير طالما كان كاتب الكود ملتزماً بالمعايير.
لكن تأتينا نقطة انعطاف منذ حوالي ٦ أو ٧ سنوات، بدأت فيها أصوات احتجاج تعلو. لفترة، عانت اللغة من جمود تام من جهة تطوير مزايا جديدة لها. ثم ظهرت حزمة مزايا سي بلس بلس ١١ (الرقم ١١ أعتقد نسبة للعام ٢٠١١)، والتي كانت رائعة بالفعل وعالجت الكثير من الإزعاجات التي عُرفت عن اللغة حتى ذاك الوقت. ثم بعد هذا الكسر للجمود بدأت تنهال التطويرات الدورية مثل سي بلس بلس ١٤ ثم ١٧ ثم ٢٠. ربما من أبرز الاحتجاجات هو سرعة تطوّر اللغة، حيث يصعب اللحاق بالإضافات الجديدة خلال ٣ سنوات فقط، لا سيما للغة برمجة لها إرث طويل تجرّه معها. ليس السبب هذا فحسب، بل لم يعد أحد يعرف من أي أساس هذه المزايا الجديدة تأتي.. جلّها مزايا جديدة غريبة لم يطالب بها أحد (ولم يجد أحد الوقت حتى للإحساس بحاجتها في خضم التطويرات المستمرة).
حسناً، إلى الآن الكلام مؤسف لكنه عادي ولا يوجد ما يربط بينه وبين فكرة هذه التدوينة. خذ عندك هذه الملاحظة إذن... انظر للصور التذكارية الموجودة على موقع هيئة معايير لغة سي بلس بلس. لديهم على موقع الهيئة عدة صور تُظهِر جميع الأعضاء كل بضعة سنوات. ستجد أن عدد الأشخاص بالصور لا يتوقف عن الازدياد حتى أنهم تحولوا إلى بحر من الرؤوس الذي لا تستطيع أن تميّز أوله من آخره. اُنظر إلى هذا العدد وأخبرني يا سيدي الكريم كيف يمكن أن يجتمع كل هؤلاء للاتفاق على إضافة ميزة جديدة للغة! بصراحة الموضوع أضحى سخافة واستهبال، ومهما كان السيد بيارن صارماً، فلن يجد الوقت الكافي لمراجعة وتشذيب كل المقترحات من هذه ال.. ال.. الأمة! ويمكنك سيدي الكريم رسم مخطط بياني يربط بين عدد أعضاء الهيئة وعدد أصوات الاحتجاج عبر السنين. ستجد علاقة خطية متزايدة بلا شك.
أعتقد بعد كل هذا الكلام أني لم آتِ بشيء جديد، فمعروف أن كثرة الطباخين تفسد الطعام. المشكلة (كما قلتُ بالتدوينة السابقة) أن هذه الكثرة هي جزء من عقلية مستحدثة تظن أن هذا هو الانفتاح الذي يعرّف الإنسان الحديث المتطوّر. وكلّ من يعمل منعزلاً هو إنسان منغلق الفكر ولا يُستبعَد أن يكون بذرة إرهابي.
المهم يا سيدي أن نتاج هذا التخبيص في لغة سي بلس بلس التي لطالما حكَمت عالم برمجة النظم والأداء السريع، هو إعطاء فرصة لظهور لغات وليدة لا يستطيع مطوروها تعريفها سوى من خلال ميزات ناقصة في سي بلس بلس. وتأتي حسابات تويتر لتقحم هذه اللغات في حلوق المتابعين، ونجد الإعجابات والإطراءات والتبجيلات، وكأن هذه اللغات هي حل مشكلة القرن! ربما أبرز الأمثلة لغة الصدأ (Rust) وهوسها المَرَضي بسلامة الوصول للذاكرة.
دعونا الآن من لغات البرمجة، ولننتقل إلى الضيف الثاني اليوم: واجهات برمجة الرسوميات. دايركت إكس وأوبن جي إل. الأبيض والأسود في رمز التاو. حتى وإن تنكر أوبن جي إل بزيّ جديد يسميه فولكان (Vulkan).. لكننا أذكياء ولمّاحين ونعرف حقيقته. من المعروف أن دايركت إكس يقبع تحت ��لطة مايكروسوفت، تطوّره وتضع معاييره بنفسها. بالمقابل أوبن جي إل وفولكان هما تحت هيئة كرونوس (Khronos) التي تضمّ أسماء كثيرة من شركات وأفراد. هه.. هل ترون الرابط معي؟
تعالوا معي لننظر وراء الكواليس إلى الطريقة التي تضاف بها المزايا إلى دايركت إكس مقارنة مع فولكان. مع مايكروسوفت، يأتي المقترح لميزة جديدة من مصدرٍ ما.. قد يكون نتاج تجميع لطلبات المطورين، أو تقدمة من شركة تصنيع معالج رسوميات، أو فكرة داخلية من فريق دايركت إكس نفسه.. لا يهم.. المهم لدينا مقترح. يؤخذ هذا المقترح وتتم دراسته وتشكيله ليظهر بأبسط شكل دون إخلاله، ويُدرس بحيث يتكامل مع باقي المزايا الموجودة سابقاً. ثم تتم إدارة المقترح على الجهات المعنية بدعمه في معالجاتها الرسومية، للتأكد من صلاحيته وإمكانية دعمه. وطبعاً قد تجري تعديلات في هذه الفترة لمراعاة طلبات خاصة لهذه الجهات، طالما أن هذه الطلبات لا تضر أيضاً بالجهات الأخرى ولا تضحي بوضوح وسهولة استخدام هذه الميزة من قبل المطورين. ويبقى ‐ركّزوا معي- فريق دايركت إكس هو الحَكَم النهائي في اللعبة. هذا الفريق يهمّه الحفاظ على النظام الصارم الذي اعتاد عليه زبائنهم وارتاحوا له وفهموه.
لننتقل إلى ما وراء كواليس المسرح الثاني. مسرح فولكان أو مجموعة كرونوس على وجه الدقة. لو أزحنا باب هذه الغرفة الخلفية قليلاً ونظرنا بعين واحدة خلال الشق الضيق، لرأينا رجلين، ربما ثلاثة، يتهامسون فيما بينهم ثم يصافحون الأيادي. هاهم يتجهون إلى الباب. فلنهرب بسرعة لنأخذ مقعدنا بين المراقبين ونتظاهر بأننا لم نفعل شيئاً. تسألون من هم هؤلاء المراقبون الذين نجلس بينهم؟ آه نسيت أن أخبركم. أهلاً بكم في نظام كرونوس، نظام المحسوبيات الذي يصنفك حسب حجمك وحجم واسطتك (وربما نصف قطر فتحة فمك) إلى عضو مراقب، أو عضو مصوّت أو عضو بكامل المزايا (الصفوة). تماماً كما هو الوضع مع أي محفل ماسوني يحترم نفسه. وستجد هنا دوائر داخلية وتحالفات ولوبيات هدفها السيطرة والسيطرة والمزيد من السيطرة.
تهوي المطرقة على الطاولة المستديرة لتفتتح جلسة اقتراح المزايا. ويبدأ أحد الأعضاء بالتحدث عارضاً مقترحه.. وبالنظر إلى وجوه بقية الجالسين على الطاولة، منهم المؤيد ومنهم المستاء ومنهم من لا يأبه بالموضوع أصلاً. تحدث بعض المداخلات والانتقادات، ثم تهوي المطرقة مرة أخرى معلناً صاحبها أنه قد آن أوان التصويت. ترتفع أيدي المؤيدين، وهنا نستطيع أن نتعرف على الأقل على ثلاثة منهم.. إنهم هم الذين رأيناهم يتآمرون في الغرفة الصغيرة قبل الاجتماع، بل إن صاحب المقترح هو واحد منهم أصلاً. تهوي المطرقة مرة أخيرة معلنةً الموافقة على المقترح بالأغلبية. وترتسم الابتسامة الخبيثة على وجوه المتآمرين قبل أن ينفض الاجتماع.
نعم يا سيدي الكريم.. هنا المزايا تضاف بسلطة أصحابها وسطوتهم وتحالفاتهم مع الآخرين ضد خصومهم. وكيف يا ترى يكون الردّ من قِبَل الخصوم؟ على شكل امتداد خاص (vendor-specific extension) يتفرّدون به حتى وإن رفضت الهيئة إضافته.
هذا مجرد سيناريو واحد من السيناريوهات العديدة التي تحدث في مثل هذه التنظيمات. وأرجو أن تكونوا قد استوعبتم البيئة والأجواء فيها. وينتهي المطاف بفولكان كمجموعة مفككة من المزايا، بعضها مدعوم من المكتبة الأساسية والبقية هي مزايا متشرذمة غير موحدة ولا تعمل سوى على أجهزة الشركات التي كتبتها. ونتمنى لك أيها المبرمج الكريم حظاً سعيداً في اكتشاف كيف تعمل كل جزئية من هذه المزايا، ناهيك عن اكتشاف وجودها أصلاً.
لاحظوا يا سادة أننا نتحدث عن مكتبة من المكتبات الأساسية في نظام التشغيل مفتوح المصدر لينوكس. والذي لا يملك دعماً رسمياً لدايركت إكس. وبالتالي لا خيار له سوى تطوير مكتبة موازية لسدّ الفجوة. وفقط كي أضعكم في الصورة، نحن نتحدث عن نظام تشغيل هو النواة في ما يربو عن ٦٠% من الهواتف المحمولة والأجهزة الذكية في العالم.
فعلاً، عندما ننظر إلى هذا الوضع لا نملك سوى الإيمان بأن هناك قدرة إلهية تسيّر الأمور التي لولاها لانهار العالم الرقمي القائم على البرمجيات الكبيرة مفتوحة المصدر.
الله يستر!