لماذا نتعلم الخوارزميات؟

(خاطرة كتبتها للرد على سؤال يتردد من المبرمجين و الطلاب حول أهمية تعلم الخوارزميات)

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

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

2. الخوارزميات كأساس لمواضيع متقدمة
إذا كنت ستبني نظام معقد و متطور مثل: `نظام تشغيل (Operating System)` أو نظام يعتمد على `الذكاء الاصطناعي (Artificial Intelligence)` أو أي نظام متطور آخر، فستحتاج أن تتعلم و تبتكر الكثير من الخوارزميات المعقدة. من الصعب أن تبدأ في تعلم هذه الخوارزميات المعقدة بشكل مباشر بدون أن تكون على دراية بالأساسيات. فكر فيها كما لو أنك تريد ان تعلم شخص مواضيع متقدمة في الرياضيات وهو لايعرف أساسيات الحساب البسيطة، ستكون مهمة شبه مستحيلة. كذلك الحال مع الخوارزميات البسيطة التي تتعلمها في بداية مشوارك، اعتبرها الأساس الذي تحتاجه حتى تتمكن لاحقا من الغوص في المواضيع المعقدة.

أتمنى لك رحلة ممتعة في عقول العباقرة 🙂

6 رأي حول “لماذا نتعلم الخوارزميات؟”

  1. في الصميم أستاذ مازن،

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

    تحياتي

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

  3. سؤال/ ماهي افضل الكتب التي تنصح فيها لتعلم اساسيات الخوارزميات سواء كانت عربيه او انجليزية

    وهل انا كمبرمج مواقع ومطور تطبيقات هواتف ذكية يلزم انا اتعمق في الخوارزميات ولا فقط كافي ان اتعلم الاساسيات فقط.

    وجزاك الله كل خير

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *