
2006/11/28
إمسك مدون

فيجوال بيسك ..... نظرة تاريخية
كان الهاجس الأكبر للعلماء وبعد إختراع الحاسوب هو كيفية تبسيط التعامل معه والإستفادة منه ، فظهر أول ما ظهر من اللغات البرمجية لغة الآلة Machine Language وهي أول لغة قد تم توظيفها لكتابة البرمجيات وهذه هي اللغة الوحيدة التي يفهمها الحاسوب وتتكون من رمزين هما (1-0) ، إلا أن هذه اللغة كانت صعبة المنال وتتطلب معرفة واسعة في تصميم الحاسوب ، كما أن تصحيح الأخطاء التي تظهر في البرامج المكتوبة بهذه اللغة كان صعباً مما دفع العلماء إلى تطوير هذه اللغة إلى لغة التجميع Assembly Language التي كانت أفضل من سابقتها من حيث السهولة في كتابة البرامج ، وإستخدمت فيها إختصارات لكلمات ذات مدلول لغوي مثل Add التي تدل على الجمع ، وMov التي تدل على النقل .وبعد كتابة البرنامج يتم تجميعه وتحويله إلى لغة الآلة التي يفهما الحاسوب عن طريق ما يسمى بالمجمع Assembler إلا أن اللغتين السابقتين كانتا تعتمدان في كتابة البرنامج على معرفة موسعة بالتصميم الداخلي للحاسوب (( المعالجات ، مسارات البيانات ، عناوين الذاكرة ، الخ )) لذلك فإنهما تندرجان تحت اللغات البرمجية منخفضة المستوي Low-Level Language وقد فكر العلماء في إبتداع لغات عالية المستوى High-Level Language تكون العبارات المستخدمة في برمجة البرامج من خلالها ذات مدلول لغوي واضح مثل Write , Read , Input ، ويتم في هذه اللغات عزل المبرمج عن مشقة الخوض في متاهات التصميم الداخلي للحواسيب ، ويتم تحويل البرنامج بعد كتابته إلى برنامج قابل للتنفيذ عن طريق ما يسمى بالمترجم أو المجمع Compiler ، ويتم تجربة هذا البرنامج قبل تجميعه لمعرفة الأخطاء التي تحدث فيه عن طريق ما يسمى بالمفسر Interpreter .بذلك ظهرت اللغات التي تم تطويرها فيما بعد والتي إشتهرت ويعرفها كل من خاض في مجال البرمجة مثل C , Basic , Fortraan , Pascal ، وقد تفاضلت هذه اللغات التي بلغت المئات فيما بينها من حيث القوة والسهولة وكانت لغة Basic هي اللغة الأكثر سهولة وشعبية بين هذه اللغات السابقة وإشتقت كلمة Basic من الحروف الأولى لعبارة Beginners All-Purpose Symbolic Instruction Code والتي تعني لغة التعليمات الرمزية لكافة الأغراض للمبتدئين .وقد وضعت أساسيات هذه اللغة في منتصف الستينات في كلية جامعية في الولايات المتحدة الأمريكية ، وقد تم تطويرها من قبل عدة شركات وقد تبناها معهد المقاييس الأمريكية ANSI عام 1978 ، وظهرت منها عدة إصدارات بكافة أنواعها وكانت ضعيفة من حيث واجهات البرامج التي تنشئها حيث أن إنشاء واجهات برامج مقبولة نوعاً ما يتطلب من المبرمج كتابة الآلاف من الأسطر أثناء تصميم هذه البرامج مما دفع الشركات ومنها شركة Microsoft لأن تطور اللغات البرمجية وخصوصاً بعد إصدار أنظمة التشغيل التي تدعم بيئة المستخدم الرسومية GUI Graphic User Interface ، والتي تسمى بنظام النوافذ Windows .وقد تبنت شركة Microsoft لغة البرمجة تحويل بيسيك QBasic لتكون نواة لبرنامج فيجوال بيسيك بإصداراته المتنوعة ، لكن الضعف في لغة البرمجة QBasic بالمقارنة مع اللغات البرمجية الأخرى دفع شركة Microsoftإلى دعمها دعماً كبيراً ، وبذلك إستمرت هذه اللغة الشعبية السهلة ولم تندثر كما حصل مع الكثير من اللغات البرمجية الأخرى ، وهكذا أنجبت اللغة الأم QBasic وليدتها المدللة لغة بيسيك المرئية Visual Basic ونالت هذه اللغة الوليدة الرعاية والحنان والدعم من شركة Microsoft ونالت الترحيب والرضى والقبول بين شرائح المبرمجين وعلى كافة مستوياتهم ويتجلى ذلك في النقاط التالية :-(أولاً)أصبح بإمكان المبرمج أن يصمم برامج بواجهات جميلة حيث توفر لغة فيجوال بيسيك للمبرمج أغراض وأدوات تستخدم في نظام التشغيل نفسه مثل ( صناديق النصوص والصور والقوائم المنسدلة وقوائم الإختيار وأشرطة التمرير .... الخ ) ، وبهذا الأمر تم إسدال الستار على ما كان يعانيه المبرمج من ناحية تصميم واجهه لبرنامجه وإضاعته الساعات الطوال لتحقيق هذا الأمر .(ثانياً) جاء الدعم الآخر للغة فيجوال بيسك عندما قامت Microsoft بإضافة هذه اللغة ضمن مجموعة برامج Microsoft Office وذلك من أجل تطوير قواعد البيانات التي ينشئها برنامج Ms-Access ودعم أوراق العمل الإلكترونية التي ينشئها برنامج الجداول Ms-Excel 97 ودعم الوثائق الألكترونية التي يدعمها برنامج Ms-Word 97 ، ودعم العروض التي ينشئها تقديم العروض Ms-PowerPoint 97 ، فأصبح من الضروري لمن يود أن يكون محترفاً في مجموعة برامج Microsoft Office أن يتعمق في لغة فيجوال بيسك .(ثالثاً) الدعم الثالث الذي تلقته لغة فيجوال بيسك هو من قبل عدد كبير من الشركات والمحترفين حيث تم تطوير عدد كبير من عناصر التحكم الفعالة OCX ActiveX ، وطرحها في الأسواق لتستخدم فيما بعد في دعم البرمجيات التي ينشئها فيجوال بيسك .(رابعاً) وجاء دعم آخر لهذه اللغة من قبل شركة Microsoft مرة أخرى عندما أضافت إلى الإصدار الخامس من برنامج فيجوال بيسك إمكانية بناء عناصر تحكم OCX ActiveX وبذلك أصبحت لغة فيجوال بيسك تضاهي بقية اللغات القوية في إمكانياتها .(خامساً) أضافت Microsoft إمكانية إستدعاء الكثير من الوظائف الموجودة في نظام التشغيل وإمكانية الإستفادة من بعض البرامج التي تعمل في بيئة نظام النوافذ وتسخيرها لصالح البرنامج المنشأ بلغة فيجوال بيسك .
من كتاب المبرمج - ترجمة وإعداد م.محمد جلال قاوجي - م. محمد سامح عطري
خذ الحكمة من أفواه المبرمجين
هذه بعض من حكم والاس وانج الطريفة للمبرمجين
التراكيب الشرطية eفي الحياة الفعلية يتخذ كل منا العديد من القرارت بناء على شروط معينة ، فمثلاً يمكنك أن تطلب من إبنك أن ينظف الحديقة الخلفية للمنزل فيقول لك ( لا تقلق يا أبي إذا إنتهت المباراة قبل حلول الظلام فسوف أنظف الحديقة ) أو تقول لأحد أصدقائك المقربين ( إذا أردت ألا تسمن أكثر من هذا فيجب أن تتوقف عن أكل الحلويات الدسمة ) ، إن فيجوال بيسك لا يختلف عنا عندما يتخذ بعض القرارات ، فهو يفحص الشرط الذي تحدده للقرار ثم يستجيب بالصورة الصحيحة .التكرار يستمر في تنفيذ الأوامر الموجودة داخله حتى يصبح الشرط صحيحاً ؟
Do Untill
إنه هذا التكرار يشبه النصيحة التي يقدمها لك شخص لا ضمير له حين يقول لك ( إستمر في سرقة خزينة النقود حتى يراك صاحب الشركة ) .
ToolTipText لماذا نضيف تلميحاً لبرامجنا ؟
علىالرغم من توحيد واجهة المستخدم وإستخدام هذه الواجهة كواجهة قياسية لبرامجك ، فقد يظل كثير من الناس لا يعرفون ما الذي تفعله الكائنات المختلفة في برامجك ، وبدلاً من النقر على هذه الكائنات غير المميزة بشكل عشوائي ( وإحتمال تدمير بياناتهم ) فإن أغلب الناس سيصابون بالشلل ويمتنعون عن إستخدام أجزاء كبيرة من البرنامج على الإطلاق ، ولكي تتغلب على هذا التردد يمكنك أن تعرض تلميحاً سريعاً عندما يضع المستخدم مؤشر الفأرة فوقها ، وهذا التلميح ليس سوى نص بسيط يشرح ما يقوم به كائن معين .
لماذا نعرض الخيارات على المستخدم ?
في الإمتحانات الدراسية كانت إختبارات الإختيارات المتعددة أسهل من إمتحانات الكتابة ، إذ بإمكانك أن تخمن الإجابات بدلاً من التفكير فيها وتظل تحصل على درجة معقولة ، فالطلبة ليسوا الوحيدين الذين لا يريدون أن يفكروا ، فمعظم المستخدمين كذلك ، فهم يريدون أن يروا إختيارات محددة امامهم وبهذه الطريقة يمكنهم أن يخمنوا ويظلوا يحظون بحياة سعيدة .
لماذا نحدد طول النص ؟ Maxlength
يمكنك أن تمنع المستخدم من كتابة كلمات أو حروف أكثر مما يجب داخل مربع النص ، لعمل ذلك حدد أقصى عدد من الحروف تسمح به داخل المربع ، وبالتالي لن يستطيع الناس كتابة مقالات مطولة تحكي عما فعلوه في الصيف الماضي داخل مربع النص .
أشرطة التمرير Scroll Bars
لا مكن تقسيم الإختيارات في الحياة إلى تصنيفات واضحة بحيث تستخدمها مربعات العلامة وأزرار الإختيار والقوائم ، فأحياناً يحتاج المستخدم إلى خيارات تتطلب مجالاً كبيراً من الضبط التدريجي .فكر في صوت المسجل مثلاً ، إذا كانت الخيارات المتاحة هي ( ضعيف - متوسط - عالي ) فلن تتمكن من ضبط درجة علو الصوت ليوافق ذوقك ، ولهذا تجد معظم أجهزة الصوت تسمح لك بضبط مفتاح أو الضغط على زر يضبط الصوت تدريجياً ، لهذا قم بإستخدام أشرطة التمرير في برامجك على الأقل من أجل المستخدم .
الصور الجميلة والواجهات الهندسية
من الممكن أن توزع العناوين والصور على مختلف نوافذ برامجك ورغم أن الصور تجعل نوافذك جميلة إلا أنها من الممكن أيضاً أن تشكل جزءاً هاماً وفعلياً من البرنامج الذي تكتبه ، فمثلاً يمكن أن تضع صورة على خريطة توضح الطريق لمحطة البنزين وعليها عنوان ( ضع سيارتك بين أيدينا ) ، هذه الصورة يمكن أن تكون جميلة ومفيدة ، كما أن خريطة الطريق التي توضح أماكن الطرق السريعة والشوارع الجانبية الأساسية يمكن أن تكون جزءاً مكملاً وضرورياً ، فإذا إستخدمت العديد من الصور والعناوين في برنامجك فإنه سيكون أسهل في الإستعمال والفهم .والأشكال الهندسية في فيجوال بيسك ليس لها أية فائدة فعلية سوى أنها تتيح لك أن تزيين واجهة المستخدم بصورة أفضل ، وكلما كان الشيء جميلاً شعر الناس بالألفة معه ، ولعل ذلك يفسر لنا لماذا يمضي الأشخاص ذوي الجاذبية في حياتهم بدون أن يدفعوا ديونهم
هل البرمجة علم أم فن ؟

إكتشف الأخطاء وإحفظ عقلك
يقول الكاتب الظريف والاس وانج أنه لكي يصبح البحث عن الأخطاء في البرنامج أسهل فقد قسم علماء الكمبيوتر إلى ثلاثة فئات
1- أخطاء هجائية Syntax Errors
2- أخطاء وقت التشغيل Run-Time Errors
3- اخطاء منطقية Logic Errors
أخطاء هجائية Syntax Errors
تقع الأخطاء الهجائية تقع عندما تخطىء في هجاء أحد الأوامر أو الكلمات المحجوزة ، فمثلاً إذا كتبت كلمة Integer بالشكل التالي Intteger فإن الحاسوب لن يكون لديه أية فكرة عما تقصده منها ، وسوف يتوقف الكمبيوتر عندها ولا يحاول أن يشغل بقية البرنامج وعندما يمر أحد الأخطاء على فيجوال بيسك فإنه يقوم وبكل أدب بتحديد الكلمة الخطأ على الشاشة ليوضح لك بالضبط مكان المشكلة ، يمكنك بعدها أن تكتب الكلمة الصواب ثم تعيد تشغيل البرنامج مرة أخرى .لاحظ أن الأخطاء الهجائية تمنع فيجوال بيسك من تشغيل البرنامج ، فحتى إذا كان هناك خطأ هجائي بسيط في أحد الأوامر فإن فيجوال بيسك لن يقوم بتنفيذ البرنامج حتى تصوبه ، فإذا بدأ فيجوال بيسك في تشغيل البرنامج فإنه يمكنك التأكد من أنه خالٍ تماماً من الأخطاء الهجائية ، عند ذلك ستبدأ في التعامل مع أخطاء وقت التشغيل .
أخطاء وقت التشغيل Run-Time Errors
تقع أخطاء وقت التشغيل عندما يصادف فيجوال بيسك بعض البيانات التي لا يستطيع التعامل معها ، وفي الغالب تكون أخطاء وقت التشغيل أصعب من الأخطاء الهجائية ، فقد يكون برنامجك مليئاً بأخطاء وقت التشغيل ولكنك لن تعرف ذلك إلا عندما تبدأ في تشغيل البرنامج فعلاً .ولكي نعطي مثالاً من الحياة العملية على أخطاء وقت التشغيل ، حاول أن تركب سيارتك وإنطلق إلى أحد المطاعم التي تتيح لك الطلب من السيارة Drive-Thru وعندما تصل إلى النافذة ويسألك العامل عن الوجبة التي تريدها ، أخبره أنك تريد أن تشتري كتاباً !! ولأن العامل مبرمج على التعامل مع طلبات معينة فإن لن يستطيع التعامل مع طلبك وفي الغالب سيعاني هذا العامل من أخطاء وقت التشغيل !!وإذا أردت مثالاً من أحد البرامج في فيجوال بيسك على أخطاء وقت التشغيل إكتب الأمر التالي TaxRate = TaxOwed /YearlyIncomسيعمل هذا الأمر بصورة صحيحة إلا إذا أصبحت قيمة المتغيرYearlyIncome = صفراً ، ولأن القسمة على صفر مستحيلة فإن البرنامج سيتوقف عن العمل .ولأن عدد الأشياء التي يمكن أن تسير على نحو خاطىء غير محدود ، فإنه يمكن أن تعرف الآن لماذا توجد أخطاء في معظم البرامج الكبيرة ، ويتساءل والاس وانج بظرفه المعهود قائلاً أليس هذا شيء يريح البال خاصة إذا تذكرت أنه ينطبق على البرامج التي تتحكم في سير الطائرات وأنت تركب الطائرة فوق المحيط .
الأخطاء المنطقية Logic Errors
إن الأخطاء المنطقية هي أصعب أنواع الأخطاء ، وتقع الأخطاء المنطقية عندما لا يعمل البرنامج بالصورة الصحيحة لأنك أعطيت البرنامج أوامر غير صحيحة أو عندما تعطيه بعض الأوامر التي لا تعمل بصورة صحيحة في السياق الحالي ، ويستطرد وانج قائلاً صدق أو لا تصدق إن إضافة بعض الأوامر غير الصحيحة للبرنامج مسألة سهلة .لكي تتعرف على هذه النقطة بالتفصيل إليكم هذا المثال ، عندما يكون أطفالك منهمكون في مشاهدة برنامج محبب لديهم في التلفاز ، إطلب منهم أن ينظفوا غرفتهم أو أن يقوموا بأداء واجباتهم المدرسية ، قد يقوم الأطفال بالمهمة المطلوبة ولكن ليس بالشكل الذي تتوقعه .
فبدلاً من أن يقوموا بأداء واجباتهم المدرسية بشكل صحيح فإنهم سيملئونها بالأخطاء وبدلاً من تنظيف غرفتهم بجمع القاذورات ووضع الملابس المتسخة في الغسالة فإنهم قد يجمعون كل هذه الأشياء ويضعونها تحت السرير بعيداً عن عينيك ، في كلتا الحالتين قام الأطفال بإتباع التعليمات التي أعطيتها لهم ، ولكن ليس بالشكل الذي تتوقعه أو تريده ، والسبب في ذلك هو أن تعليماتك لم تكن محددة بالضبط ، فإذا وجد الأطفال أية ( ثغرة ) في التعليمات التي تعطيها إياهم فإنهم سيهربون من هذه الثغرة ليتخلصوا من المهام التي تكلفهم بها ، وفي الواقع لا يختلف الحاسوب كثيراً عن الأطفال في بعض الأحيان ستعتقد أنك أعطيت الحاسوب الأمر الصحيح ولن تكون لديك أي فكرة عن سبب عدم عمل البرنامج بالصورة الصحيحة ، في هذه الحالة عليك أن تفحص البرنامج وتتعرف على الأوامر التي قد لا تكون واضحة بدرجة كافية ليقوم الحاسوب بتنفيذها بالشكل المطلوب وإذا كانت البرنامج الذي تكتبه كبيراً ، فإن ذلك قد يعني أن تقوم بفحصه سطراً سطراً حتى تصل إلى الأمر أو الأوامر التي تسبب المشكلة ، حقاً إن البرمجة عمل ظريف .
فبدلاً من أن يقوموا بأداء واجباتهم المدرسية بشكل صحيح فإنهم سيملئونها بالأخطاء وبدلاً من تنظيف غرفتهم بجمع القاذورات ووضع الملابس المتسخة في الغسالة فإنهم قد يجمعون كل هذه الأشياء ويضعونها تحت السرير بعيداً عن عينيك ، في كلتا الحالتين قام الأطفال بإتباع التعليمات التي أعطيتها لهم ، ولكن ليس بالشكل الذي تتوقعه أو تريده ، والسبب في ذلك هو أن تعليماتك لم تكن محددة بالضبط ، فإذا وجد الأطفال أية ( ثغرة ) في التعليمات التي تعطيها إياهم فإنهم سيهربون من هذه الثغرة ليتخلصوا من المهام التي تكلفهم بها ، وفي الواقع لا يختلف الحاسوب كثيراً عن الأطفال في بعض الأحيان ستعتقد أنك أعطيت الحاسوب الأمر الصحيح ولن تكون لديك أي فكرة عن سبب عدم عمل البرنامج بالصورة الصحيحة ، في هذه الحالة عليك أن تفحص البرنامج وتتعرف على الأوامر التي قد لا تكون واضحة بدرجة كافية ليقوم الحاسوب بتنفيذها بالشكل المطلوب وإذا كانت البرنامج الذي تكتبه كبيراً ، فإن ذلك قد يعني أن تقوم بفحصه سطراً سطراً حتى تصل إلى الأمر أو الأوامر التي تسبب المشكلة ، حقاً إن البرمجة عمل ظريف .
أفضل الطرق لإكتشاف الأخطاء في برنامجك
عودة إلى المبدع والاس وانج مرة أخرى
يقول وانج أن أفضل الطرق لإكتشاف الأخطاء هو أن تجعل بعض الأبرياء يستخدمون برامجك ، ( في عالم البرامج التجارية هؤلاء الأبرياء هم المستخدمون الذين يشترون البرامج ) ، وبالتالي كلما زاد عدد الأشخاص الذين يختبرون البرنامج زادت إحتمالات العثور على الأخطاء الموجودة فيه ، بل قد يكتشف هؤلاء الأشخاص أخطاء لم تخطر على بالك أبداً كمبرمج ، ويمكن لهذه الأخطاء أن تكون كبيرة وواضحة مثل الأخطاء التي تؤدي إلى جعل الحاسوب يتوقف عن العمل ، أو قد تكون أخطاء صغيرة مثل الأخطاء التي تؤدي إلى تقريب الأرقام بصورة غير صحيحة ، وبعد أن تتأكد من أن البرنامج به خطأ يجب أن تتبعه وتصوبه . إن بعض المتفائلين يقولون أنه بإمكانك أن تترك هذه الأخطاء في البرنامج ويسمونها ” خصائص غير موثقة ” .
UnDocumented Features
تحديد مكان الخطأ
إن تحديد المكان الذي يختبىء فيه الخطأ هو أصعب جزء من العملية كلها ، وأبسط طريقة لذلك بل وأكثرها مللاً هو أن تشغل البرنامج وتفحصه سطراً سطراً ، أما بالنسبة للبرامج الكبيرة فإن هذه العملية قد تؤدي إلى أن يفقد الشخص الذي يقوم بها عقله . وكبديل سريع لا تفحص البرنامج بكامله وإنما إفحص الأجزاء التي تشك في وجود الخطأ بها فقط ، فمثلاً إذا كان البرنامج لا يطبع بصورة سليمة إفحص الأجزاء الخاصة بأوامر الطباعة في البرنامج .معرفة سبب الخطأعندما تتمكن من تحديد مكان الخطأ بالضبط يجب أن تكتشف سبب حدوث هذا الخطأ ، لنفترض مثلاً أن تريد من البرنامج أن يطبع إسم المستخدم على الشاشة ولكنه بدلاً من ذلك يطبع رقم الهاتف الخاص به ، في هذه الحالة يقوم البرنامج بالطباعة بصورة صحيحة وستكون المشكلة أن يطبع البيانات الخطأ ، وعندما تستخدم قواعد المنطق والإستنتاج يمكنك أن تعرف أن الخطأ يقع عندما يحاول البرنامج الحصول على البيانات المطلوب طباعتها .تصحيح الخطأبعد أن تنتهي من تحديد سبب الخطأ ستكون قد وصلت للمرحلة الأخيرة ، ولكن كن حذراً ففي بعض الأحيان يؤدي تصحيح الخطأ إلى إضافة خطأين أو أكثر إلى البرنامج ، ولكي تتعرف على هذه النقطة بالتحديد إليكم هذه المثال التقريبي :-(( تخيل أن لديك مشكلة في “السباكة” في منزلك فإن اسهل حل هو أن تكسر الحائط وتضع مواسير جديدة بدلاُ منها ، قد يؤدي ذلك إلى حل مشكلة السباكة ، ولكن تكسير الحائط قد يؤدي إلى قطع السلاك الكهربائية التي تمر داخله ، أنت بهذا قد قمت بحل مشكلة السباكة ، ولكنك وقعت في مشكلة جديدة خاصة بالكهرباء ، وقد يؤدي الغبار الناتج عن تكسير الحوائط إلى سد فتحات التهوية الخاصة بجهاز التكييف )) هل رأيتم ما يعينه والاس وانج الآن !! ؟ إن مشكلة السباكة تتضاعف الآن لذلك يجب أن تكون حريصاً عند إصلاح أحد الأخطاء في البرنامج ، على العموم قد تكون إعادة كتابة أجزاء كبيرة من الأوامر أسهل من محاولة إصلاح الأخطاء الموجودة بها .إن أسهل طريقة لتجنب الأخطاء هي ألا تقع فيها منذ البداية ، بالطبع هذه الكلام قد يبدو ساذجاً مثلما ينصحك أحد الأشخاص بأن تحتفظ بكمية كبيرة من النقود حتى لا تقع في أزمة مالية !!
إن الأخطاء أعزائي تقع في أفضل البرامج وأقصى ما يمكنك أن تطمح إليه هو أن تقلل عدد الأخطاء التي تظهر في البرامج التي تكتبها .
إن الأخطاء أعزائي تقع في أفضل البرامج وأقصى ما يمكنك أن تطمح إليه هو أن تقلل عدد الأخطاء التي تظهر في البرامج التي تكتبها .
إكتشف الأخطاء … قبل أن تفقد عقلك دفعة واحدة
يقول المبدع والاس وانج أنه حتى إذا كنت كتبت ملايين البرامج المختلفة من قبل فإنك في الغالب ستقع في بعض الأخطاء من وقت إلى آخر ، فقد تخطىء في هجاء أحد الأوامر أو تنسى جزءاً منه ، لذلك فإن البرنامج قد لا يعمل بصورة صحيحة من أول مرة بغض النظر عن مدى حرصك في أثناء تصميمه وكتابته .إن كل البرامج في العالم بها بعض الأخطاء ويشمل ذلك حتى البرامج الشهيرة جداً مثل
Netscape Navigator ، WordPerfect ، Windows
والفرق الوحيد بين الأخطاء التي توجد في برامجك والأخطاء الموجودة في البرامج التجارية هو أنك لن تجد من يدفع لك ثمن إكتشافك لأخطائك ، وإذا أعطيت البرنامج قدراً معقولاً من الإنتباه عند التخطيط له أو عند تصميمه فسوف تتجنب الكثير من الأخطاء . ويستطرد والاس وانج قائلاً لا تجعل الحديث عن الأخطاء يقلقك فالعديد من الأخطاء تكون غير ضارة نسبياً والأخطاء البسيطة لن تمنع البرنامج من العمل ولكنها قد تؤدي إلى إبطائه أو تؤدي إلى عرض ألوان غريبة على الشاشة أو تؤدي إلى ظهور الكائنات بشكل عشوائي عند تنفيذ البرنامج ، وهناك بعض الأخطاء الكبيرة التي يكون لها تأثير بشع على البرنامج ، فمثلاً تقول وكالة الفضاء الأمريكية " ناسا" أن خطأً إملائياً واحداً في أحد أوامر برنامج خاص بقمر صناعي أدى إلى إنفجار القمر وفقدان الملايين من الدولارات
سبحان من له الكمال وحده ….. فلا يوجد أي ضمان لأن يخرج برنامجك خالياً من الأخطاء تماماً ، وحتى المبرمجون المحترفون والحاصلون على الدكتوراة في علوم الكمبيوتر يقعون من وقت لآخر في أخطاء عند كتابة برامجهم .إن الأخطاء في البرامج هي من الحقائق المسلم بها تماماً مثل وجود الصراصير في مطبخك فلن تتمكن أبداً من التخلص منها جميعاً ولكن بالطبع يمكنك قتل المزيد منها .وقبل أن تبدأ عملية تصحيح الأخطاء يجب أولاً أن يكون لديك أخطاء …. أليس كذلك !
فالبنسبة للبرامج الصغيرة التي تعرض عبارات بسيطة على الشاشة لن يكون لدى الأخطاء أماكن كثيرة لتختبىء بها ، أما بالنسبة للبرامج الكبيرة يمكن أن تكون في أي مكان داخل البرنامج ، وقد تصبح عملية البحث عن الأخطاء محبطة للغاية مثل البحث عن ذبابة في ناطحة سحاب مكونة من 30 طابقاً .
عالم البرمجة المضحك
إن معظم البرامج يقوم بكتابتها مبرمجون محترفون أمضوا سنوات طويلة في دراسة البرمجة ، فهل يعني هذا أن كل برنامج يقومون بكتابته سوف يعمل دائماً ؟ يقول الكاتب الظريف والاس وانج بالطبع لا ، فهذا هو عالم الكمبيوتر الذي لا يوجد به شيء يعمل بالشكل الصحيح ، تذكر هذا دائماً ، فبالإضافة إلى أن مستوى المهارة بين المبرمجين المحترفين يتفاوت بشكل كبير ، فإن هؤلاء المبرمجين غالباً ما يطلب منهم كتابة برامج تؤدي مهام لا يفهمونها ، على سبيل المثال فقد لا يعرف المبرمجون شيئاً عن المحاسبة ومع ذلك يتم تكليفهم بعمل برنامج إدارة نظم نقل الأموال إلكترونياً في أحد البنوك ، وبالمثل فإنه قد يتم تكليف مبرمجين ليست لديهم أية مهارة أو خبرة في الطيران بكتابة برنامج لإدارة عمليات الإقلاع وتحليق الطائرات النفاثة بوينج 747 وهبوطها ، وقد لا يكون لدى المبرمجين أية خبرة أو خلفية عن الطب ومع ذلك يُطلب منهم كتابة برنامج يقوم بتحديد الجرعة الإشعاعية لمرضى السرطان ، ويتساءل المؤلف في عجب ( كيف تستطيع العمل في مجال لا تعرف عنه شيئاً ومع ذلك تحصل على أموال كثيرة ؟ ) .وفي النهاية يقول والاس وانج أن قيام مبرمج بعمل برنامج لأداء مهمة لا يعرف عنها شيئاً يشبه قيام مترجم بالترجمة من اليونانية إلى الفرنسية دون أن يعرف مجرد الكتابة والقراءة بأي من اللغتين ، وبسبب هذا التناقض في عالم البرمجة فليس غريباً أن تفقد البنوك أموالها وتقع حوادث الطائرات وتضطرب عمليات الحجز في الفنادق الكبرى .
المبرمج المثقف ... وجهات نظر
يرى العديد من المهتمين بشئون الثقافة أنها لا تعني عدد ما قراته من كتب ولا كم المعلومات التي حشوت بها رأسك ، إذ أن الثقافة ليست ببساطة سوى وجهة نظر … نعم وجهة نظر ، فأن يكون لك رأي في قضية أو مسألة ما فأنت بالمعايير الدقيقة شخص مثقف وذو توجه إيجابي ، ومن المفهوم أن الثقافة ليست حكراً على قطاع دون قطاع آخر ، فكل يسعى بأدواته وعدته وعتاده .والمبرمجون يتعين عليهم ألا يكونوا إستثناءاً من ذلك … وقليلون هم الذين يتفاعلون مع قضايا مجتمعهم ودينهم برمجياً … نعم هناك طائفة فذة إتخذت من النشر الإلكتروني والبرمجة ذات التوجه العقدي الإسلامي لها سبيلاً وأفاضت علينا بالشيء الكثير وجزاهم الله خيراً ، ولكن ما أعنيه بتلك المقالة هي القضايا الإقتصادية والسياسية والإجتماعية لمجتمعاتنا التي من الممكن أن تعكس وجهة نظر المبرمج الشخصية .كثيرون هم الذين يعبرون عن وجهات نظرهم بطرق مختلفة ، هناك الفلاسفة بحكمهم والأدباء برواياتهم وقصصهم والصحفيين بمقالاتهم وحتى رسامي الكاريكاتير برسوماتهم كما أن الشعراء يجدون بغيتهم في أبياتهم وقوافيهم ومعلقاتهم .أعتقد أنه بإمكانك عزيزي المبرمج أن تكون مثقفاً وإيجابيا بأفكار برمجية بسيطة تعبر فيها عن وجهة نظرك وقطعاً هي وجهة نظر آخريين لك يشاركونك الرأي وقد يختلف غيرهم معك جزئيا أو كلياً وهذا لا يهم كثيراً فإن الإختلاف يحرك المياه الراكدة في الساحات الفكرية عموماً ، وليس ادل على ذلك من المعارك الفكرية والسجالات العقلية التي دارت بين قطبي الثقافة العربية طه حسين والعقاد في أواسط القرن الماضي حيث كان القارىء العربي هو الفائز من تلك المساجلات .، فلماذا لا تكون مبرمجاً شاعراً وشاعرياً وإيجابياً في آن واحد …. السؤال هو كيف ؟الإجابة بسيطة … أنظر إلى إحدى القضايا التي تشغل أمتك وتحظي بقدر من إهتمامك في ذات الوقت … كون فكرة مبدئية عنها وإقرأ المزيد بشأنها ، بعدها ستتكون تلقائيا لبنة بسيطة داخل وجدانك تشكل وجهة نظر مبدئية لك ، عمق الفكرة وإجتهد في إيجاد حل لها وضعها ضمن نطاق مشروع برمجي صغير توزعه على أصدقائك والمنتديات والمواقع ذات التوجه المتعلق بهذه القضية ، فلربما أثرى برنامجك هذا نقاشاً أو حظى بدراسة أو حلقة عمل ، إن أية فكرة أو وجهة نظر جادة لم تجد طريقها إلى التطبيق ستظل حبيسة أنفاس صاحبها وأسيرة ربما لمعتقد الخجل أو الحياء من إظهارها وقديماً كانوا يقولون أن العلم يضيع بين التكبر والحياء .أتدرون شيئاً عن جمهورية أفلاطون تلك الجمهورية المثالية التي حلم بها هذا الفيلسوف .؟ في الواقع هذا الفيلسوف لم يقنع بمجرد وضع تصميم ” حلمه ” على الورق وإنما حاول أن يضع نظرياته موضع التطبيق والإختبار العملي ، فقد دعاه أمير صقلية ذات مرة لزيارة بلاده فعمد أفلاطون إلى إختبار أفكاره هناك فشرع يوحي لهذا الأمير بأرائه في كيفية حكم البلاد حكماً مثالياً ، فهو لم يكتف بالحلم أو الفكرة إنما أراد أن يراه مشروع جنين يحبو ويكبر أمامه ، إذا كان لديك إهتمام بمواضيع مختلفة وإذا فتشت في خزائن نفسك ستجد الكثير من الأفكار إقتصادياً وإجتماعياً ورياضياً حتى إن شئت ، المهم أن تعبر وتكون لك وجهة نظر ما وتكون إيجابياً فعلى أقل القليل ستبقى محترماً لذاتك وأرائك وليس كتلك الأغلبية الصامتة في مجتماعتنا ، وستجد بالتأكيد من يتفاعلون معك ويشدون على يديك .كن مبرمجاً إيجابيا مثقفاً …. ولا تخجل
البرمجة وأولويات المعرفة
لا يكفي المرء أن يكون حاصلاً على شهادة متخصصة في البرمجة من إحدى الكليات المرموقة أو المعاهد ذائعة الصيت بأي حال وأياً ما كانت لغة هذه البرمجة ليحمل بكل كبرياء لقب مبرمج ، فإن هذه الشهادة قد تعينه على تملك الأدوات وليس بالضرورة تملك الرؤى والأفكار ، من هنا تأتي أولويات المعرفة العملية والنظرية للمبرمج بواقع سوق العمل البرمجي على مختلف أنماطه وصوره ومتطلباته ، هذه الأولويات إنما تجد لها تطبيفاً من خلال قراءات المبرمج في شتى ميادين المعرفة والعلوم والخوض في تفاصيل بعض منها وذلك لكي يكون مؤهلاً لتطبيق معرفته النظرية الفنية التي إستقاها من دراسته على المعارف والعلوم التي إكتسبها ، والعكس من ذلك فإن المبرمج سيكون أكثر شبهاً بتلك اللوحة الطبيعية الجميلة المعلقة على جدار غرفة نومه ثم يستاءل في كل مرة تقع عينيه عليها ( لم لا تنطق هذه الصورة ؟ ) ، وكيف لها أن تنطق وقد غادرتها الروح ؟ إن الثقافة والإطلاع والخبرة هي روح العمل البرمجي وأعمدته التي يقوم عليها ، وبإطلالة بسيطة على البرامج الأكثر تداولاً في الأسواق فإنك ستجد عنواين كبيرة مثل (( المحاسبة – المبيعات والمخازن – شئون الموظفين – إدارة المطاعم والفنادق – الخ …. )) هذه العناوين أو البرامج لا تعمل كلها بذات الكفاءة وليست سواء من حيث الإنتشار ، وإذا دققت في أسباب ذلك فستدرك أن ثقافة المبرمجين في ذات الموضوع هي ثقافة متباينة ، صحيح أنه ليس من الضروري أن تكون متطابقة ولكن على الأقل من الممكن أن نفهم ان يكون تباينها في طريقة العرض وسرعة الوصول إلى البيانات المطلوبة وخلافه ، ولكن أن يصل التباين إلى حد المساس بما هو معلوم من الموضوع بالضرورة …. هنا تكون الآفة الكبرى فلا أتصور أن يكلف مبرمجاً ما مثلاً بإعداد برنامج للمحاسبة لإحدى الشركات ثم ينظر ملياً إلى المستخدم ويسأله (( آه … حسناً ماذا تريدني أن أفعل لك بالضبط ؟ )) هذا المبرمج إن لم يكن لديه القدر الكافي من المعلومات عما ينتوي القيام به في هذا البرنامج مثل (( الأستاذ العام – دليل الحسابات – والقيود بأنواعها – وموازين المراجعة )) فإن من الأفضل له أن يعتذر عن القيام ببرنامج لا يعلم مسبقاً كيف يقوم بإعداده ناهيك عن كيفية عمله بعد إنجازه ، لا تعني تلك المقالة أنه يتعين على المبرمج أن يكون ملماً بكل التفاصيل الدقيقة لجميع العلوم والمعارف التي من المتوقع أن تكون محلاً لإستخدام برمجي منتظر ، وإلا كان حديثنا سيكون أشبه بقائد دراجة هوائية قرر بلا مقدمات أن يكون قائداً لطائرة من نوع الكونكورد فائقة السرعة، هذا لم أقصده ولم أشر إليه ، إنما أشير إلى وجوب التحصيل المعرفي العام لمعظم العلوم ، ثم تنمية نوع أو إثنين من المعرفة تميل إليه بالخوض في تفاصيله ودقائقه ، وعليه فإنك ستكون بالتالي أقدر من غيرك من المبرمجين في ذلك النوع من العلوم ، ومن هنا فإن لقب (( مبرمج )) لا يعني في الحقيقة وفي ذاته أنك قادر على التعامل مع كافة العلوم أو حتى علماً واحداً أياً كانت مهارتك البرمجية ما لم تكن متحصناً بمعرفة جيدة ورصينة بذلك العلم . وإذا إفترضنا أنك كمبرمج لك حظاً أو نصيباً من الخيال الخصب أو الروح المرحة فأنك تكون قد حظيت بكل يحتاجه برنامجك من أسباب النجاح والإنتشار (( دراسة أكاديمية محترمة – ثقافة واسعة وعميقة – خفة ظل وجمال )) ، وحسب وجهة نظري فإن 100% من المبرمجين لا يحظون بالعنصر الثالث .
نصيحة قبل ان تصمم واجهة المستخدم لبرنامجك
من كتاب المبدع والاس وانج عن فيجوال بيسك
قال نابليون بونابرت لكي يفهمك الناس لابد أولاً أن تخاطب عيونهم
قد لا يريد أحداً أن يستخدم برامجك فإن إستطاعوا الحصول على ما يريدون بطريقة أخرى أقل جهداً فإنهم سيفعلون ولأنهم لا يجدون هذه الطريقة الأخرى فإنهم مضطرون لإستخدام برامجك . يريد الناس من برامجك أن يقرأ أفكارهم بشكل سحري وينفذ أي شيء يحتاجون إلى تحقيقه وبالطبع ذلك مستحيل ، وأحسن ما يمكن الوصول إليه هو أن تجعل برامجك سهلة قدر الإمكان ، فإن إستطاع أحد الأشخاص الذين لا يجيدون إستخدام الحاسوب ( رئيسك في العمل مثلاً ) أن يستخدموا برامجك فإن معظم الناس سيتمكنون من إستخدامه كذلك . قبل أن تصمم واجهة المستخدم لبرامجك أسأل نفسك من الذي سيستخدمه ؟ هل المستخدمون المحتملون محاسبون معتادون على إدخال البيانات ويستطيعون التعامل مع الحاسوب أم مديرون من النوع الذي يفهم فقط الإجراءات الورقية ويتعلمون إستخدام الكمبيوتر لأول مرة . وعندما تقرر من هم مستخدمو البرنامج صمم واجهة المستخدم بحيث تعكس الطريقة التي يعمل بها أولئك المستخدمون ، وكلما زاد فهم المبرمج للمستخدمين كانت واجهة المستخدم أكثر قبولاً لديهم ، فالشخص الوحيد الذي يجب أن ترضيه واجهة المستخدم هو المستخدم نفسه . يجب على واجهة المستخدم الجيدة أن ترشد الناس ليعلموا أين هم في برنامجك وكيف يمكنهم أن يخرجوا إن أرادوا ذلك ، فواجهة المستخدم تعد مثل الخريطة لبرنامجك ، فتأكد من أن واجهة المستخدم تظهر المعلومات الكافية لإرشاد المستخدم وأنها ليست بالكثيرة جداًً بالشكل الذي يحير المستخدم . إذا إتخذ برنامجك روحاً عدوانية وأخد يعرض الرسائل العنيفة مثل ((أمر أو ملف غير معروف)) كلما ضغط المستخدم على المفتاح الخطأ أو نقر بالفأرة على المكان غير الصحيح فإن المستخدم سيشعر بالرهبة من برنامجك خاصة إذا لم يشرح برنامجك معنى الرسالة الخطأ والطريقة التي يمكن أن يتجنب بها المستخدم هذا الخطأ ، فالمستخدمون يحبون البرامج التي ترشدهم وذلك يعني أنك كمبرمج ستقضي وقتاً أقل للرد على المكالمات الهاتفية للمساعدة .
أيها المبرمجون …لا تبنوا فوق الرمال
يقول والاس وانج أن كتابة برنامج يعمل بصورة صحيحة مائة بالمائة يعتبر شيئاً مستحيلاً من الناحية الرياضية ، فأولاً إذا كتبت برنامجاً يعمل مائة بالمائة فلا يوجد ضمان أنه سيعمل مائة بالمائة في أجهزة الحاسوب المستقبلية ، ولأن شركات الحاسوب تنتج أنواعاً جديدة من الماركات والمعالجات والملحقات ، فمن المستحيل أن تضمن أن يعمل برنامجك بصورة صحيحة على كل أنواع الحاسوب ما لم ترهق نفسك بالطبع لتختبر كل الأنواع المختلفة للحواسيب في العالم وثانياً إذا أردت أن يعمل برنامجك بصورة صحيحة مائة بالمائة فإنه يجب أن تضع في إعتبارك أن هذا البرنامج سيعمل مع جميع أنواع الحاسوب والملحقات وحتى مع تلك التي لم تخترع بعد ، إضافة إلى ذلك يجب أن تضع في ذهنك الإحتمالات اللانهائية التي سيتعرض لها برنامجك في أثناء الإستخدام اليومي ، وكمثال على ذلك فإن برنامجك يتعين عليه أن يحسن التصرف إذا قام المستخدم بضغط مفتاحاً ونقر الفآرة في آن واحد ، وماذا لو كان هناك برنامج آخر يعمل في الذاكرة وبالتالي يؤثر في برنامجك ، وماذا ، وماذا …… ؟بناء عليه فإن المبرمج لن يتمكن من التخطيط لكل الإحتمالات والمواقف التي يواجهها البرنامج في أثناء كتابته ، فإن كتابة برنامج يعمل مائة بالمائة كل الوقت سوف تكون دائماً عملية مستحيلة ، ويستطرد والاس وانج قائلاً أن المخيف في الأمر أن ذلك ينطبق على كل أنظمة تشغيل الحاسوب مثل ويندوز 98 ، ومعنى ذلك أنك سوف تكتب برنامجاً لا يعمل بصورة صحيحة مائة بالمائة على نظام تشغيل لا يعمل هو الآخر بصورة صحيحة مائة بالمائة ، وهذا يشبه أن تبني بيتاً على الرمال ثم تظل تتساءل لماذا يتهدم البيت مرة بعد مرة ؟ وبما أنه لا يوجد من يملك كل هذا الوقت اللانهائي لفحص كل الإحتمالات اللانهائية ، فإن برامج الحاسوب سوف تظل دائماً تحمل مشاكل تمنعها من العمل بصورة صحيحة مائة بالمائة، وهذا ينطبق على البرامج التي تكتبها أنت والبرامج التي يكتبها مبرمجو Microsoft المليونيرات ولذا … فعندما تكتب برنامجاً خصص جانباً كبيراً من الوقت للإختبار لكي تقتل المشاكل المحتملة الحيوية فيه قبل أن تعطيه لأحد ، لذلك وفي المرة القادمة التي تستخدم فيها برنامجاً لا يعمل بصورة صحيحة مائة بالمائة ، فإنك ستجد لنفسك المبرر في لوم المبرمجين لعدم كونهم أكفاء .
البرمجة أسلوب حياة أم وسيلة إرتزاق ؟

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

البرامج المبتسرة
إذا ولد طفل قبل موعده الطبيعي أصبح إصطلاحاً طفلاً مبتسراً كونه غير مكتمل النمو مع ما يعكسه ذلك من مشاكل صحية عديدة تواجه هذا المبتسر ، وظاهرة الإبتسار تلك لا تقتصر على الأطفال غير مكتملي النمو بل يمكننا ببساطة أن نحيلها على كم من البرامج التجارية التي ننتجها أنا وأنت ، الفارق بين الأطفـــال المبتسرين والبرامج المبتسرة ، أن الأطفال يولودون قبل موعدهم ربما لمشاكل صحية تواجهها الأم أو لعدم قابليتها للإنجاب بالشكل الطبيعي فتلجأ مرغمــة للعمليات القبصرية التي نعرفها جميعاً ، أما البرامج المبتسرة فهي برامج أو أجنة برامج شاء المبرمج وهو بكامل قواه العقلية وبملء إرادتـــــــــــه أيضاً أن يخرجها للحياة بعد أن ظلت مدة غير كافية حبيسة في رحم أفكاره ، ولكونها بقيت مدة غير كافية فإنها بالتالي لم تأخذ حظها من عمق الدراســـــة والتمحيص والتجريب والترتيب وستظل بالتالي برامج غير متمتعة بالمناعة الطبيعية ، وعليه فإنها لا تصمد أمام تجربة جادة من مستخدم يفترض فيه أن يكـــــون عاقلاً ، فيلجأ الأخير إلى صب لعناته على هذا الأب غير الحنون الذي لفظ قبل الأوان جنينه ربما رغبة في مكسب سريع أو شهرة زائفة دون تبصر بالعواقب التــــــي ينتجها خروج جنين للحياة غير قادر على التكيف مع متطلبات المستخدمين ، فيجب على من يتصدى للبرمجة أن يكون أباً شرعياً لبرامجه من حيث وجوب أن يتعهدها بالرعاية حتى تكون له عنواناً طيباً أو حتى ربما لتخليد ذكراه ولا تتركه في عداد الخاملين البائسين الذين تحفل بهم أسواق البرمجة للأســــف الشديد لاسيما إذا علمنا أن البرامج غير مكتملة النمو لن يكون بوسعها التمتع بميزة الطفل المبتسر الذي قد يجد مخرجاً في حضانة وتحت الرعاية الطبية المباشرة … فهل رأيتم من قبل حضانة برمجية لبرنامج غير مكتمل النمو ؟ . فيا أيها المبرمج … كن أباً شرعياً وحنوناً لبرامجك .
هل يكتئب المبرمجون ؟
مقدمة :- إن أكثر أعراض الاكتئاب ومحوره الرئيسي هو المزاج المنخفض للفرد وفقدان الاستمتاع بالنشاطات التي كان يستمتع بها في العادة ، وضعف التركيز وعدم القدرة على الانتاج والتعب بعد أقل مجهود مع الشعور بعدم الارتياح عندما يستيقظ من نومه ، وغالباً ما يستيقظ مبكراً عن الوقت الذي تعود أن يستيقظ فيه ولا يستطيع النوم مرة أخرى. كذلك تقل شهية المكتئب ولا يستطيع الأكل ويفقد الإستمتاع به وينقص وزنه. ويشعر المكتئب بالدونية وقلة التقدير للذات وعدم الثقة بالنفس. كما يشعر المكتئب في كثير من الاوقات بالذنب دون وجود سبب لهذا الشعور والذي غالباً ما يسيطر على المكتئب ويجعله يحس بأنه سبب في مصائب الدنيا جميعها وكثيراً ما يفقد المريض بالاكتئاب الأمل في المستقبل ويشعر بظلمته وأن لا أحد يستطيع مساعدته وكذلك أن لا شيء يستحق أن يعيش من أجله وتراوده الأفكار الإنتحارية . ( الفقرة السابقة منقولة بتعديل بسيط من خلالي من أحد مواقع الشبكة العنكبوتية) . على ضوء المقدمة السابقة لنا هل أن نتساءل بكل براءة عن أولئك المبرمجين ، وهل تنطبق أعراض هذا المرض عليهم ؟ . لما كانت البرمجة في ذاتها عمل خلاق وتنهض على قواعد من الإستقلالية في العمل إلى حد كبير وتقوم على قدر كبير من المرونة وتفتح آفاق واسعة لحرية الحركة الذهنية والتنقل الوجداني الجميل وتعتمد في ذاتها على قواعد منطقية عقلية ، وتفرد مساحات جميلة لأفكارنا فقد يكون المبرمجون هم أقل الأفراد العقلاء – هذا إذا إعتبرناهم عقلاء حقاً – المعرضون لهذا المرض وذلك على عكس الموظفين التقليدين الغرقي في روتين معقد وقواعد جامدة حيث لا فرصة لا للإبداع ولا الإمتياز . إن إحساس المبرمج بأنه يبدع ولو من خلال برنامج بسيط به زر أمر واحد هو زر الخروج يجعله يشعر بالنشوة والإرتياح وتقديره لذاته ، أنا شخصياً وفـــي بدايتي على أعتاب البرمجة أنشأت زر أمر واحد على فورم تعيس وكتبت في شفرته كلمة أكثر تعاسة إسمها
End
وكم كانت نشوتي عميقة وأنا أرى البرنامج يقوم بالخروج لدى ضغطي على الزر المذكور ، وكم كنت أباهي زوجتى وأولادي وأن أريهم بأم أعينهم أني على إستعداد أن أقوم بإنهاء البرنامج بكلمة بديلة إسمها
Unload me
وأخاطبهم بإستعلاء قائلاً أن مستشاري مايكروسوفت ينصحون بأن أستخدم
Unload me
بدلاً من
End
رغم عدم معرفــــتي وقتها بأهمية التفاضل بين الكلمتين . ما علينا … وبناء على ما تقدم فكونك عزيزي المبرمج مبدعاً أو حتى لديك أدني إحساس بالإبداع فهذه ضمانة كبرى لك من شأنها أن تبعدك عن داء الكآبة والمكتبئين ، ولكن هل هذا يعني أن البرمجة لا تنتج كآبة ولا تخلف وراءها مكتئبين مطلقاً ؟ الإجابة أنه وللأسف ورغم مظاهر الجمال وآيات الإبـــــداع في البرمجة فإنها تترك وراءها قطاعاً كبيراً من المكتئبين والصرعى والمرضى النفسيين وهذا القطاع ليس سوى أولئك المستخدمين البسطاء الذين وثقوا بنا وإشتروا ببراءة وعن طيب خاطر البرامج التي ننتجها أنا وأنت ، إذن فلننعم أنا وأنت أيضاً بصحة نفسية طيبة ونترك الكآبة لذلك القطاع المسكين ودعونا نلهو بأموالهم التي حشونا بها جيوبنا .
الاشتراك في:
الرسائل (Atom)
موضوعات المدونة
- عندما يأتي المساء (127)
- أوراقي الصفراء (36)
- مقالات برمجية (16)
- قول من قول (11)
- مكاتيبي (9)
- القوارير (6)
- مصر الثائرة (6)
- الآتيليه (4)
- غفوات النفس (1)
أرشيف المدونة
-
▼
2006
(17)
-
▼
نوفمبر
(17)
- إمسك مدون
- فيجوال بيسك ..... نظرة تاريخية
- خذ الحكمة من أفواه المبرمجين
- هل البرمجة علم أم فن ؟
- إكتشف الأخطاء وإحفظ عقلك
- أفضل الطرق لإكتشاف الأخطاء في برنامجك
- إكتشف الأخطاء … قبل أن تفقد عقلك دفعة واحدة
- عالم البرمجة المضحك
- المبرمج المثقف ... وجهات نظر
- البرمجة وأولويات المعرفة
- نصيحة قبل ان تصمم واجهة المستخدم لبرنامجك
- أيها المبرمجون …لا تبنوا فوق الرمال
- البرمجة أسلوب حياة أم وسيلة إرتزاق ؟
- أيها المبرمجون كيف تكتبون برامجكم ؟
- المبرمجون وقصص الصغار
- البرامج المبتسرة
- هل يكتئب المبرمجون ؟
-
▼
نوفمبر
(17)