احتاج مساعده بسيطة

السلام عليكم ورحمه الله وبركاته

انا متخصصه كمبيوتر ساينس في السنة الثالثة, واواجه مشكلة في كتابه الأكواد البرمجية..

حتى الأن تعلمت ثلاثة لغات بايثون جافا وسي بلاس بلاس

لكن مشكلتي ليست باللغة بل بطريقة بناء أو كتابة أساس الكود نفسه, كيف يمكنني تطوير هذه المهارة؟

وشكرا لكم !

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

التعليقات

Muntaha_Zaher أضف ردا

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

لا فائدة من تعلم عدة لغات دون إتقان ، عندما تتعلمي أي لغة حاولي تطبيق تمارين عليها بشكل دوري.

أي لغة برمجية أنشئت فهي أنشئت لبناء طريق حلّ للمشاكل. أي أنّ مرحلة الكتابة البرمجية (استخدام لغة البرمجة) يجب أن تسبقها مرحلة مهمّة جدّاً وهي معرفة المشكلة التي تواجهينها وطريقة حلّها. فلا أحد يستطيع كتابة كود لحلّ مشكلة لا يعرفها أو يجهل بعض معطياتها ونتائجها.

مثلاً: تخيّلي تريدين جمع أرقام من مصفوفة بحيث يتم جمع الأرقام الموجبة فقط. كيف نستطيع القيام بذلك؟

أوّلا سنفكر بأننا نحتاج لجمع الأعداد أن نمر على كل رقم، إذاً نريد حلقة تكرارية for.

ثانياً نحن لن نجمع أي رقم دون التحقق من أنه موجب، فداخل حلقة الfor نشترط للجمع أن يكون العدد موجباً.

بعد هذا التفكير البسيط يمكنك كتابة الكود بسهولة جدّاً، ربّما هذا المثال يمكن كتابته دون تخطيط مسبق لطريقة الحل لبساطته، لكن ماذا لو كان معنا تمرين كالآتي:

نريد وظيفة تقوم باختيار مجموعة جزئية من النقاط غير المتجاورة في مصفوفة، بحيث يكون مجموع عناصر المجموعة الجزئية أعظم من أي مجموعة جزئية أخرى تحقق شرط عدم التجاور.

هنا سينتقل التفكير إلى مستوى ثاني، وهو كيف سأقوم بهذا الاختيار؟ وربّما يفكّر أحدهم بتوليد كل المجموعات الجزئية ثم إيجاد المجموع لكل منها واختيار أكبره. لكن تخيّلي معي لو أنّ عدد عناصر المصفوفة 1000 عنصر، كم احتمال يوجد لتوليد مجموعة جزئية؟ لا شكّ أنّه عدد لا نهائي من الحلول تحتاج زمن لا محدود لينجزها الحاسوب، إذاً نحتاج لحل أبسط وطريقة أفضل لحل هذه المسألة.

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

شكرا معاذ الله يسعدك ويوفقك يارب! وضحت لي المفهوم بابسط طريقة ممكنة الآن احس اني قادرة اتخيل كيف ابني الكود قبل لا اكتبه

واجهتني هذه المشكلة وواجهت كثيرًا ممن أعرفهم أيضًا وسببها الرئيس هو عدم إدراك معنى البرمجة من الأصل.

فهي ليست مجموعة من السطور المتتابعة فحسب بل هي انعكاس تفكيرنا. وبالتالي لتحسين الكتابة علينا تحسين التفكير أولًا وهذا عن طريق:

  • التصميم قبل البرمجة: إن كانت تقابلك مسألة برمجية فتفتحين مكان كتابة الكود وتحدقين فيه بدون هدف فلست وحدك ولكن هذا خطأ. عليك أن تصممي المسألة وتحلين طريقتها بالكامل على ورق أولًا. فهذا سيساعدك في معرفة خطوات الحل ومن ثم تقومين بتطبيقه على السطور البرمجية لكن البدء بالبرمجة مشتت جدًا.
  • التدريب ثم التدريب: وهذا عن طريق حل الكثير من المسائل المناسبة لمستواك من مواقع مثل Hacker Rank. Codeforces. LeetCode وغيرها. بعد التفكير في المسألة والوصول لحد باستخدام الطريقة الأولى يمكنك أيضًا تطبيقها بمختلف اللغات التي تعرفينها حتى تلمسي الاختلاف بين كل لغة والأخرى.
  • بناء المشاريع: هذه نقطة مهمة أيضًا حيث أن المشاريع هي ما تجعلك تفهمين اللغة بشكل أعمق وكذلك تعرفك على مواطن النقص في فهمك وتساعدك على تعلم الكثير الجديد. ومن الطبيعي ألا تعرفي كل شيء في المشروع من البداية لكننا نتعلم في الطريق ونضيف لما نعرفه.
  • أنماط التصميم والكود النظيف: هذه نقطة متقدمة لكن يمكنك الاستعانة بها فهناك علم قد يدرس في شكل مادة جامعية يسمى أنماط التصميم أو Design patterns وهو يساعدك كثيرًا في الخطوة الأولى عند الحديث عن بناء برنامج أو حل مسألة بدون أن نكتب سطورها البرمجية بعد. أما الكود النظيف أو Clean code فهي طريقة لجعل كتابتك البرمجية مفهومة أكثر ويمكن التعديل عليها بسهولة وتعلمهما ينمي المهارات بشكل كبير.

شكرا الله يسعدك يارب ويوفقك ! الآن فهمت طريقة عمل الكود نفسه