الفروقات بين الخوارزميات و البرمجة

كيف أبدأ تعلم البرمجة ؟ من أين أبدأ ؟ هل أبدأ بالسي أو بالجافا أحسن؟
 هل تعلم الخوارزميات ضروري لأكون مبرمجا ؟
 مالفرق بين الخوارمية ولغة البرمجة ؟ …


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

عن الكاتب

ليست هناك تعليقات:

إرسال تعليق

جميع الحقوق محفوظة © 2015 شبكة المبرمجين | Network programmers

تصميم :Mouade El Azzaou