لا بد وأن الكثير منا قد سمع عن كلمة خوارزمية، فما المقصود بهذه الكلمة، ولماذا أطلق عليها هذا الاسم؟
تعرف الخوارزمية على أنها مجموعة نهائية من الخطوات الواضحة لحل مشكلة ما، أو الخوارزمية هي مجموعة منتهية من التعليمات والتي باتباعها يتم إنجاز مهمة محددة. هذه التعليمات يجب أن تكون محددة و خالية من الغموض كما يجب أن تكون بسيطة يمكن تطبيقها (من حيث المبدأ) من قبل أي شخص باستخدام الورقة و القلم فقط.
تعود تسمية الخوارزميات بهذا الاسم إلى العالم العربي محمد بن موسى الخوارزمي الذي كان أول من ابتكر مفهوم الخوارزمية في الرياضيات، إذ أنه كان أول من لجأ إلى حل المعادلات من الدرجة الثانية بمجموعة خطوات منطقية، ولنبسط المفهوم بشكل أكبر نستطيع القول أن الخوارزمية هي مجموعة الخطوات التي تنفذ فعليا، فعلى سبيل المثال إذا كانت المسألة التي تعترضنا إيجاد القاسم المشترك الأكبر لعددين فستكون خطوات الحل هي التالية:
1- حساب مجموعة قواسم العدد الأول على شكل جداء أعداد أولية.
2- حساب مجموعة قواسم العدد الثاني على شكل مجموع جداء أعداد أولية.
3- الحصول على ناتج جداء القواسم المشتركة بين العددين بأصغر أس لها.
قد تبدو هذه الخطوات هي المتبعة لحل المسألة إلا أنها لا تمثل خوارزمية، لأننا ببساطة لم نستوف أحد الشروط الواجب توافرها في الخوارزمية، ألا وهو الخلو من الغموض، فمثلا الخطوات السابقة لا توضح كيفية الحصول على مجموعة قواسم كل عدد، ولا الطريقة التي يتم بها الحصول على القواسم المشتركة بين العددين بأصغر أس لها، ولتفصيل الخطوة الثالثة مثلا علينا كتابة الخطوات المتبعة للحصول على القواسم المشتركة بالتفصيل كما يلي:
1- البدء بأول قاسم للعدد الأول
2- إيجاد عدد مرات تكراره بين مجموعة قواسم العدد الأول
3- مقارنة هذا العدد مع مجموعة قواسم العدد الثاني، وفي حال وجود نفس العدد ضمن مجموعة قواسم العدد الثاني فعلينا حساب عدد المرات التي تكرر فيها هذا القاسم في مجموعة قواسم العدد الثاني
4- مقارنة عدد التكرارات في العدد الأول والعدد الثاني، والاحتفاظ بقيمة التكرار الأقل بينهما
5- تكرار الخطوات الثلاث السابقة بالنسبة لباقي قواسم العدد الأول
6- الحصول على جداء القواسم الناتجة مع بعضها وفقا للتكرار الأقل بينها.
الخطوات السابقة الآن أصبحت توضح كيفية الحصول على ناتج جداء القواسم المشتركة بين العددين بأصغر أس لها، ولكتابة الخوارزمية الخاصة بكامل العملية علينا العودة مجددا إلى الخطوتين الأولى والثانية لإيجاد مجموعة قواسم كل عدد على شكل جداء أعداد أولية وتفصيلها كما فعلنا مع الخطوة الثالثة.
بعد الانتهاء من ذلك نكون قد حصلنا على خوارزمية قابلة للتطبيق، ونعني بقابلية التطبيق إمكانية الحصول على النتيجة المطلوبة من الخطوات السابقة دون أي معرفة تقنية بما يجري، فالخوارزمية يجب أن توضح كيفية الحصول على القواسم الأولية للعدد، وليس ذلك من شأن الذي سيستخدم الخوارزمية لاحقا للحصول على النتائج المطلوبة.
يبرز استخدام الخوارزميات بشكل رئيسي في علوم الكمبيوتر، وبشكل خاص ميادين البرمجة، حيث تتم دراسة كافة المسائل المطلوب برمجتها وتحليل الخطوات المنطقية الواجب اتباعها للحصول على الحل المطلوب، ويتولى كتابة الخوارزميات فريق خاص مستقل عن المبرمجين، في حين تنحصر وظيفة المبرمجين في تحويل الخوارزمية إلى كود برمجي دون الاحاجة للاطلاع على أية تفاصيل أخرى، إذ أن خطوات الخوارزمية كما ذكرنا تكون مشروحة بالتفصيل.
لكن تطور العلوم البرمجية دفع بمفهوم الخوارزمية إلى معان جديدة، وبعد أن كان تصميم البرنامج يعتمد على كتابة الخوارزمية وتحويلها إلى كود برمجي أصبحت العملية أكثر تنظيما، إذ أصبحت مهمة التعرف على الوظائف الخاصة بالبرنامج تقع على عاتق فريق خاص يطلق عليه اسم ''محللي النظم''، في حين أصبحت دراسة هذه المتطلبات ''بشكل مفصل'' ووضع الخطوات المفصلة لتنفيذها تقع على عاتق فريق آخر يطلق عليه اسم ''مصممي النظم''، وبعد أن كانت الخوارزمية تكتب باللغة المحكية أصبحت تمثل بمجموعة من الرسوميات والأسهم والعبارات المقتضبة التي تقدم للمبرمج، وهذا الأخير بدوره يستطيع تحويل هذه الرسوميات إلى برنامج دون الحاجة لأية معلومات إضافية.
هناك العديد من الخوارزميات الجاهزة التي لا تتطلب من القائمين على تطوير البرامج كتابتها من جديد، حيث أصبحت هذه الخوارزميات معتمدة على مستوى العالم، فمثلا إذا تطلب البرنامج ترتيب مجموعة من الأرقام فبالإمكان الاعتماد على خوارزميات الترتيب الشهيرة كخوارزمية الترتيب بالفقاعات بدلا من البدء من نقطة الصفر.
مجلة ويندوز