الـ " Bug " لا يعني " حشرة " ... دليل غير المبرمجين للمفاهيم البرمجية و ما بعدها !

الـ " Bug " لا يعني " حشرة " ... دليل غير المبرمجين للمفاهيم البرمجية و ما بعدها !

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

الـ " Bug " لا يعني " حشرة " ... دليل غير المبرمجين للمفاهيم البرمجية و ما بعدها !

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

 الـ Bug لا تعني " حشرة " 

إصطلاحا، الـ Bug هو " حشرة " في الأصل، لكن ليس عند المبرمج، في الحقيقة هذا المصطلح هو أسوأ كابوس قد يواجهه المبرمج في مسيرته البرمجية، لأن الـ Bug بكل بساطة يعني " الخطأ البرمجي ". 
بشكل أدق و أكثر صحة، الـ Bug هو خلل في الكود البرمجي يؤدي الى إظهار نتيجة غير النتيجة المرغوب فيها في البرنامج، سواء نتيجة خاطئة او عدم إظهار نتيجة ( اي خروج البرنامج او تعطل الكود البرمجي )، و يُصطلح عليه عامة بين كل المبرمجين بالـ Bug و ليس الـ Error او Flow او غيرها من المطلحات المنطقية ربما. 
القصة الأصلية و الصحيحة لكيف تعلق مصطلح " Bug " بالخطأ البرمجي ليست واضحة، فهناك قصة تقول أن Ada Lovelance واحدة من أول المبرمجين في العالم وجدت يوما أن مشكلة في حاسوبها كان سببه حشرة فأطلقت عليه خطأ الـ Bug، و قصة أخرى تقول أن أصل المنشأ كان " توماس أديسون " الذي وجد أن بعض الحشرات كانت السبب المعيق في صناعته لبعض الأشياء ( تيسلا يقهقه الآن )، و البعض الآخر يقول أنه متعلق أكثر بالحياة الحقيقية و هي ان الحشرات مصدر إزعاج بشكل عام و تم تلفيق المشاكل البرمجية المزعجة لتشابهها و الـ Bug. 

 الـ Warnings تعني أن كل شيئ بخير

لديك 125 تحذير / Warning في الكود ؟ لا مشكلة إذن فكل شيئ بخير. عند المبرمج يوجد فقط الصحيح و الخطأ، يشتغل او لا يشتغل، الـ 0 و الـ 1 لا غير، و كل ما بينهما كذب و بهتان و لا حاجة لنا به ( نسبيا )، على رأسها التحذيرات او الـ Warnings. ù


من الطبيعي جدا ان يمتلك المبرمج الكثير من التحذيرات و الـ Warnings في الكود البرمجي الخاص به، قد تعتقد أنها خطيرة، لكن صدق او لا تصدق معظم هذه التحذيرات تخبرك فقط انك إستخدام حرف كبير بدل حرف صغير أثناء تسمية متغير، او انك قمت بالنقر على فراغ (space) إضافية في السطر 25. 
معظم التحذيرات شديدة القوى في الكود البرمجي تظهر على شكل أخطاء لا تحذيرات، و تبقى التحذيرات مجرد كلام قد تأخذه على محمل الجد او عكس ذلك أحيانا. 

 أستطيع إنجازه في يومين ... يعني أسبوعين


الزمن نسبي ... Change my mind 

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

 مهمة جديدة تستغرق 10 ثوانٍ؟ دعني أقضي 24 ساعة في محاولة صناعة برنامج لأتمتتها

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

البحث في جوجل ... يعني Stackoverflow 

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

سأرتاح قليلا ... يعني سأبرمج شيئاً آخر 

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

يستحقر الـ HTML ... يعني أنه مطور فاشل ! 


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

الـ HTML هي لغة هيكلة، لكن هذا لا يعني استصغارها، إذ يوجد الكثير من اللغات المستخدمة بشكل كبير في الوسط البرمجي وليسوا بلغات برمجة، مثل SQL التي تعتبر لغة استعلام، أو الـ UML التي تعتبر لغة تخطيط ( Unified Modeling LANGUAGE ).
يتم تعريف لغات البرمجة أساساً على شكل أقسام كبيرة منها اللغات الـ Functional و الـ Procedural و الـ Oriented Object والمزيد، لكن سنتفق جميعاً أن لكل لغة هدف محدد، واستصغارك للغات على لغات أخرى سواء كانت برمجة أو هيكلة أو استعلام، هو دليل على عدم فهمك للمجال البرمجي بشكل صحيح، وبذلك أنت أشبه بمطور فاشل لازال يحتاج إلى التثقيف كثيراً في المجال. 

شاركه على :