المشاركة الأصلية بواسطة علي آل ياسين مشاهدة المشاركة
بسم الله الرحمن الرحيم ،،


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


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


1- حدد فكرة البرنامج !.


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


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


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


التطبيق (التخطيط) :


طبعا هناك الكثير من الخيارات تعتمد على نقاط تلي هذه النقطة لذلك لن ندخل في تفاصيل المخطط الان و لكن بما لدينا من معلومات الان يمكننا ان نرسم مخطط بسيط لسير البرنامج باستخدام uml او هكذا على طريقة الخوارزميات :


حدد اللغات المطلوبة للترجمة -> اطلب النص من المستخدم ->اتصل بقاعدة البيانات -> ارجع قيمة النص المترجم -> اعد العملية


بسيط اليس كذلك ؟ يبدو ذلك في بداية الامر !.


يتبع ان شاء الله ،،،،،