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