عقدة المبتدئ: لغة البرمجة الأولى

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

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

إذا كنت تريد معرفة أنسب لغة فعليك أن تعرف خلفيتك أولاً عن البرمجة وتقرر ماذا ستفعل باللغة التي ستتعلمها، وما هي الأنظمة التي ستعمل عليها برامج وتطبيقات هذه اللغة، من البحث الذي قمت به أستطيع أن أخبرك أن أشهر اللغات التي ينصح بها للمبتدئين هي (الجافا- C++/C javascript البايثون) الأخيرة عادة جيدة لمن لا يمتلك خلفية عن البرمجة أو علوم الحاسب، أما ال C++/C ستعلمك كتابة كود جيد يمكنك البناء عليه فيما بعد وعمل برامج ذات أداء فعّال، لغة القهوة (جافا) هي من اللغات العملية وسهلة التعلم أيضاً كما ستتعرف فيها على أساسيات (object oriented programming) أو البرمجة الكائنية بشكل كبير، والحمد لله أن اختياري كمبتدئ” لم يأخذ وقتاً طويلاً ووقع في النهاية على الجافا وذلك لأسباب كثيرة ربما نسردها في تدوينة أخرى.

ولكي توفق في اختيارك على المدى البعيد وكنت تفكر بالبرمجة كوظيفة أساسية فضع باعتبارك مسار من المسارات الآتية [1]:

  • Back-end/Server-side Programmer: عادة يستخدم واحدة من اللغات الآتية (Python – Ruby – PHP – Java – .Net) ولديه معرفة بقواعد البيانات وبعض المعرفة بالـ System admin (إدارة الأنظمة).
  • Front-end/Client-side Programmer: يستخدم اللغات الآتية (HTML, CSS, JavaScript) ولديه معرفة بالتصميم.
  • Mobile Programmer: مواقع الموبايل (HTML/CSS) – أندرويد (Java) – آي فون (Objective C – Swift) وربما لديه بعض المعرفة بالخوادم (servers).
  • 3D Programmer/Game Programmer: لغات (c/c++ – OpenGl – Anmation) مع بعض المهارات الفنية والتصميم.
  • High-Performance Programmer: لغات (C/C++ – java) وخلفية جيدة للرياضيات والتحليل الكمي.

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

ما هي المصادر المناسبة للتعلم؟

المصادر التي سأقترحها هنا بالإنجليزية ولهذا حكمة 🙂 ، بالنسبة للفيديوهات التعليمية فيوجد مصدران الأول على موقع udemy والثاني على قناة اليوتيوب الشهيرة the new boston وستتعرف بهما على الأساسيات بطريقة جيدة، يفضل ألا تنتقل للفيديو التالي إلا بعد تطبيق ما تعلمته والتغيير فيه قليلاً وحل الأمثلة والتمارين كما ستعرف من إجابة السؤال الثاني، أما عن الكتب فموقع tutorialpoint مصدر جيد ويمكنك تحميل المادة pdf إذا كنت تريد أن تتعلم منه أوفلاين كما يجب أن تطلع على الكتب الأخرى التي ينصح بها الموقع، ولا يجوز أن نتكلم عن مصادر تعلم الجافا دون الإشارة لدورة أوراكل التعليمية.

كيف ستطبق ما ستتعلمه؟

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

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

الطريقة الثالثة هي الأمثلة والتمارين الموجودة بالويب مثل هذه المصادر (123)، والطريقة الرابعة عن طريق المساعدة والمشاركة بالمجموعات التعليمية وتبادل التمارين والأفكار، إذا كنت تفكر بأنسب طريقة منهم الآن فأرى أنه يمكن استخدامهم جميعاً سواء بالتتابع أو اختيار مصدر أو مصدرين للتمارين طوال عملية التعلم.

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

كيف ستقيم نفسك؟

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

ملحوظة: موقعي Stackoverflow و Github لا يوجد احتكاك عملي معهم إلى الآن ، ولكن مع تقدم المستوى يجب أن نضعهم بالاعتبار.

البرمجة وسيلة وليست غاية

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

  1. تعلمت لغة البرمجة.
  2. قمت بإنجاز بعض المشاريع والتطبيقات المفيدة.
  3. تعلمت علوم أخرى كالفيزياء والرياضيات.

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

نصيحة أخيرة لا تفقد نهم المبتدئ للمعرفة والتطبيق حتى تصل للإحترافية، وكما يقول المطورونإلى أن نلتقي مرة أخرى Happy Coding 🙂 .

Advertisements

6 thoughts on “عقدة المبتدئ: لغة البرمجة الأولى”

  1. سبحان الله ،، يوجد في المنتديات العربية مواضيع ذات قيمة عالية ، ولكن عدم انتشارها ووصولها للناس هو ما يقتلها بالرغم من فائدتها ،،،

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

  2. بص هو انا مش عارف ابدأ منين
    انا عايز اتعلم البرمجة بس لما قريت الموضوع الي انتا كاتبه دا ظهرت شوية مشاكل بالنسبالي
    زي مثلا ان لازم يكون عندي خلفية رياضية او فزيائية و دة مش موجود لاني اصلا تعليم متوسط بحكم مشكلة كده حصلتلي ف امتحانات الاعدادية بعدين دلوقت انا ف الجيش و اوقات فراغي زادت بسبب ساعات الخدمة الطويلة
    و لسة عندي شغف كبير للتعلم
    ففكرت ف اكتر حاجة بحبها و كنت ناوي فعلا اتعلمها لو كملت لقيتها البرمجة
    حتي كنت اتعلمت عنها شوية ف الاعدادي ف برنامج فيجوال بيزك دوت نيت بس طبعا كل الي درسناه كان الالة حاسبة المبسطة اتعلمنا نعملها ازاي تصميم و برمجة
    ف لو انتا شايف ان انا ممكن اتعلم البرمجة من غير الفيزياء او الرياضة او اني ممكن اتعلمهم فا تنصحني بأيه
    و, لي فكرة انا هتقبل اي رد منك مش هزعل ولا حاجة انا هادور علي اي حاجة اتعلمها
    اه و ملحوظة انا عندي عشرين سنة

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

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s