البيئة التطويرية NoFlo: قل وداعاً لشفرة السباغيتي
غالباً ما تكون نقطة البداية في عملية تطوير البرمجيات و التطبيقات من لوح الكتابة Whiteboard، حيث يعكف المطور أو المبرمج على جرد أفكاره على شكل رسومات و مخططات مبدئية تساعده في تصميم بنية البرنامج بشكل أفضل قبل أن يشرع فعليا في عملية البرمجة.
لوح الكتابة أو باللغة الإنجليزية Whiteboard يعتبر المهد الذي يحتضن الأفكار ، ففي الغالب يتم اللجوء لهذه الطريقة في محيط العمل أين تتواجد مجموعة من الأشخاص يتوزعون على مختلف التخصصات، نضرب مثال على فريق عمل متواجد في إستديو لإنتاج فيلم رسوم متحركة، حيث يجب أن يكون هذا الفريق مكون من : المصممين، المبرمجين، محركي الرسومات، كاتب السيناريو، المخرج ، و يجب على كل الأطراف في فريق العمل هذا أن يكونوا على دراية بكل تفاصيل المشروع ابتدائاً من البرمجة وصولا إلى نص الحوار، كما يجب عليهم التنسيق فيما بينهم حتى يتم إنتاج عمل في المستوى.
شفرة السباغيتي و معاناة المبرمجين في محيط العمل
و لتحقيق هذا التنسيق فإن جميع أفراد طاقم العمل مطالبين بتوضيح كل جزء موكل لهم بعيدا عن تعقيدات المنهج المستخدم الذي يفهمه أهل الإختصاص فقط، فالمبرمج يواجه صعوبة في التعامل مع بنية السيناريو و الحوار، و كاتب السيناريو و باقي طاقم العمل يصدق فيهم المثل العربي القائل “كالأطرش في الزفة” عندما يتعلق الأمر بالبرمجة، و علينا أن نعترف جميعنا أن النظر لكل تلك الشفرات البرمجية مربك حقا، لذلك فإن المبرمج يتوجب عليه توضيح كل تلك الأسطر المبهمة لباقي فريق العمل ، و هذا يعني إستهلاك مزيد من الوقت .
المبرمج في محيط العمل مطالب ببذل مجهود أكبر من غيره في توضيح عمله و التعاون مع جميع المتخصصين على حدة ، خصوصا مع المصممين، إذ يرتبط عملهم بشكل مباشر مع الشفرة البرمجية أكثر من غيرهم في فريق العمل ، لذلك فإن الغوص كل مرة في الملفات و المجلدات و كل تلك الأسطر البرمجية من أجل إحداث تعديل أو إضافة يعتبر عملية محبطة تجعل من المبرمج يصاب بالتخمة جراء تناوله كل تلك الكميات الهائلة من السباغيتي .
ما علاقة السباغيتي بالبرمجة !
شفرة السباغيتي هو مصطلح يطلق على الشفرة المصدرية التي تملك بنية معقدة و متشابكة من الأسطر البرمجية، و التي تنتج في الغالب عن إستخدام أوامر الـ GOTO و الإستثناءات Exceptions ، و تتجسد بكثرة في أعمال المبرمجين الأقل خبرة أو في المشاريع الكبيرة مفتوحة المصدر Open source Projects التي تخضع لعملية تحديث و تطوير مستمرة.
و قد ساهمت البرمجة الهيكلية Structured Programming في خفض حدوث هذه الأخطاء إلى حد كبير، لكنها لم تكن علاج جذري لهذه المشكلة، إلى غاية ظهور نمط البرمجة القائمة على التدفق و التي يرمز لها إختصارا بـ FBP و هي الأحرف الأولى من عبارة Flow-Based Programming ، و التي تعرف التطبيقات و البرمجيات على أنها شبكة من المكونات الرسومية المترابطة و التي تتبادل البيانات بينها عبر إتصالات محددة مسبقا.
الصورة أعلاه توضح تطبيق بسيط عبارة عن ساعة تقليدية تمت برمجتها بالكامل عن طريق إطار العمل أو البيئة التطويرية الموجهة لبرمجة تطبيقات الويب Meemoo ، بحيث تتيح فهم أفضل كيفية عمل تطبيقات المتصفح بشكل أفضل من دون الخوض في تعقيدات البنية البرمجية، فحتى غير المبرمج يمكنه بسهولة فهم آلية عمل التطبيق مع شرح بسيط، و هذا نفس الشيء الذي توفره البيئة التطويرية NoFlo .
تعرف على NoFlo
NoFlo هي بيئة تطويرية موجهة للبرمجة القائمة على التدفق المستخدمة من قبل المبرمجين لإنشاء تطبيقات جافا سكريبت للمتصفح و Node.js ، تم تأسيس البيئة التطويرية NoFlo مفتوحة المصدر في فنلندا كجزء من مشروع بحثي من طرف الإتحاد الأوروبي أطلق عليه إسم IKS.
و من خلال إطلاق حملة تمويل جماهيري على منصة Kickstarter يهدف فريق NoFlo إلى توسيع المشروع ليشمل دعم تطوير تطبيقات الأندرويد و الـ IOS 7 ، حتى تصبح NoFlo المنصة المفضلة لتطوير و برمجة تطبيقات الهواتف الذكية و الكمبيوترات اللوحية و ذلك بالإعتماد على نمط البرمجة القائمة على التدفق FBP و التي من شأنها تسهيل الأمور كثيرا على المطورين.
” البرمجيات و التطبيقات تبدأ كرسومات و تخطيطات على لوح الكتابة، إذن فلنبقها على ذلك النحو عند الشروع في البرمجة “
هذا هو شعار البيئة التطويرية NoFlo التي تسعى من أجل نشر مفهوم جديد في عالم البرمجة يتلخص في إلغاء بنية الشفرة البرمجية التقليدية و تعويضها بمخطط رسومي يحتوي على مكونات تساعد على فهم و تنظيم بنية البرنامج بشكل أفضل، فالوسيلة الوحيدة حاليا لفهم الشفرة المصدرية لبرنامج ما تكمن في تصفح كامل الكود و الإنتقال بين الكثير من الملفات ، هذه العملية التي تكون مربكة للغاية خاصة في محيط عمل يجمع أشخاص من تخصصات مختلفة، كما تطرقنا له في المثال السابق.
الثورة القادمة في عالم البرمجة
يبدو أن كل شيء متعلق بالتقنية ينمو و يتطور بسرعة هائلة حتى يصعب علينا في كثير من الأحيان مجارات كل جديد في هذا المجال، و في نفس السياق تظهر حاجة ملحة للسيطرة و التحكم في هذه التغيرات حتى نتمكن من إستغلالها على أكمل وجه في مشاريعنا.
و حسب ما تطرق له Bret Victor في محاضرة بعنوان ”Future of Programming “ يرى أن المستقبل يكمن في نمط البرمجة القائمة على التدفق التي تتيح مواكبة أفضل للتغيرات التي تطرأ على لغات البرمجة و التحكم بها بشكل جيد بعيدا عن كل التعقيدات .
البرمجة الكائنية التوجه VS البرمجة القائمة على التدفق
من دون أدنى شك، أحدثت البرمجة الكائنية التوجه Object Oriented Programming ثورة و نقلة نوعية في عالم البرمجة، و أهم ما جاء به هذا النمط من البرمجة هو الكائنات و مفهوم التغليف أو التعليب Encapsulation ، حيث أن كل كائن عبارة عن حزمة (تعليب) من البيانات (المتغيرات والثوابت) والدوال و وحدات التنظيم و واجهات الإستخدام. و يتم بناء البرنامج بواسطة استخدام الكائنات و ربطها مع بعضها البعض و مع واجهة البرنامج الخارجية باستخدام هيكلية البرنامج و واجهات الإستخدام الخاصة بكل كائن.
لكن البرمجة الكائنية التوجه ليست قوية بما يكفي لتحمل تعقيدات التطبيقات و البرمجيات الكبيرة و هذا ما قد يجعلها تنهار كما أشار لذلك الراحل ستيف جوبز Steve Jobs و الذي يعتبر من أشهر المساهمين في تطوير نمط البرمجة هذا .
و على عكس البرمجة كائنية التوجه OOP التي تستند على النص، فإن بيئة NoFlo التي تستند على نمط البرمجة القائمة على التدفق FBP تفرض التغليف عن طريق إزالة الشفرة من التطبيق و إستبدالها بمكونات تترابط و تتبادل البيانات بينها من خلال الوصلات (كما هو موضح في الصورة أعلاه).
NoFlo تتيح للمبتدئين التعامل مع العديد من الخيارات و المهام التي يصارع من أجلها أفضل المبرمجون في الـ OOP ، مثل تنفيذ أكثر من عملية في نفس الوقت أو ما يعرف بـ Multi-threading ، و التناغم أو الترتيب Orchestrating ، و العديد من المهام الأخرى، و يجب أن لا يفهم من العنوان أو من أسطر هذا النص أن البرمجة القائمة على التدفق أفضل من البرمجة الكائنية التوجه، لأنها في الحقيقة مقارنة خاطئة ، فنمط البرمجة FBP جاء لتسهيل و تحديث عملية البرمجة و ليس لإلغاء أي نمط آخر، بل بالعكس البرمجة الكائنية التوجه ستكون جزء من البرمجيات التي يتم عملها عن طريق الـ NoFlo .
NoFlo الصبغة الحديثة لـ FBP
دون علم معظم المطورين و المبرمجين، ثورة البرمجة المستندة على التدفق كانت قائمة على قدم و ساق على مدى نصف القرن الماضي، لكن تحت تسميات مختلفة مثل : البرمجة المرئية Visual Programming، وقد برزت FBP كآلية مفضلة في معظم البرمجيات المستخدمة في مجالات كثيرة مثل: التأثيرات الخاصة، ألعاب الفيديو، الأفلام، الهندسة الموسيقية، و حتى الشبكات الإجتماعية. و لقد بنيت NoFlo لتعميم FBP و تطوير البرمجيات الحديثة. خصوصا تطبيقات الهواتف الذكية و الحواسيب اللوحية.
FBP و صناعة الأفلام السينمائية
الصناعة السينمائية أصبحت من ركائز الإقتصاد في عالم اليوم، و بفضل التطور التقني شهدت السينما تطور جذري و قفزة نوعية نحو صناعة المستحيل، و عندما نتكلم عن تضمين التقنية في الصناعة السينمائية فنحن بالتأكيد نتكلم حول المؤثرات الخاصة و المشاهد الثلاثية الأبعاد و رسومات الكمبيوتر.
في الفيديو التالي سنشاهد كيف يتم تطبيق نمط البرمجة FBP في إضافة المؤثرات الخاصة على مستوى أحد المشاهد في الجزء الثاني من الفيلم الشهير الرجل الحديدي أو Iron Man 2
فيديو آخر يوضح إستخدام و توظيف نمط البرمجة FBP في تصميم معارك ضارية في فيلم ملك الخواتم Lord of the Rings :
البيئة التطويرية NoFlo هي مجرد خطوة نحو الأمام ، ستفتح المجال على مصرعيه لعهد جديد ، فآخر نقلة ثورية للبرمجة حدثت منذ 20 سنة على يد ستيف جوبز، و الآن حان الوقت لثورة أخرى ليتم حقن دماء جديدة في هذا المجال و تقريب نمط البرمجة القائمة على التدفق لعامة الناس، حتى أولئك الذين لا يفقهمون في البرمجة، أو المبتدئين ، و توفير هذا النمط و إستغلاله في تطوير تطبيقات الويب و الهواتف الذكية قد ينتج عنه جيل جديد من البرمجيات و الخدمات التي ستضيف معنى آخر لحياتنا السايبرية (الإفتراضية) و حياتنا الواقعية على حد سواء.
اليوم أصبحت البرمجة أسهل أكثر من أي وقت مضى و ربما هذه هي اللحظة المناسبة لركوب هذه الموجة ، فالعديد من المنصات و البيئات التطويرية أصبحت تركز على تسهيل و تبسيط عملية البرمجة و هذا ما تم التطرق له في موضوع الأداة البرمجية LiveCode التي تستخدم لصناعة التطبيقات و ذلك بالإعتماد على بُنية لغوية شبيهة بالإنجليزية بعيداً عن كل تلك الرموز والمصطلحات التقنية المعقدة لتسهيل البرمجة وبنمط سريع.
مجهوود رائع أخي أسامة
موضوع جميل فعلا
مرحبا أخي هيثم، شكرا على المرور الطيب، سعيد جدا أن الموضوع أعجبك، أتمنى أن تعم الفائدة
مع الاسف صديقي اصبح اخر اهتمامنا العلوم لهذا اصبحنا في مؤخرة الامم و الشعوب لو قمت بطرح موضوع حول الرقية الشرعية لامتلائت مدونتك بالتعاليق و الشكر الكثير
مرحبا صديقي مختار ، نحن نبذل أقصى جهدنا لتغيير هذا الواقع ، فهذه المدونة هي الفتيل التي سيشعل النهضة 🙂
شكرا على مرورك يا طيب
تقبل تحياتي
مجهود جميل جداً , ومدونتكم هي الاجمل …
اتمنى منكم الاستمرار وزيادة عدد المواضيع ,,, لاني جداَ متشوق لـ جديدكم …
تحياتي لكم
نسعى أن نكون في مستوى توقعاتكم، شكرا على المرور العطر و الكلمات المشجعة
نتمنى ان نرى مداخلاتك و تعقيباتك في مواضيع أخرى 🙂
ثورة هائلة ف مجال البرمجة …. ولكن بالمقابل أرى أن تقنية البرمجة بدون كود سيكون لها نفس الصدى ف المستقبل … فهي تهدف الى التخلي عن كتابة الشفرة المصدرية ذات النصوص المعقدة والكلمات المحجوزة الى حد ما … وبالمقابل ارى ان مستقبل البرمجة بدون كود و NBP يحملان مستقبل باهر …
مرحبا أخي إبراهيم ، تقنية البرمجة من دون كود إبتكار عربي بإمتياز و سأحرص على التطرق إليه في تدوينات مستقبلية، البرمجة تسير في مسار التبسيط و التسهيل و هذا ما يبشر بمستقبل باهر كما تفضلت، و نتمنى أن هذه التقنيات ستساهم في إلتحاق العرب بالركب.
شكرا على مرورك ، تحياتي
شكرا لك أخي أسامة، غاب حسك التدويني منذ مدة وطننت أنك اعتزلت التدوين لكن فرحتي كبيرة لما وجدت اليوم مقالك هذا المتميز .
دمت مبدعا متألقا في مجال التقنية .
مرحبا أخي و صديقي ناصر ، فعلا هي مدة طويلة، تعرف الظروف تبعدك عن الكثير من الأمور، لكن ها أنا أعود من جديد من خلال هذه المدونة المتميزة و التي أتمنى أن تكون تدويناتي فيها في المستوى حتى تعم الفائدة.
شكرا على مرورك الرائع يا رائع، أتطلع لتعقيباتك و تعليقاتك دوما
دمت سالما صديقي
greate subject thanx can’t wait fof the next topic
ستكون هناك مواضيع جديدة قريبا ، أتمنى ان هذا الموضوع ألهمك بطريقة ما 🙂