البرمجة و الخوارزميات
- هل البرمجة فعلاً صعبة؟
- لماذا يجب معرفة وظيفة الكود؟
- ما هو إرتباط الخوارزميات بالبرمجة؟
- ما هو أفضل أسلوب شرح تتعلم منه الخوارزميات؟
- هل الخوارزميات مرتبطة بلغات برمجيّة محددة؟
- كيف أبدأ في تعلم الخوارزميات؟
- كيف أطور قدراتي في الخوارزميات؟
- من أين أتعلم الخوارزميات؟
هل البرمجة فعلاً صعبة؟
يرى البعض أن البرمجة معقدة و صعبة و هذا الأمر صحيح مئة في المئة إذا لم تُتقن أساسياتها مثل أي مجال آخر. البيت الذي لا أساس له سيُهدم عاجلاً أو آجلاً بعد معاناة من العيش فيه.
إذاً من البديهي و الطبيعي هذا التصوّر في بداية دخول الشخص إلى عالم البرمجة و خاصة عند محاولته لفهم لغة برمجية بل و التعمق بها و هو مبتدئ لا يعرف الأساسيات أو كيف يُطوّر و يُنمي مهاراته, و بالتالي من المؤكد أن يواجه الكثير من الصعوبات.
لكل برنامج فكرة، تُترجم هذه الفكرة على أرض الواقع ككود يحتوي عدة أوامر قد يصل عددها لآلاف أو حتى ملايين! و نحن كمبرمجين لا بد لنا أن نعرف وظيفة الأوامر التي نكتبها مهما كانت بسيطة أو معقدة.
إستخدام الأوامر بدون معرفة وظيفتها هو ما يجعل الشخص يرى البرمجة صعبة.
لماذا يجب معرفة وظيفة الكود؟
بصفتك مبرمج وترغب في تطوير برنامج, لعبة أو موقع فأنت ملزم بوجود تصوّر و معلومات و مخططات تستند عليها لتنفذ كافة المهام المطلوبة فيه, أي عليك أن تضع خطة مسبقة تضم كل ما يتعلق بالمشروع أو البرنامج المنوي تنفيذه من الألف إلى الياء (From A to Z).
و هنا تظهر لنا مشكلة أغلب المبرمجين: تحويل الفكرة أو المخطط الموضوع إلى برنامج متكامل!
و هنا تكمن أهمية الخوارميات ?
ما هو إرتباط الخوارزميات بالبرمجة؟
حقيقة.. قد لا تحتاج إلى تعلم الخوارزميات في بداية مشوارك البرمجي. لكن عند تعمقك في البرمجة و تنفيذك لكود معقد فالبتأكيد ستحتاج إليها لتنفيذ المهام البرمجية وفق تسلسل صحيح و متكامل كي تصل في النهاية إلى النتيجة المطلوبة.
لذلك من الأفضل لك أن تتعلم الخوارزميات قبل البرمجة فهي من الأساسيات المهمة, فهي تعلمك كيف ترتب و تنفّذ المهام وفق خطوات محددة و ممنهجة, و بمعنى آخر الخوارزميات تعلمك طريقة التفكير المنطقي الذي تحتاجه في البرمجة.
ما هو أفضل أسلوب شرح تتعلم منه الخوارزميات؟
قد تجد مدرباً يشرح الخوارزميات على ورقة أو سبورة و هذا هو أفضل أسلوب برأيي، لأنه يشرح طريقة عمل الكود البرمجي بدقة.
وقد تجد آخر يشرحها بشكل مباشر بإستخدام لغة برمجة, ولا مشكلة في هذا الأسلوب طالما أنه يشرح عمل الكود البرمجي بدقة أيضاً.
و قد تجد محتوى مسجل كفيديو. لا مشكلة إتبع الطريقة التي تناسبك و تكتسب الأفكار من خلالها.
هل الخوارزميات مرتبطة بلغات برمجيّة محددة؟
كما ذكرنا سابقاً, الخوارزميات تعلمك التفكير المنطقي الذي تحتاجه في البرمجة بشكل عام حيث أنها مجرد أسلوب ترتيب تسلسل الأفكار و الإجراءات المراد تنفيذها في البرنامج!
من هنا نستنتج أنها غير مرتبطة بلغة برمجة معينة, فنستطيع تمثيلها على ورق.. على خرائط التدفق.. إلخ، و من ثم نقوم بتنفيذها و تشغيلها بواسطة لغة البرمجة التي نتعامل معها. لذا ليس من الضروري أن تكون محدوداً ومرتبطاً بلغة برمجة معينة لتطبق و تنفّذ الخوارزميّات.
كيف أبدأ في تعلم الخوارزميات؟
برأيي، تنقسم الخوارزميات إلى قسمين:
1- خوارزميات لزيادة مهاراتك و توسيع منطقك البرمجي: غالباً ستجدها في مواقع تعلم البرمجة و أو توفر تحديات برمجية.
2- خوارزميات لتبسيط و تسهيل تعاملك مع المشاريع و البرامج: ستبرمجها بنفسك ثم تطورها عند الحاجة.
كيف أطور قدراتي في الخوارزميات؟
ركز على التمارين التي تمر عليك في بداية تعلمك البرمجة و حاول إعادة حلها بأكثر من طريقة، كتمارين: رسم شكل مثلث بالنجوم، رسم شكل مربع، رسم شكل معين، إجراء عمليات حسابية إلخ..
هذه كلها تمارين خوارزميات هدفها تطورير قدراتك في التحليل زيادة المنطق البرمجي لديك و تعليمك أكثر من طريقة للتفكير و الوصول إلى الحل, و لا بد أن ننصحك هنا بعدم الإستسلام إذا وصلت لطريق لا تستطيع منه الإكمال, بل عُد و حله من جديد و أفرغ عليه كل تركيزك.
معادلة بسيطة: كثرة التمارين و فهم كل ما كُتب سيزيد من قوة تحليلك.
من أين أتعلم الخوارزميات؟
في عالمنا اليوم و مع وجود المواقع و المنصات و غيرها نجد العديد من المصادر المتوفرة و بكثرة. أنصحك بهذه المصادر فهي مميّزة في تعليم الخوارزميات:
1- دورة مخصصة للمبتدئين:
harmash.com/tutorials/algorithms
2- دورة مخصصة لمن درس المستوى السابق و درس بعده لغة برمجة حتى يطور نفسه بالخوارزميات و اللغة التي درسها:
harmash.com/tutorials/algorithms-and-data-structure
3- مصادر أخرى (عربي + إنجليزي):
harmash.com/tutorials/algorithms-and-data-structure/useful-resources
4- موقع إنجليزي يحتوي تمارين خوارزميات و هياكل البيانات: