الأحد، 11 أكتوبر، 2009

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

لغات البرمجة باختلاف أشكالها مجرد أداة من ادوات البرمجة، وتعلم هذه اللغات لا يعني انك مبرمج، قد تتعلم استخدام المتغيرات Varibules لحفظ بيانات بشكل مؤقت، أو إنشاء ملف File  لحفظ بيانات اخرى لمده أطول.

قد تفهم ما هو الفرق بين التكرار LOOP وأداة الشرط IF، تتعلم إنشاء دالة Function وبناء الكلاس Class، تشعر انك ملكت أطراف اللغة بيديك، لكن امام الاختبار الحقيقي.. تكتشف انك لا تستطيع كتابة برنامج!!

سترفض الاعتراف بهذه الحقيقة وتبدء تخط سطور برنامجك الأول، تجمع أوامر اللغة تجعلهم متراصين متجاورين فى سطور متتالية، تقدم بعضهم وتأخر البعض الآخر، تفعل كما تعلمت فى دروس اللغة، وربما تتمتم لنفسك قائلا:

هذا متغير نصي، وهذا عددي والآخر منطقي” ويأخذك التفكير فى كلمة Logic لتكتشف انك مغرم بها!!

الأرقام تعامل معاملة الحروف اذا لم نحتاجها فى عمليات حسابية” ثم تقف مفكرا هل ستحتاج لجمع هذه الأرقام او طرحها مستقبلا؟

الكلاس Class ليس دالة Function لكنه مجموعة من الدوال” تشعر انك لا تفهم الفرق بين الداله والكلاس رافعا صوتك محتج “أبو الدالة على الكلاس مع بعض”.

لا تكرر الكود، أو بمعنى اخر البرمجة ليست منتديات تنسخ وتلصق فيها” لكنك لا تبالي فأنت تحتاج هذا الكود هنا وما أسهل Copy & Paste!!!

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

لا تستغرب اذا وصلت لهذه النتيجة فالبرمجة ليست هى اللغة التي تتعلمها، سأحاول تبسيط الأمور عليك.. هل سبق لك تعلم لغة اجنبية؟ الانجليزية مثلا؟

“How do u do?”.. “What is your name?”.. “Hi guys”.. “oh my god”

ممتاز، هل تستطيع أن تكتب لي قصيده شعرية من تأليفك بالانجليزية؟ هل يمكنك تأليف قصة قصيرة أيضا بالانجليزية؟

أعتقد انك وصلت الآن لمعنى كلامي، فقد تعتقد أن البرمجة عبارة عن أمر شرط IF يسبق أمر التكرار FOR تستدعي بعدهم الدالة اكس وهكذا….

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

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

تتخيل شكل الشاشة التي سيعمل عليها المستخدم، وشكل التقارير النهائية للبرنامج.. تضع نفسك موضع مستخدم هذا البرنامج متسائلا: ماذا لو فعل كذا؟ هل يستطيع اذا لم يكن مدرب على البرنامج أن يفعل أشياء تعطله أو تمحو البيانات المسجلة عليه؟

هذا النوع من التخيل هو بداية الطريق لفهم اعمق لأدوات اللغة التي تعلمتها وطريقة ربطهم فيما بينهم لبناء البرنامج، وفي نفس الوقت هو طريقك للابداع والابتكار اذا.. اذا اعتدت على ممارسته باستمرار وتنميته بالمزيد من المعرفة، وصدقني.. كل فكره و كل معلومة ستتعلمها قد يأتي يوم تستغلها فى بناء برنامج او حل اللغز الذي يواجهك فى هذه اللحظة.

أخيرا..البرمجة كما أؤمن صناعة حقيقية لا تقل أهمية عن صناعة التعدين والحديد والصلب وتكرير البترول، لكنها أبسط مليون مرة فى متطلباتها (جهاز كمبيوتر وعنصر بشري) أما عائداتها فهي بالملايين، وفى نفس الوقت ليست حكرا على شخص بعينه أو شعب بذاته، انها أحد انواع المعرفة المتاحة للجميع Open Knowledge كما أصفها دائما.

10 التعليقات

Ahmed Tawfik يقول... 11 أكتوبر، 2009 10:11 م

فعلآ موضوع جميل يا عمرو

حازم خالد يقول... 11 أكتوبر، 2009 10:17 م

أسلوب اكثر من رائع، وشرح رائع يفهمه اي حد مهما كان مستوى تفكيره

ياريت تستمر في الأسلوب ده من الكتابة، رائع فعلاً

غير معرف يقول... 12 أكتوبر، 2009 2:03 ص

100%

عماد اجعيط يقول... 12 أكتوبر، 2009 2:52 ص

شكرا مقالة رائعة :)

نبيل يقول... 12 أكتوبر، 2009 10:26 ص

نعم. البرمجة منطق قبل أن تكون أوامر وعبارات.

كتبت موضوعاً مشابهاً في موقعي. يمكنك قراءته من هنا http://nabeel.ws/post.php?postID=38

امل عبد الواحد يقول... 12 أكتوبر، 2009 1:52 م

ماليش فى البرمجة
بس حسيت انه اسلوب حياه وكل واحد فى مجالة لازم يمشى على الخطوات دى بمنتهى الدقة والنظام ليصل الى النتيجة النهائية واللى لازم تكون شىء منطقى منمق مفهوم ذات فائدة يعنى هيا منظومة ذهنية ابداعية للحصول على ناتج مرئى
متفقة معاك تماما فى اخر فقرة عن البرمجة واهميتها خصوصا للشعوب النامية اللى ماعندهاش ثروات غير الفكر
اخيرا
اسلوب اقل مايقال عنه انه رائع

nabil13 يقول... 20 أكتوبر، 2009 1:43 م

عندك حق فعلا.
موضوع جميل
:D

عبدالرحمن اسحاق يقول... 24 أكتوبر، 2009 8:15 م

سرد رائع وأسلوب جميل في الطرح
بارك الله فيك

PHP Begginer

أحمد فارس يقول... 17 يناير، 2010 1:10 م

لا فُضَّ فُوكَ ، وَلا انْطَوَى لَكَ مِنْبَرٌ
"البرمجة كما أؤمن صناعة حقيقية لا تقل أهمية عن صناعة التعدين والحديد والصلب وتكرير البترول، لكنها أبسط مليون مرة فى متطلباتها (جهاز كمبيوتر وعنصر بشري) أما عائداتها فهي بالملايين، وفى نفس الوقت ليست حكرا على شخص بعينه أو شعب بذاته، انها أحد انواع المعرفة المتاحة للجميع Open Knowledge كما أصفها دائما."
تسلم تدوينة رائعه جداً جداً وأوضحت ببساطة يعني ايه برمجة.
انا دي أول مره أزور مدونتك ومش اخر مره ان شاء الله

M.M ALKALBANI يقول... 18 أغسطس، 2011 10:40 ص

رائع بارك الله فيك

إرسال تعليق