أريد وضع خطة لتعلم البرمجة وأحتاج مساعدة

بحثت كثيرًا عن كيف أبدأ تعلم البرمجة في جوجل وهنا في I/O، لأبدأ بوضع خطة للتعلم، وأحتاج بعض المساعدة في هذا:-

  • قرأت مرة أن البرمجة تعتمد على مفهومين أساسيين: التفكير المنطقي والخوارزميات، ما معنى هذين المفهومين؟ وما هي المفاهيم الأخرى؟ باختصار كيف أبني أساسًا متينًا وفهمًا عميقًا للبرمجة قبل الدخول في مجالاتها وقبل تعلم أي لغة؟ أرجو أن تذكروا لي دورة مفيدة أو كتابًا أو أي شيء يبني لدي هذا الأساس.

  • قرأتُ أيضًا أن البرمجة لها علاقة مع الرياضيات، وأنا أسأل ما مدى ارتباط علم الرياضيات بالبرمجة فيما يتعلق بجانبي التعلم النظري والعملي؟ وهل سأحتاج لإتقان بعض الدروس الرياضية المعقدة لإنجاز مهام معينة بالبرمجة؟ للعلم أن مستواي في الرياضيات في المرحلة الثانوية لم يكن بالممتاز ولكنه كان جيدًا نوعًا ما.

  • ما هي متطلبات التعلم؟ هل يجب أن يكون الحاسوب الخاص بي بمواصفات معينة؟ وهل تختلف تلك المواصفات باختلاف لغات البرمجة المراد تعلمها؟ هل سأحتاج إلى الاتصال بالانترنت دائمًا؟ هول يجب أن يكون سريعًا وبباقة كبيرة؟ علمًا أن أقصى ما يمكن أتحصل عليه هنا في بلدي حوالي 500 MB إلى 1 GB في اليوم لمدة شهر.

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


12

قرأت مرة أن البرمجة تعتمد على مفهومين أساسيين: التفكير المنطقي والخوارزميات، ما معنى هذين المفهومين؟ وما هي المفاهيم الأخرى؟ باختصار كيف أبني أساسًا متينًا وفهمًا عميقًا للبرمجة قبل الدخول في مجالاتها وقبل تعلم أي لغة؟ أرجو أن تذكروا لي دورة مفيدة أو كتابًا أو أي شيء يبني لدي هذا الأساس.

نحتاج الى ان نُعرّف بعض المفاهيم حتى يسهل علينا فهم المشكلة ونحلها.

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

والبرمجة هي :عملية كتابة تعليمات وتوجيه أوامر لجهاز الحاسوب لتوجيه هذا الجهاز وإعلامه بكيفية التعامل مع البيانات أو كيفية تنفيذ سلسلة من الأعمال المطلوبة تسمى خوارزمية.

والتفكير المنطقي يمكن تعريفه بأنه: هو التفكير بأسلوب منظم وتأسيس الأفكار بناءًا على حقائق ودلائل ملموسة (مُقدمات) ومعالجة هذه الحقائق بأسلوب منطقي ومنهجي سليم لتعطي نتائج.

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

فالمبرمج: هو شخص يفكر بإسلوب منظم منطقي و ويحدد مساره بخطوات للوصول إلى حل مشكلة ما.

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

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

في رأيي لا داعي أن تجهد نفسك وأن تضع عقبات أمامك قبل الدخول في البرمجة لا تحتاج إلى أن تُرهق نفسك في ماذا يجب أن اتعلم قبل البرمجة؟ وقبل تعلم لغات البرمجة؟

فقط تعلم أساسيات البرمجة بأي لغة تريد (الأغلب ينصح بلغة بايثون لبساطة كتابتها) وبعد أن تعلم لغة التواصل مع الحاسوب الآن إبحث عن مشاكل وفكر بكيفية حلها وأكتبها بلغة البرمجة وأجعل الحاسوب يحلها لك.. هكذا ببساطة.

عن نفسي تعلمت لغة c++ لأنها مقررة في كليتنا وفي كل مفهوم أتعلمه أبدأ بتطبيق عدة برامج بإستخدام هذه المفاهيم وكلما أخذت مفهوم جديد ازدادت طبقت ما سبقها.

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

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

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

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

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

ما هي متطلبات التعلم؟ هل يجب أن يكون الحاسوب الخاص بي بمواصفات معينة؟ وهل تختلف تلك المواصفات باختلاف لغات البرمجة المراد تعلمها؟ هل سأحتاج إلى الاتصال بالانترنت دائمًا؟ هول يجب أن يكون سريعًا وبباقة كبيرة؟ علمًا أن أقصى ما يمكن أتحصل عليه هنا في بلدي حوالي 500 MB إلى 1 GB في اليوم لمدة شهر.

مواصفات حاسوب لا يتجاوز الـ300$ كافية لأغلب المجالات.. بالنسبة للأنترنت تحتاجه في برمجة الويب (ولكن مع ذلك يمكنك عمل سيرفر محلي) ولكن باقة 500 MB إلى 1 GB يومياً جيدة.

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

اذا كان إهتاماك هو برمجة الويب وبنفس الوقت لديك إهتمام لبرمجة التطبيقات يفضل أختيار جافاسكربت بدلاً من php فيمكنك بوساطتها برمجة الويب بإستخدام nodejs وبنفس الوقت برمجة التطبيقات بإستخدام react native مثلاً.

احسنت أخي شرح كافي ووافي بحق

شكرا على المجهود

أحسن الله بك أخي الكريم.

OsamaAbdussamie أضف ردا

ما شاء الله، شرحك سهل علي الفهم بشكل كبير، أدركتُ أن هذه المصطلحات والتي تبدو صعبة هي في الحقيقة بديهيات -على الأقل بالنسبة لي- ونستخدمها في الحياة اليومية أيضًا، حقًا شكرًا لك، وجزاك الله خيرًا :)

فقط تعلم أساسيات البرمجة بأي لغة تريد (الأغلب ينصح بلغة بايثون لبساطة كتابتها)

ألا يمكنني البدء بـPHP؟ أم أن Python مجرد مثال؟

لا تحتاج الكثير يكفيك أساسيات الثانوية حتى لو لم يكن مستواك ممتازاً ..

جميل جدًا.

ولكن ستحتاجها في مجالات متخصصة مثلاً في تحليل البيانات ستحتاج الى تعلم الإحصاء والإحتماليات وفي بناء المعالجات

حقًا، هذه المجالات ليست بتلك الصعوبة بالنسبة لي! أو على الأقل لن يتكون تعلمها صعبًا لتلك الدرجة.

بالنسبة للأنترنت تحتاجه في برمجة الويب (ولكن مع ذلك يمكنك عمل سيرفر محلي)

الرجاء التفصيل أكثر.

اذا كان إهتاماك هو برمجة الويب وبنفس الوقت لديك إهتمام لبرمجة التطبيقات يفضل أختيار جافاسكربت بدلاً من php فيمكنك بوساطتها برمجة الويب بإستخدام nodejs وبنفس الوقت برمجة التطبيقات بإستخدام react native مثلاً.

أعلم أهمية الـJavaScript وتنوع استخداماتها: من برمجة أمامية، وخلفية، وبرمجة تطبيقات الهواتف، وأظن حتى تطبيقات سطح المكتب؛ ولكن لا أعتقد أني سأعدل عن الـPHP، على الأقل بالنسبة للويب والبرمجة الخلفية، حيث أنها الأكثر طلبًا، وهو ما سينفعني للعمل والربح من البرمجة.

سؤال طريف على الهامش: ما رأيك ببرمجة الويب بلغة C++ :)

ألا يمكنني البدء بـPHP؟ أم أن Python مجرد مثال؟

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

الرجاء التفصيل أكثر.

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

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

أعلم أهمية الـJavaScript وتنوع استخداماتها: من برمجة أمامية، وخلفية، وبرمجة تطبيقات الهواتف، وأظن حتى تطبيقات سطح المكتب؛ ولكن لا أعتقد أني سأعدل عن الـPHP، على الأقل بالنسبة للويب والبرمجة الخلفية، حيث أنها الأكثر طلبًا، وهو ما سينفعني للعمل والربح من البرمجة.

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

سؤال طريف على الهامش: ما رأيك ببرمجة الويب بلغة C++ :)

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