الخوارزميات و Data Structures

  • wada3n

السلام عليكم

أخواني تبادر إلى ذهني سؤال لجميع المبرمجين هنا ومن لهم باع في عالم الأرقام

  • مامدى تعلمهم لأسس الخوارزيمات وهياكل البيانات بعيدا عن لغات البرمجة ؟

أقصد كمحترف للبايثون هل سمعت يوما بالــ Big O ؟

وكداهية في الروبي هل مرت عليك nondeterministic polynomial time في يوم من الأيام ؟

مامدى درايتكم إخواني بقوائم الانتظار ؟ وخوازيمات الترتيب والبحث ؟ غير تلك المُنجزة والمتوفرة في لغات البرمجة التي تتعاملون بها .

إلى مدى تتقون الـ Recursion في تحليل المشكلة والاستفادة منها /

مجمل القول

هل تعلم أساسيات الخوارزميات وهياكل البيانات أولى بالمرء البدء بها وتعلمها بمتانة وقوة؟

أم الدخول مباشرة إلى لغات البرمجة كالبايثون وجافا وسكالا وغيرها حسب الحالة والرغبة .

(بناءً على تجاربكم لا على مايقتضيه الحال أكاديميا )


كل ذلك مر علي وتعلمته اكاديميا وذاتيا. وفي اعتقادي الشديد انها ضرورية ولا يمكن للشخص ان يكون مبرمجا حقيقيا بدونها لأن المبرمج يجب ان يكون قادرا على حل المشكلات Problem Solving وهذه اساسيات لحل المشكلات بطرق رياضية وهيكلية بالاضافة إلى دورها في حل مشاكل وقت التنفيذ والآداء.

وقد تظهر الحاجة لها في المشاريع الصغيرة والكبيرة على حد سواء. في آخر مشروع لي اظطررت إلى تكوين قائمة شجرية Tree والآخر يسبقه اظطررت الى استخدام هيكل Graph وكما ترى فكلما عملت على مشكلات اكثر كلما اكتشفت انك بحاجة للعودة إلى لما تعلمته عن هيكلة البيانات وخوارزميات عملياتها.

ورغم ان هذه الهياكل والخورازميات معظمها قد تم تضمينه بطريقة مسهلة للاستخدام في لغات البرمجة Encapsulated (بإخفاء التفاصيل) غير انه لا يمكن استعمالها بدون ان تكون لديك معرفة عن السبب الذي تستخدم لأجله وكيف تستخدم فعليا.

كي تعد مبرمجا صحيحا يجب ان تلفت نظره إلى كل من :

  • هياكل البيانات Data Structure

  • الخوارزميات Algorithms

  • حل المشكلات Problem Solving

  • التعقيد Complexity

فعلا أخي بداية من المشاريع الصغيرة في ترتيب ليست إلى غاية خوارزمية ديجيكسترا نحتاج لتعلم الأسس المتينة

أشكر لك إسهامك المفيد