مقدمة:
أسئلة شائعة لطالما وجدناها في أذهاننا كأشخاص هدفنا تطوير ذواتنا في علوم الحاسب، ماهي لغة البرمجة المناسبة للتعلّم، وكم عدد لغات البرمجة؟ وكم لغة برمجة يجب ان أعرفها حتى يقال عني محترف؟ هل علي إجادة اللغة الانجليزية؟ الأجابة ليست كما تتوقع، فعندما تجد مثل تلك الاسئلة تدور في ذهنك فهذا هو المكان المناسب لحصرها ومناقشتها. وللأسف سوف أخيب ظنّك، إذا كنت تظن أن الاجابة على تلك الأسئلة مكلفة وتثقل كاهلك بعبئ لايطيقه الإنسان العادي، وخصوصاً اذا كنت تتوقع (في نفسك) أن البرمجة عبئ كبير على متعلميها.
اي لغة أختار لأتعلم؟ وكم لغة أحتاج حتى اصل للأحتراف ؟
في علوم الحاسب يعتبر كُل مبرمج نفسه خبيراً بأغلب لغات البرمجة (إذا لم تكن كلها). حتى تلك اللغات التي لم يسمع عنها ابداً. قد تسأل لماذا؟ وكيف؟ لأن هندسة البرمجيات ليست مجرّد لغة أو (لغات). فعندما تعرف منطقها! من خلال المنطق فحسب، تستطيع ان تتعامل مع أي لغة برمجة. مع العلم اننا لانعتبر كل لغة لها علاقة بالحاسب لغة برمجة فهناك لغات حوسبة مثل لغة R ولغات وصف مثل HTML. فلغات البرمجة سهلة جداً اذا كنت تعرف المنطق الاساسي الذي تشترك به كل لغات البرمجة. حسناً إذاً ماهو المنطق الاساسي ؟ وكيف يمكن تعلمه ؟ بسهولة هي أوامر ثابته لابد وأن تجدها في كل لغة برمجة. عندما تعرف كيف يعمل كل برنامج فأنت مبرمج. لذا أنصح المبتدئ بتعلم لغة C++ ولا يستعجل على النتائج فالتعامل مع لغة C++ نتائجها مبدئياً شاشة سوداء ولكن ستلاحظ انك بفترة وجيزة استطعت معرفة المنطق المقصود. كم لغة تحتاج؟ الجواب هو (المنطق فحسب). وتكون محترف بعدما تتعلم المنطق في تعلم الخوارزميات.
ماهي افضل لغة برمجة ؟
كثرت نقاشات (تلك اللغة افضل من تلك) فإذا كنت مبتدئ؟ لاتصدق فكل لغات البرمجة المشهورة كُتِبَت عليها برامج مشهورة وقويّة فا الافضلية ليست للغة ابداً. بمعنى آخر، برنامج Adobe Photoshop كُتب بلغة CC++، ليس هذا يعني لأن لغة C++ أفضل لغة برمجة، بل المعنى الحقيقي هو أن مهندسين شركة Adobe مهندسين اكفّاء. فا الأفضلية تُبنى على قدرات المبرمج ولا تبنى على لغة البرمجة.
هل يجب علي ان احفظ جميع المكتبات والكلاسات والدوال؟
بالتأكيد لا! حتى وأن أردت ذلك لن تسطيع ولن يستطيع حتى مبرمجوا لغة البرمجة نفسها. فلهذا وجد مايسمى تسنيد او Documentation لكل لغة برمجة، فهنا مثال للغة C++ (http://en.cppreference.com/w/) ولكل لغة مصدر او تسنيد يشرح كل كلاس بالتفصيل وكل دالة ايضاً. فلذا يجب ان يحفظ المبرمج اساسيات المنطق وبعض الامور التي يستخدمها بستمرار، والباقي يجده دوما في تلك المصادر او عن طريق سؤال البروفسور Google.
كيف تكون البرمجة محمية ؟
شعور أنك مبتدئ وتسمع بالاختراقات، واهتمام المبرمجين بالحماية، يشعرك انك عندما تتعلم أساس البرمجة تحتاج الى سنوات طائلة لتعلم اساسيات الحماية. قد يكون هذا منطقياً ولكن عندما تتعلم منطق البرمجة واساسياتها ستعرف المشكلة (الثغرة) وعندما تعرف المشكلة جيداً! فلايوجد مجال أن تفكر أنك لايمكن تعرف الحل! فالحلول سوف تجدها تتسابق واحدة تلو الاخرى نحو المعالج الرئيسي في عقلك البشري.
كم احتاج لتعلم البرمجة؟
تحتاج للصبر، والاستمرار. والوقت يقصر على حسب صبرك كلما استمريت بالتعلم كلما قصر الوقت الذي ترا فيه نتيجة لابداعك. كلما تشتت ومللت من جانب وتحولت الى جانب اخر، كلما طالت المدة. وحتى وان تعلمت البرمجة لا يؤسفني ان اقول لك ان مهندس البرمجيات (لا تتوقف فترة تعليمه).
هل علي اجادة اللغة الانجليزية؟
نعم، اجادة اللغة الانجليزية أمر ضروري للاستفادة والتعلم واختصار الوقت وحل المشاكل. يمكنك تعلم البرمجة بدون اللغة الانجليزية، ولكن اللغة الانجليزية او على الاقل مبادئها يجعلك اسرع تعلماً وعملاً. لأنك مبرمج دائماً تواجه مشاكل وهذا أمر طبيعي. ومن الطبيعي ايضاً انك تريد ان ترى كيف قام غيرك بحل مشكلة مماثلة لتلك التي واجهتك. فالبحث باللغة الانجليزية يجعل الحلول متوفرة اكثر واسرع. موضوع ذو صلة: https://arabia.io/go/5630
هل المبرمج الاجنبي افضل من المبرمج العربي ؟
هل اي شخص يستطيع تعلم البرمجة ؟
خلاصة الحديث، هندسة البرمجيات ليست بالشيء الصعب، او المستحيل ومن جهة اخرى ليست بالسهلة، يجب بذل جهد فكري للتعلم والاتقان. واتمنى لكم التوفيق.
أعبر في هذا الموضوع عن وجهة نظري من خلال الاجابة على الاسئلة التي أراها اكثر شيوعاً من قبل الاشخاص المقدمين على تعلم البرمجة. وقد اكون مخطئ.