ما دور الخوارزميات في لغات البرمجة؟
هل تساءلت يوماً عن السر الذي جعل أغلب المبرمجين المحترفين لهم علاقة قوية بعلم الخوارزميات؟ و هل سألت نفسك هذا السؤال : أنا مبرمج لماذا اتعلم الخوارزميات؟ كُن معي اليوم حتى تعرف هذا السر الكبير.
حتى تعرف ما هو السبب لا بد أن تعلم تماماً ما هي الخوارزميات، بصورة مبسطة جداً الخوارزميات هي مجموعه من الخطوات التي تطبق لحل مشكلة ما ، إعلم أولاً أن الخوارزميات هي مسألة تسهيل وتبسيط للمشكلة وليس مسألة إيجاد حل أو دواء للتخلص من الداء، هل أنت معي؟ سأوضح لك بمثال.
لحساب معادلة ما مثلا Y=x2/2x تبدأ الخوارزمية بحساب المقام أولا و تتأكد أنهُ لا يساوي الصفر (تسمى خطوة إتخاذ قرار) ثم تحسب ضعف العنصر (x)، ثم تحسب مربع العنصر (x) ثم بعد ذلك تقوم بحساب ناتج القسمة. الخطوات السابقة بإمكانك إعتبارها خوارزمية بسيطة لحل المعادلة أعلاه، هذا يعني أننا (بسطنا) حساب المعادلة فقط ولم نعدل في المعادلة في حد ذاتها، أليس كذلك؟ إذن الخوارزميات هي للتبسيط والتسهيل وإختصار الوقت. كما ذكرتُ لك و احفظ هذا عن ظهر قلب (الخوارزميات من أجل التبسيط).
من المشاكل التي قد يواجهها كل من يرغب بتعلم لغات البرمجة (C/C++/JAVA/VB.NET) هي الصعوبة الأولية في فهم هته اللغات خصوصا أنه يتوجب عليك أن تخاطب الكمبيوتر و أن تشرح له مايقوم به بأكواد و اسطر برمجية . ولكي تقوم بهته الخطوات يتوجب أن تكون أنت أولا فهمت مذا تريد أن تشرح للكمبيوتر حتى تستطيع أن تكتبه بالمنطق البرمجي .
فمن الأساسيات التي سوف تتعلمها حينما تدخل إلى أي معهد خاص بتعليم البرمجة تقنية تسمى بالخوارزميات (Algorithms) .
ماهي الخوارزميات ؟
الخوارزمية (Algorithms) هي مجموعة من الخطوات الرياضية و المنطقية المترابطة فيما بينها و التي توصلك إلى حل مشكلة ما . سميت بهذا الإسم نسبة إلى العالم المسلم أبو عبد الله محمد بن موسى الخوارزمي الذي ابتكر هته الطريقة في القرن 9 ميلادي .
الغاية من الخوارزميات هي جعلك تفكر ببساطة و بمنطق رياضي , فكما تعلم فمن الصعب قليلا أن تفكر بشكل بسيط لكوننا أشخاص نستطيع بكل بساطة ان نوصل المعلومة لأشخاص امثالنا لكن هذا يختلف بالنسبة للحواسيب فهي لاتفهم لغتنا و لكي نخاطبها فيتوجب علينا تعلم لغاتها وهي لغات البرمجة ولكي نبرمج بهته اللغات يجب أن نتعلم الخوارزميات حتى تساعدنا على تعلم هته اللغات بكل سهولة .
ما هو دور الخوارزميات حتى تنال تلك الأهمية؟!! هل تعلم أن الخوارزميات لها أثر كبير في سرعة تطور مجال البرمجيات و إحداث طفره كبيرة فيه؟ فاليوم تستطيع البحث في مليارات الملفات في ثوانٍ معدودة وتستطيع حساب كل العمولات البنكية أيضاً في ثوانِ وهذا يرجع للتقدم الكبير في علم الخوارزميات. و أقربُ مثال لهذا التقدُّم هو الصراف الآلي، هل تذكر تلك الصُّفوف الطويلة من أجل صرف مبلغ بسيط؟!! قديماً كانت مسألة صرف المرتبات فقط تستهلكُ الكثير من الوقت والقوى العاملة والأوراق التي تُعبأ يدوياً مع إحتمال وقوع الأخطاء البشرية. لكن اليوم وبفضل الله ثم الخوارزميات أصبحت عدة ضغطات بالأزرار فتستطع السّحب من حسابك في البنك ويُخصم المبلغ من رصيدك في ثوان فقط. و لْتعلم أيضاً ان عتاد الحاسب تطور تطوراً كبيراً في السّنوات القليلة الماضية على عكس البرمجيات التي تتناسب معها. هذا التطور صَنع إهتماماً و توجهاً لتطوير الخوارزميات لتتماشى مع هذا التطور في العتاد.
ما دور الخوارزميات في لغات البرمجة؟ الآن سأنقلك لصُلب الموضوع، حسناً، إذا أردت أن تحل مسألة معينة وتقوم بالتعبير عنها بلغة البرمجة التي تريدها، ماذا تفعل؟ إنك ستضع خُطواتٍ للحل أولاً في رأسك، هذه الخطوات هي الخوارزمية التي تبني عليها الحل الخاص بك، يمكنك التعبير عن هذه الخطوات عن طريق اللغة التي تريدها وبكلمات بسيطة تفهمها أنت أو يمكنك التعبير عنها عن طريق الأشكال المتوافق عليها لتُسهيل العمل عليك، مثل ما يحدث عند الحوادث المرورية – حفظك الله – يقوم شُرطي المرور برسم خوارزمية الحادث وفق شكل متفق عليه و هو كروكي الحادث، و لإستخدام الأشكال المتعارف عليها في علم الخوارزميات عليك أولاً وضع خُطة الحل والأشياء التي تُساعدك على الحل والناتج المتوقع.
إستخدام أشكال الخوارزميات لعمل مخطط إنسيابي:
- نستخدم هذا الشكل في بداية ونهاية الخوارزمية.
- نعلم بالتأكيد في أي مشكلة هناك أمور تُساعدك على الحل ونتفق أن نسميها مدخلات للخوارزمية والحل الناتج بعد استخدام الخوارزمية يسمى مُخرجات. كلا المدخلات والمخرجات تكتب في شكل متوازي الاضلاع.
- إذا كانت خُطوات الحل الخاصة بك تتطلب بعض العمليات الحسابية او بعض العميات الأُخرى التي تريد تنفيذها فيجب ان تضعها داخل شكل المستطيل.
- إذا واجهتك خطوة تتطلب إتخاذاً للقرار استخدم هذا الشكل لتمثيل ذلك القرار حيث السهمين في الجوانب يبينان مسار كل قرار.
- توجد بعض المسائل الكبيرة تتطلب خطوات حل كثيرة جداً. يُمكنك إستخدام شكل الدائرة لربط الخُطوات مع بعضها البعض .
هذه هي الأشكال أو الرموز التي تحتاجها لتمثيل خطوات الحل (الخوارزمية) بيانياً , هل تعلم الآن لماذا يجب عليك كمبرمج تعلم الخوارزميات؟ ليس بعد؟ حسناً، هل تعلم أن الخوارزميات هي أساس كل لغات البرمجة؟ فعمليات الجمع المعقدة تتطلب خوارزمية و عمليات ترتيب العناصر تستخدم الخوارزميات أيضاً، لك أن تتخيل أن أي عملية مهما كانت معقدة او بسيطة تستخدم خوارزمية، ومعرفتك الجيدة بالخوارزميات هي التي تُميزك عن بقية المبرمجين. لماذا؟ كل مستخدم يريد تطبيقاً سريعاً وسهل الاستخدام، فللوصول لهذه النتيجة ليست تكفيك معرفة جيدة بالخوارزميات -كلا- بل أيضاً طريقة تطبيها و معرفة طُرق إختيار الأنسب منها .
كما تُستخدم الخوارزميات لتسهيل العمليات المعقدة و إختصار الزمن، فيجب عليك إختيار الخوارزمية بحيث تُسهّل عليك العمل وتستهلك وقتاً أقل.
ماذا أعني بالإختيار الأنسب؟!! توجد خوارزميات سريعة جداً في حالة المدخلات البسيطة لكن إذا كثُرت هذه المدخلات فإنها تفشل وتأخُذ وقتاً طويلاً. كما توجدخوارزميات تكون عمليةً في حالة المدخلات الكبيرة ولكن يجب أن لا نستخدمها في حالة المدخلات البسيطة لأنها تأخذ وقتاً أطول، إذاً الإختيار الجيد للخوارزمية نفسها يميزك عن بقية المبرمجين.
الآن تعلم لماذا تحتاج -كمبرمج- لتعلم الخوارزميات فإذا أردت أن تُنشئ برنامجاً لآلة حاسبه فقط، فإنك ستستخدم الخوارزميات بحيث تقوم بالعمليات من جمع و ضرب و غيرها و إتخاذ القرار (ذُكر في المقالة سابقاً ) مع توفر المدخلات (الأرقام المراد إجراء العمليات عليها) للوصول إلى الناتج المطلوب. وتستخدم الخوارزميات لتسريع تنفيذ البرنامج. وقبل إنشاء أي برنامج يجب عليك تجهيز الخوارزمية المناسبة التي تتناسب معه.
نخلص إلى أنهُ مهما كانت لُغةُ البرمجة التي تُريد تعلمها فعليك الإلمام بعلم الخوارزميات أولاً ليَسهُل عليك فهم لغة البرمجة بحد ذاتها و لتساعدك أيضا لتطبقها على الحياة الواقعية. فالواقع لا يخلو من الخوارزميات وما البرمجة إلا تسهيل وتبسيط للمشاكل التي تواجهنا في الواقع
ما دور الخوارزميات في لغات البرمجة؟
Consuitech
on
الثلاثاء, مارس 07, 2017
ليست هناك تعليقات: