قصتي مع الخوارزميات والبرمجة!

في بداية السنة الأولى من التعليم الثانوي كنا في لقاء مع مادة دراسية جديدة، إنها "المعلوميات"

لم تكن لدي نظرة واضحة عن هذه المادة كنت فقط أعرف أن لها علاقة بالحاسب الآلي،

وفي أول حصة وجدت أستاذ شاب وسيم، وعرفنا على المنهج العام والمواد التي سندرسها خلال السنة الدراسية، بعد مرور الفصل الأول درسنا بعض المفاهيم البسيطة عن الحاسب الآلي ومكوناته،

وبحلول الفصل الثاني بدأنا في دراسة الخوازميات، وهنا تبدأ القصة،

تعرفنا عن مفهوم الخورزميات وكنا نقوم بكتابة هذه الخوزميات على الدفاتر وكان أمرآ لطيفا 😅 الدروس كانت نظرية ولم أكن أعرف فائدتها فقط أحفظ من أجل الإمتحان

بعد الإنتهاء منها بدأنا ندرس لغة برمجية تسمى باسكال كانت لغة بسيطة ولكن هنا فعلآ بدأت أفهم دروس الخوارزميات التي كنا ندرسها ، بعدها بدأت أستغرب لماذا درسنا الخوارزميات كان بإمكاننا الدخول مباشرة للغة برمجية ، وعندما كنت أسئل المدرس كان يقول لي إنها ضرورية قبل بدأ اي مشروع علي أن أقوم بكتابة خوازمية لكن لم أجد للأمر داعي فبإمكاني أن أبدأ في البرمجة مباشرة وأكتب الكود وأنا أخطط في نفس الوقت ،

بعد إنتهاء السنة الدراسية بدأت بتعلم لغة البايثون ومازلت معها حتى الآن إنها حقا رائعة.

ما رأيكم في الخورزميات هل هي ضرورية بالنسبة لكم ؟

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

التعليقات

الخوارزمية algorithm هي مهمة جدا لانها تمثل كيفية البرمجة بغض النظر عن اللغة المستخدمة

هي ضرورية جدا خصوصا للمبتدئين

و حتى للمحترفين كي ينظموا عملهم بشكل جيد ويكون مفهوم من قبل الاخرين

الخورزميات هي تجريد للكود البرمجي فهي صياغة المشكلة بشكل مفهوم وبسيط كتابتك للخوازمية بلغة برمجة معينة يجعلها مفهمومة لمن درس تلك اللغة ولكن تجريد الخوازمية في أحد أشكالها القياسية flowchart أو Pseudo code يجعل الخوازمية مكتوبة في صورة قياسية يسهل فهمها على نطاق واسع بعض النظر عن اللغة البرمجة، كإشارات المرور تكون مفهومة بعض النظر عن اللغة التي تجيدها لأنها مكتوبة بلغة قياسية.

بدأت في تعلم البرمجة منذ قريب وبعد أن تخطيت الخوارزميات، وجدت أن كتابة الخوارزمية قد تسهل علي كتابة الpseudocode، لكن ليست مهمة عند إنشاء الكود الفعلي، بمعنى أن أقربهم عند التطبيق العملي كان الpseudo code، لذا فكرت إن أنشأت الشفرة الزائفة على الورق لتسهيل وتنظيم الخطوات بعد ذلك ألن يكون كافيا دون استخدام الخوارزميات أو flowchart، ما رأيك من واقع خبرتك؟

  • أرى استخدام الـ flowchart يقتصر عند طرح فكرة الخوارزمية للغير -لا يجيد اللغة البرمجية التي تكتب بها- أو في أوراق بحثية، لكن في الواقع العملي ستكتب الكود مباشراً لأنه سيكون في هذه الحالة يعبر عن الخوازمية باللغة التي تقوم بالبرمجة بها -لأن كل أدوات ال flowchart متوفرة في لغات البرمجة ( شروط، حلقات تكرار، متغيرات، إدخال، إخراج، إلخ) -، فلا أظن أن أحد يستخدم الخوازميات بصورتها المجردة قبل الشروع في كتابة الأكواد الفعلية في مشروع باستخدام لغة معينة.

هل شعرت مرة ان الكود الذي كتبته كان يمكن ان يكون افضل؟ او هل اكتشفت انك تقع في اخطاء وفي دوامة من الاصلاح والخطأ والاصلاح والخطأ؟ أو هل شعرت انك كتبتك كود في مشروع سابق! لكنك اعدت كتابته في مشروع جديد ولم تستطع استخدام ما كتبته سابقاً (لم تقم بعملية اعادة تدوير لما صنعته)؟

اذا كانت كل اجابتك هنا نعم

فانت تبدو مثل المبرمج الذي تعلم من الانترنت

وفقدت فائدة هندسة البرمجيات وكذلك الخوارزميات

الخوارزميات بشكل اساسي تهتم بكفاءة الكود الذي تكتبه، وتعطيك نظرة عامة عن كيف ستبدو النتيجة النهائية، تكتشف الاخطاء وتصلحها مباشرة! ويمكنك اعتبارها مرحلة التخطيط.

واثناء كتابة الكود انت ستقوم بتحويل هذه الخوارزمية الى نصوص برمجية، بدون الحاجة للتفكير اثناء الكتابة لانك ضمنت ان عملك جيد وستصرف الوقت الان في التنفيذ لا التفكير.

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

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

أليست لغات البرمجة عبارة عن الخوارزميات؟!

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

أعتقد أن الخورزميات هي عبارة عن خطوات يتم وضعها وذلك لحل مشاكل قد تواجهك أثناء معالجتك لموضوع معين

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

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

خوازمية إسم:

المتغيرات

ج = 18

البداية :

أكتب("عمرك") ؛ أقرأ(العمر)

إذا كان العمر > ج :

أكتب("أنت شخص راشد")؛

وإلا :

أكتب("أنت شخص ليس راشد")؛

نهاية.

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

الغريب ان تعمل بمجال البرمجة و لا تعرف ما هي الخوارزميات

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

اتفق مع المدرس، فالخوارزميات ضرورية جدا لشخص مبتدئ تساعد على تعلم البرمجة بالطريقة الصحيحة، وتبسط كذلك المفاهيم بالنسبة للأشخاص الذين لا يستوعبون بسرعة لغة البرمجة مباشرة يمكن أن نقول أنها تعتبر شيء أساسي بسيط .. مع أن الكثير من الأشخاص "الذين لو يدرسوها في الجامعات أو دورات من البداية"لا يعرفونها وبدؤوا مباشرة بلغات البرمجة.

ما رأيكم في الخورزميات هل هي ضرورية بالنسبة لكم ؟

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

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

الخورزميات مهمة جدا ...

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

لنفترض انك تعمل مبرمج في معمل ميكرويفات ( الافران المنزلية التي تسخن باستخظام الامواج الميكرو مترية ).

ثم كتبت عام ٢٠٠٠ خورزمية عمل الجهاز ... الادخال و الاخراج والمؤقت و خورزميات الحماية وووو

ثم تم تنفيذ البرمجب بلغة ديلفي

بعد ٣ سنوات تم الانتقال الى C ثم تم الانتقال للغةC++

ثم لغة جافا ثم لغة بايثون ...

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

ربما ضمن الخورزمية تم وضع طريقة تحمي الجهاز من الانفجار بعد سنوات من الخبرة و التجارب.

هذا يسمى بناء الخبرة ... واعتقد ان الخورزميات تعتبر من اسرار العمل ...

ومن الغباء كتابة البرمجة من الصفر عند تغيير اللغة بدون وجود مرجع ..(. وبينتظر المبرمج حصول مجموعة من الانفجارات حتى يعلم الطريقة الصحيحة من جديد)

مجهول أضف ردا

انا نفس المجهول.

هل تجد مهندس المعماري ينزل الى ورشة البناء ويطلب من العمال البدء بصف الحجارة لبناء مشفى ؟

او تجد ان المهندس يضع خطة كاملة على الورق وبدقة لمعرفة موضع كل غرفة و توزيع الاحمال في البناء واجراء حسابات الاساسات ويستمر التخطيط ل٦ اشهر قبل وضع حجرة واحدة .

يجب على المبرمجيين البدء بالعمل بطريقة مهندسي العمارة والمدني والكهرباء ...

وليس القفز فورا لجمع الحجارة والخروج بمنتج فاشل ( مثلما يفعل تجار البناء المخالف الخالي ...

الخوارزميات ما هو الا تحليل للكود البرمجي

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

مثلا تريدان تبرمج كود يعكس مكونات مصفوفة

لاول مرة في حياتك سيكون الامر صعب لكن بعد التخطيط و الخربشة في ورقة ستجد الحل بالضبط

ااخورزميات مهمه وباختصار غير مُخل هي وضع الخطوات لحل المشكلة ومن ثم كتابتها علي شكل كود والبرمجة في الاساس هي حل لمشكله.

ربما لا تحتاجها في البرامج الصغيره لانك تضع الخطوات في ذهنك وتبدا بالكتابة

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

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

جميل أن تتعلم علم الحوسبة في هذا السن مع أستاذ خبير..

أتذكر في مراحل التعليم الأساسي، كانت حصص الحاسب تقتصر على تعلم استخدام تطبيقات ميكروسوفت وبرنامج الرسام دون تغيير في المنهج مع مرور الأعوام، حتى عندما بدأنا في البرمجة بدأنا في حفظ أكواد متقدمة جدا دون عِلم بالأساسيات ولم نسمع عن الخوارزميات ولا حتى لغة pseudocode!  وأذكر أننا جميعا كنا نكره الحاسب الآلي وبالكاد ننجح بالمادة، لم يكن أحد يلقي بالا للمادة وكانت فقط للنجاح والرسوب..

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

ربما تكون نظرتي قليلة الخبرة فأنا لست متخصصة في المجال، وحدودي عند لغة c++، لكنني -وحسب خبرتي المحدودة- عندما عملت على تحسين فكرة معينة وقياس كفاءتها بعد تعلمي للغة c++ احتجت للخوازميات حتى أحلل مكان الخلل منطقيا ومن ثم أترجم ذلك بلغة c++...

من تجربتي أدركت أهمية الخوازميات ولغة pseudo code لفهم وتبسيط هذا العلم، وجعله أكثر متعة واختبار الكفاءة للبرامج المعدّة.

نعم الخوارزميات ضرورية للمبرمج ولا غنى له عن تعلمها وكلما تعمقت في تعلمها تمكنت من تنفيذ برامج أعقد.

تريد ترتيب عناصر مصفوفة مثلًا، من دون معرفة بالخوارزميات قد تجد الحل يومًا وما ولكن هل تضمن أن يكون الحل الأمثل؟ أم أن الحل الذي خرجت به يستهل موارد النظام ويستغرق وقت طويل جدًا حتى ينتهي؟ معرفة الخوارزميات تساعدك في تحليل كل حل ممكن ومعرفة عدد العمليات التي يستغرقها الحل ليصل للنتيجة المطلوبة

لا أعتقد أن الجامعات يضعون مواد لدراسة تحليل وتصميم الخوارزميات عبثًا

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

نعم , مهمة جدا.

انصحك بتعلمها من هذه القناة علي يوتيوب

تعلم لغة سي ثم golang

رأيتُ مثلك في البداية، أي أنني استغربت ما فائدة الخوارزميات إن كنا فهمنا آلية عمل البرمجة وخزنّاها في عقلنا، نستطيع التطبيق مباشرة دون الحاجة للكتابة على ورق والتحليل ومن ثم العودة لنقلها كخوارزمية برمجية عبر الحاسوب! بينما يمكننا بالفعل تحويلها في عقلنا وإدخالها للحاسوب مباشرةً.

لماذا نأخذ وقت وجهد في الخوارزمية التقليدية وكتابتها على الورق.

لكن فيما بعد حين بدأت العمليات البرمجية بالتعقد وجدت نفسي لوحدي أمسك ورقة وقلم وأجهز بعض الخوازرميات عليها :)

انا ايضا لما كنت بالثانوي ودرست الخوارزميات تسألت مثلك تمام عن سبب دراستي لهذه المادة وشو الهدف منهاا وسبب هذه الحيرة هو عدم تفسير الاساتذة الله يصلحهم جيدا لهذه المادة وكنت اكود جيدا بالباسكال ركز اكود لم اقل ابرمج لكن بعد عدة سنتين درست عند استاذ ماشاء الله قمة في العلم وايصال المعلومة شرحلي المنهج بضبط وفسرلي وانا تعبت وتعلمت والحمد الله اليوم انا المتفوق في الخورزميات من جملة 100 طالب في جامعتي

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

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

بعد ما تاكدت من كود تاعك صحيح ويشتغل الان صارت مرحلة optimization وهي انو في الف طريقة لكتابة الكود وممكن 3 اشخاص يكتبولك 3 اكواد بطرق مختلفة بس في 1 منهم هو خيار الافضل من ناحية استهلاك الوقت والرام يعني هذا الكود هو الافضل من الاخرين فاذا يجب استعمال هذا الكود

لذالك نصيحتي لك ركز اهم شي في هذه المادة فاذا اتقنت الخوارزميات فالباقي كله تفاصيل يعني عندما خوارزمية صحيحة تقدر تحولهاا لل pascal او c++ او java او python etc... بكل سهولة

الخوارزميات هي الحياة .

عندما تقول لعائلتك سنذهب إلى مطعم الجبل

سنجلس العاشرة لو كان هادئاً

و لو كانت الأجواء غير عائلية سنذهب لمطعم الوادي

أنت ببساطة اتبعت خوارزمية نعم أو لا ( الشرط هو الهدوء والجو العائلي ).

بشكل أو بآخر كل الناس تستخدم الخوارزميات بحياتها العائلية والمهنية و أستطيع ذكر مئات الأمثلة عن ذلك .

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

جدا جدا جدا

عند التعامل مع البيانات الضخمة

او مع المواقع التفاعلية

او مع المهمات الهندسية الدقيقة

لا يكفيك الحدس العام

يجب ان ترسم خطوات ممنهجة ومفصلة

ويجب ان تتاكد ان خطواتك high performance

ويجب ان تتاكد من التعامل مع القيم الحديةوتعطي حدود لنجاح خوارزميتك