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

  • wada3n

السلام عليكم

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

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

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

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

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

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

مجمل القول

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

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

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

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

مجهول
  • حذف بواسطة المستخدم

نِعْمَ الأخ النّصوح أنت. بارك الله فيك أخي

الكتاب هو الذي يصاحبنا في منهاج الكومبليكستي هذا العام وهو من أروع ماقرأت صراحة في ميدانه

وللمهتمين بالكتاب هذا رقمه: ISBN 13: 9780262033848

هناك أيضا حزمة دروس من o'reilly بعنوان Learning Data Structures and Algorithms

كبداية مفيدة جدا برأيي للمتقدم إلى هذا الميدان

أشكر لك إسهامك الرائع أخي

مارستها عملياً وبإذن الله الكورس القادم في الجامعة سوف اخذ هذه الماده

بالتوفيق لك اخي في دراستك

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

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

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

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

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

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

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

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

  • التعقيد Complexity

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

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

انها مهمة للغاية وأفضل طريقة لتحسين مهارتك في حل المشاكل والخوارزميات وهياكل البيانات هي التمرن علي حل الكثير من المشاكل علي مواقع online judges

لقد ساهمت ببعض المعلومات عن هذا الموضوع في مجتمع IO من قبل :

أخي سليمان حماك الله

موضوعك في غاية الأهمية وفعلا مسابقات كهذه تقوي الذهن وتوسّع طرق الحلول

والبحث عن المشاكل في هذا الميدان هو السبيل للاستفادة والتعلم الأقوى ..

ماينقصنا كعرب هو الدليل

تجد الغالبية العظمى يتجهون اتجاها معينا كتطوير الويب فيتبعه الآخرون ربما كوسيلة عيش أو كهواية وولع لا أجزم بشيء

لكن دائما ماأستشهد بخوازمية الجمل في الكريبتوجرافي .أقصد أن لدينا عقولا نيرة في الميدان .. نريد جملا جديدا بل جمالا فعلا

سلمك الله أخي

لم افهم قصدك جيدا ولكن أذا كان قصدك علي مصادر للتعلم باللغة العربية فهناك

قناة علي اليويتوب

وهذه افضل playlist للبداية

ويوجد جروب جامعة القاهرة سوف يساعدونك اذا وجهت مشاكل اثناء الحل

شكرا أخي بعد إذنك سأضع المصادر لأحد الإخوة ليستفيد منها

مقصدي أننا كعرب نحتاج لفتح أذهاننا على مثل هذه الأمور وألانحصر فقط أنفسنا في ميادين معينة .

دخول مسابقات والعمل على خوارزميات معينة باستمرار يقوي لدينا عدة جوانب في مستقبلنا المهنى والعلمي

وهي ليست حكرا على الغرب إطلاقا

بوركت

بالطبع لك كامل الحرية في مشاركة المصادر

مهمة جدا خصوصا هياكل البيانات (linked lists - Btrees ....)

لكني نسيت ذلك مع مكتبات Boost الضخمة!

ألا تعتقد أن هذا يقيّدك أخي

ربما لو تطل خارج سياج C++ دون البوست تجد نفسك تائها ؟؟

أجل صدقت، لكن طبيعة العمل تتطلب الوقت (برامج رياضية تفيدني احيانا)