حتى تبرمج بكفاءة

Coding

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

سيأتي تساؤل وهو: كيف أحافظ على حجم البرنامج على حساب سرعة الأداء؟

أولاً/ نعلم يقيناً أن البرنامج يحوي على قاعدة بيانات وهنا مربط الفرس، قاعدة بياناتك ستحتوي على حقول قد تصل لمئات الحقول ستخزن بداخل  هذه الحقول البيانات. لو افترضنا أن هناك  حقل اسمه Tel يحوي  هواتف العملاء، فقمت بحجز متغير من نوع Number يحوي على 50 بت. منطقياً هل يوجد رقم هاتف أو جوال يحوي على 50 خانة؟

ولو افترضنا أن لدي حقل آخر اسمه Name, اقصد به الاسم الأول فقط من اسم العميل فقمت بحجز متغير له من نوع String يحوي 50 بت. ولا مراء أن هناك اسم شخص يتكون من 50 حرف؟!

نعم هذه أخطاء قد تعيق عمل البرنامج وقد لا نضع لها بالاً، لاسيما أن استخدمنا قاعدة بيانات Ms Access التي تقوم بحجز حجم المتغير تلقائياً بخلاف قاعدة البيانات SQL التي تفترض عليك كتابة حجم المتغير. فلو تجاهلنا هذا الخطأ من البداية فكم تتوقع حجم  قاعدة البيانات قبل إدخال البيانات؟! أليس هذا عائق يؤثر في حجم البرنامج؟

ثانياً/ النقطة الثانية وهي الصور المستخدمة في تصميم الـForms. تخيل لو أني قمت بتصميم خلفية تحوي الكثير من الألوان والصور المدمجة ليصبح حجمها (وااااو) وأقوم  بوضعها كخلفية لجميع النماذج واصمم Button من نوع Image  وأقوم باستدعائه في جميع الأزرار الموجودة في البرنامج! سيسبب بلا شك ثقل في البرنامج و ارتفاع في ضغط الدم معاً.

من ناحية أخرى: لا بد من متابعة دورة حياة البرنامج، والتي تبدأ بـ:

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

في الخمس المراحل السابقة ،، من المفترض أن  تبقى في مدارها عند بداية كل مشروع جديد حتى تبرمج بكفاءة بعيداً عن الروتينية. “والمزيد من تجاربكم ونصائحكم ننتظرها هنا”

موفقين لكل خير. عساكم من عواده .. وتقبل الله منا و منكم > “بعد الزحمة”

مصدر الصورة

  • @w

    تذكر مقولة لمبرمج مشهور ..
    يقول : من يقرا كتب كيف تبرمج لن يبرمج طوال حياته ..

    مثلهم مثل الذين يقرأون كتب كيف تزيل القلق, هذه الكتب هي نفسها التي تجلب القلق ..

    شكرا على الموضوع

    • العفو أخي ..
      أوافقك بأن العمل في شيء معين يعطيك الخبرة وسهولة التعلم
      أكثر من القراءة عنه بدون فهم للمصطلحات ..

      ولاتزال نصائح و تجارب الآخرين دافع قوي لعدم الوقوع في الخطأ ذاته !

    • اختلف معك في ما قلت. فهناك كتب مشهوره و ينصح بها كبار المبرمجين مثل Code Complete و Refactoring التي تحوي معلومات تطوّر من مهارتك في البرمجة بشكل كبير.

      شخصياً قرأت كتاب Code Complete (و هو كتاب عن البرمجه بشكل عام و لا يختص بلغة معينه)، و قد تطوّرت الاكواد التي اكتبها بشكل كبير، و اصبحت منظّمة و سهلة الفهم.

      أغلب المبرمجين في هذا الوقت للأسف يكتبون أكواد معقده و صعبة و غير منظمة تجعل من ادارة و صيانة برامجهم أمر صعب.

  • mostafa

    هناك أشياء تؤثر فى حجم البرنامج أو الموقع أكثر بكثير من قواعد البيانات
    بالعكس عدم تصميم قاعدة البيانات بشكل جيد يؤثر على سرعة البرنامج أكثر من الحجم

    بالنسبة للمواقع هناك أيضا إستعمال الصور الخفيفة وحيل السى أس أس لرفع جودة الموقع مع الحفاظ على السرعة

    دمج أيقونات الموقع فى صورة واحدة مع التحكم بها عن طريق السى أس أس

    إستعمال مؤثرات الجافا سكريبت لو أمكن بدل تأثيرات الفلاش

    الأجاكس

    • إضافة مثرية بارك الله فيك

  • جميل ماذكرته حيث كثير من المبرمجين يتجاهلون هذه الاشاء الصغيرة ولذلك جميع ما ذكر يدرس في هندسة البرمجيات التي تعتمد على الدورة البرمجيةالمذكوره اعلاه وهي :

    الدراسة التحليلية
    التصميم
    التنفيذ
    التجربة
    التطوير

    • صحيح ماذكرته ،،
      تحليل النظم هذا منهج متكامل يدرس ويقدم من خلاله مشروع متكامل .

  • ما ذكرته عن أطوال الحقول هو صحيح تماما وباستخدام متحول من نوع Varchar يكون الحقل متغير وهي الأفضل
    شكرا لك

    • نعم لوكانت قاعدة البيانات مصممة بلغة SQL فإن المتغير Varchar2 سيكون هو الحل الأفضل ،، أما لوكان قاعدة البيانات مصممة بالآكسس فنحتاج تحديد طول كل حقل ..
      بارك الله فيك

  • Vexard

    معلومات جميلة جدا وخاصة المراحل التى يمر بها البرنامج فهى معلومات جديدة خاصة لمن لم يدرس البرمجة بشكل اكاديمى

  • السلام عليكم و رحمة الله و بركاته

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

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

    • و عليكم السلام و رحمة الله و بركاتة ..
      إضافة مثرية
      بارك الله فيك أخي

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

  • شيماء

    ليش ما تنشرون الاسرار بسرعة اول ما نفتح

  • 🙂 كون النقاط المذكورة من هندسة البرمجيات فهناك نقطة يجب توضيحها أن مرحلة التصميم ليس المقصود بها الصور وأشكال الشاشات !!

    في هندسة البرمجيات نطلق لفظ Desgin أو التصميم على المرحلة التي يتم فيها تحويل المتطلبات التي تم تحليلها باستخدام static and dynamic view والطريقة الأكثر شيوعاً واستخداماً عالمياً هي ال UML modeling

    شكراً على الموضوع

  • احسنت اخي ،،
    احب انوه لنقطه مهمه
    وهي مرحلة التخطيبط والتصميم
    والتي يتجاهلها كثير من المبرمجين العرب
    ضاربين عرض الحائط كل القواعد المتبعه في فين البرمجه
    لذا يجب ان نكون نحن الجيل الجديد
    الذي يغير من اتجاه البرمجه العربيه نحو الافضل ،،،

    • خالد

      احسنت هذا الكلام وفي شي مهم
      عملك هوا العاكس لك كل ماكانت الجودة عالية
      كل مانصب الشي هذا في سمعتك ومكانك
      وارتقيت نحو الأفضل

  • خالد

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

  • عبدالعزيز

    يعطيكـ العافية

    استفدت من طرحك ,,

  • مقالة جيدة جدا

    وشكرا على مجهودك

    جعلة الله فى ميزان حسناتك

  • مالفرق بين هندسة البرمجيات وعلوم الحاسب

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

    فا اي التخصصي ن يناسبني .؟؟؟

    ولكم جزيل شكري وتقديري

تعليقات عبر الفيسبوك