![]() |
عملية البرمجة هي عملية معقدة .. ولأنها تنفذ دائما بأيدي بشرية فينتج عنها دائما أخطاء .. والخطأ البرمجي له إسم شائع باللغة الإنجليزية يسمى Bug أو حشرة ! وقد سميت بهذا الإسم بسبب موقف حدث في عام 1947 في جامعة هارفارد في أحد المشاريع الواعدة لتصنيع كمبيوتر كانت المهندسة Grace Murray Hopper تخطط للمشروع وما إلى ذلك ثم إلتصقت حشرة في مكان مهم من الورقة التي تعمل عليها جريس ! ومن وقتها سميت الأخطاء البرمجية بهذا الإسم نسبة لها .. (يمكنك مشاهدة الورقة الحقيقة التي نتحدث عنها من هنا حشرة تاريخية ! |
وهناك 3 أنواع من الأخطاء البرمجية :-
لغة بايثون يمكنها فقط أن تشغل البرامج التي لا تحتوي على أخطاء كتابية ,, وإلا سيظهر لك مترجم لغة بايثون رسالة يخبرك فيها بوجود خطأ إملائي .. بالتالي لن يتمكن مترجم اللغة من تشغيل البرنامج كليا .. (مترجمات لغات البرمجة Compilers غير رحيمة إطلاقا في تلك النقطة .. لو تعرف أحدها مما يتغاضى عن الأخطاء الإملائية في لغات البرمجة أتمنى أن تشاركني به) على أي حال الأخطاء الكتابية Syntax errors يمكنها أن تعوقك قليلا في بداية تعلمك لأي لغة برمجة .. مع الوقت عندما تزيد مهارتك وخبرتك بها لن تمثل لك أي مشكلة فهي تحتاج إلى تدريب ليس إلا ..
Semantic errors الأخطاء المنطقية :
وهي من وجهة نظري أهمهم وأخطرهم في حياة برنامجك لإن مترجمات لغات البرمجة لا تفهم تلك النوعية من الأخطاء بالتالي سيتم ترجمة برنامجك بنجاح ولكنه لن يعمل بالشكل الصحيح الذي تقصده في جزئية معينة .. مثلا أنك كتبت برنامج يريد أن يقوم بوظيفة معينة سيعتمد على تلك الوظيفة أيضا في مكان أخر من البرنامج (وهو شىء وارد جدا في البرامج الكبيرة) تخيل أنك أخطأت في بعض الحسابات في العملية الأولى ؟ بالتالي سيكون كل عملية بعدها نتيجتها خاطئة ! البرنامج لم يخطأ في هذا ولكنها أخطأ في النتائج مما فهمه البرنامج منك .. كل هذا ببعض اليقظة أثناء عملية التطوير يمكن تفاديه .
عملية إصلاح الأخطاء البرمجية :
هي من أهم العمليات على الإطلاق التي يجب أن تتوافر عندك إن كنت تريد أن تصبح عالم في تطوير البرمجيات أو حتى مطور برامج .. وفي بعض الأحيان يمكنها أن تصيبك بالإحباط (حين تكون الحشرة كبيرة نوعا ما! ) ولكنها في المقام الأول عملية فكرية فيها الكثير من التحدي والمتعة في عملية تطوير البرنامج ..
تصور نفسك كمحقق شرطة .. وتجمع القرائن لحل جريمة معينة ثم تقوم بإستنتاج العمليات والأحداث التي تمت حتى حدثت النتيجة النهائية التي تراها الأن !! مثير أليس كذلك ؟!
وهي أيضا كالتجارب العلمية .. عندما تقوم بتجربة وتحصل على نتيجة خاطئة فأنت تقوم بالتعديلات اللازمة ثم تعود من جديد وتستكمل للخطوة القادمة من رحلتك .. مثل شارلوك هولمز قال : عندما تتخلص من تعريف كلمة مستحيل في ذهنك .. فمهما يتبقى في عملك كان يبدو كثيرا ستصل للحقيقة ! (نهاية البرنامج ونجاحه في حالتنا)
بعض الناس يعتبرون عملية البرمجة هي عملية إصلاح الأخطاء البرمجية .. فهم يعتبرون أن البرمجة هي إصلاح خطأ برمجي وراء إصلاح خطأ حتى يعمل البرنامج ككل بشكل صحيح .. طبعا هذا غير صحيح لإن عملية إصلاح الأخطاء هي جزء واحد من عملية تطوير البرنامج ككل ولا يمكنني أن أساويهما أبدا .. فهي حتى لا تأتي في عملية التطوير البرنامج في المرحلة الأولى !
على سبيل المثال نظام التشغيل لينوكس Linux يحتوي على الملايين من سطور الأكواد البرمجية ولكن الفكرة بدأت ببرنامج بسيط جدا (بالمقارنة) كتبه Linus Torvalds وكانت وظيفته العمل على الدائرة الإلكترونية في معالج إنتل Intel 80386 chip .. ويمكن تصويره ببرنامج يقوم بطباعة أأأ و بـ بـ بـ .. هذا البرنامج تتطور حتى أصبح نظام التشغيل لينوكس في يومنا .. فهل يمكن أن نطلق على نظام التشغيل هذا أنه عملية إصلاح أخطاء برمجية ؟! (مقتبس من دليل مستخدم لينوكس) ..
في الأخير .. كلنا يحب أن يعمل برنامجه بشكل مثالي من المرة الأولى وهو الشىء الصعب نوعا ما في العالم الواقعي وعملية تطوير البرامج الحقيقة ولكن لا مفر فنحن بشر !
أذكر أن أول قائد فريق عمل Team leader عملت معه قالها لي مرة (على سبيل المزاح) حين وجدني متعصبا بسبب أن البرنامج الذي أشارك في تصميمه لا يعمل وأحاول محاولات عديدة وتظل الأخطاء تظهر .. إن عمل معك البرنامج بشكل صحيح من أول مرة فإعلم أنك أخطأت في شىء ما !!
لذلك كلما ظهر لي خطأ برمجي تذكرت كلامه وإبتسمت وإستكملت عملي ! فلا تكره حياتك وقتها !
Related posts:
- نهاية الفصل الأول من : كيف تفكر كعالم كمبيوتر بإستخدام لغة بايثون تحدثنا سابقا في كتابنا “كيف تفكر كعالم كمبيوتر بإستخدام لغة...
Related posts brought to you by Yet Another Related Posts Plugin.


مفيد و ممتع
للإشارة فقط هنالك محاضرة لـ ted.com تطرقت إلى نشئت الحاسوب و المعانات الأولى للمبرمجين معه
http://www.ted.com/talks/george_dyson_at_the_birth_of_the_computer.html
[Reply]
جميلة جدا التدوينة دى
أنا بحب مجال البرمجة و بس أعرف فيه على بسيط
[Reply]