السلام عليكم , كنت اتسائل متى يجب تعلم الخوارزميات و ماهي فائدة تعلمها ؟ و هل يجب تعلمها قبل البدا في تعلم اي لغة برمجة ؟
و ماهي المتطلبات لتعلمها ؟ و اذا امكن مصدر للتعلم و يكون عربي
صعوبة البرمجة ليست في الخوارزميات، نادر أن تحتاج لكتابة خوارزمية معقدة إلا في أجزاء صغيرة في البرنامج، الصعوبة في تنظيم البرنامج وهندسته قبل أن يتحول لفوضى.
في الجامعات غالباً ماتقسم مواضيع الخوارزميات لمادتين: 1-أساسيات الخوارزميات، وتدرس فيها مقدمة لتحليل الخوارزميات ثم قائمة من خوارزميات البحث والترتيب. 2- تراكيب البيانات وتدرس بها المصفوفات والقوائم المتصلة والمكدس والكومة ثم أشجار البيانات.
الجزء الثاني مهم وغالباً ستحتاجه كثيراً، لكن الجزء الأول ليست بتلك الأهمية الكبيرة فهو لايعلمك كيف تكتب خوارزمية (هذه تعلمك إياها الممارسة والخبرة)، بل مجرد سرد لخوارزميات موجودة، أهم الأشياء به مواضيع تحليل الخوارزمية، معرفة الأشياء النظرية مثل معنى تعقيد الخوارزمية، كـbig-O، ومعنى الحالة الأفضل والأسواء والمتوسط، وخوارزميات البحث الخطي liner والثنائي binary. البحث والترتيب لايهم كثيراً، لأن كثير من لغات البرمجة توفر وظائف ودوال للترتيب عامة الغرض وغالباً تستخدم خوارزميات سريعة للترتيب مثل quicksort أو خوارزميات هجين مثل introsort واستخدمت فيها طرق تحسين مناسبة للغة، خذ نظرة سريعة عليها، ومتى ما احتجتها، يمكنك العودة لها.
هناك موضوع تهمله كتب ومناهج الخوارزميات وتراكيب البيانات وهو طريقة عمل الذاكرة وأنواعها مثل الـsram و dram والتخزين المؤقت في المعالج cpu cache، فهمه سيوضح لك لماذا بعض الخوارزميات وتراكيب البيانات ممتازة نظرياً لكن عند التطبيق تجد أداءها سيئ.
التعليقات