تعلم كيف تتعلم البرمجة وتصل إلى الاحتراف

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

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

ما الهدف من لغات البرمجة؟
جواب هذا السؤال سيضعك على أول الطريق
للبرمجة مجالات كثيرة أهمها قسمان كبيران : سطح المكتب ويدخل فيه تطبيقات الألعاب والغرافيك ومضادات الطائرات عفوا الفيروسات 🙂 ، والويب ويدخل فيه تطبيقات المواقع الكبرى
هذان القسمان هما الأكثر شيوعا والأكثر طلبا ومعنى ذلك أن للبرمجة مجالات أخرى مثل برمجة آلات التحكم الصناعي أو برمجة لغات برمجة جديدة ، أو برمجة الهواتف الذكية
فبناء على هذا الجواب اسأل نفسك ماذا تريد
أكثر من يلجون عالم البرمجة يريدون التعلم من القسمين الكبيرين الأولين الويب وسطح المكتب ، أو الويب وحده أو سطح المكتب وحده
ستجد في الويكي ومقالات الخبراء أي اللغات تصلح لما تريد الوصول إليه ومن نفسي أنا فإن الجافا تصلح للأمرين معا والأوبجكت باسكال وVB وCPP تصلح لسطح المكتب ، والجافا سكريبت والبي أتش بي تصلحان للويب ما هي المنصة التي تستهدفها هل هي لينكس أم يونكس أم iOS أم أندرويد أم ويندوز أم ويندوز فون
هذه أيضا احد الأسس التي تبني عليها اختيارك والفطن هو الذي يختار اللغة العابرة للمنصات ونعني بها أنك ستعمل بها في أي منصة اردت
اللغات مثل CPP و JAVA و Object pascal و PYTHON تعمل على المنصات كلها فهي عابرة للمنصات ليس للقارات (-: إلا iOS فله لغته الخاصة Objective-C وللأندرويد الجافا ومؤخرا التحقت بها الأبجكت باسكال

ماهي اللغة الأسهل تعلما وكتابة؟
من الاسس ايضا التي تختار بها لغتك سهولتها في التعلم ثم في البرمجة بها ، فإن عامل الوقت مهم في هذا الزمان والاسهل تعلما تكون أربح في الوقت
ويكاد يجمع الخبراء أن البايثون أسهل لغة تعلما وكتابة ثم تاتي من بعدها الأوبجكت باسكال ثم VB وفي الأخير CPP

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

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

اللغات جافا وباسكال وcpp هي لغات تجميعية
اللغات بايثون والروبي والبيرل هي لغات تفسيرية

فارق الوقت الذي تستهلكه اللغات التفسيرية سيظهر في الملفات الكبيرة لذلك فخذه في الحسبان

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

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

ابتعد عن اللغات المغلقة المصدر
نعم …لا سيما التي تملكها شركة الاحتكار ميكروسف مثل السي شارب والدوت نت وasp لأنك سوف تنغلق معها على منصتها
وسيفوتك الخير الكثير من اللغات المفتوحة المصدر وأعني بلغة مفتوحة المصدر أمرين اثنين الأول فتح مصدر مترجمها وفتح مصدر مكتباتها أشهر اللغات التي هي كذلك الس والسي++ والجافا والأوبجكت باسكال والبايثون وغيرها
اللغات المفتوحة المصدر توفر لك بيئات تطويرية غنية مثل lazarus للأوبجكت باسكال و eclipse وnetbeans للجافا
إن بيئات التطوير المفتوحة والمجانية ستوفر عليك المال والقرصنة المحرمة شرعا.

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

هذه هي الأسس التي تبني عليها اختيارك وأظن نك لاحظت اللغة التي تكررت في أكثر الأسس فهي اخياري أنا وإن خالفني فيها كثيرون .

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

وأحب أن أنبه إلى أنني متى ذكرت سي++ فأعني معها أمها السي

3-ابدأ بصغار العلم ثم كباره
هذه إحدى القواعد التي تعلمتها في الصبا ، ومعنى ذلك أن لا تذهب إلى المطولات من الكتب والدورات وأنت لما تدرس اساسيات ذلك العلم، فمن أراد أن يدرس الجافا مثلا فليس من الصحيح أن يبدأ بتقنيات JSP وJSF و ADF بل لا بد من تعلم الاساسيات أولا ، وهذا أمر متفق عليه بين أهل العلوم كلها
4-خذ العلم من عند أهله
وهذه اخصر الطرق للوصول إلى الاحتراف في كل علم فإن المعلم يوفر عليك الكثير من الوقت ويوصلك إلى غايتك بأبسط السبل وأخصرها

فإن لم تتمكن من الجلوس عند العالم أو المبرمج المحترف فالدورات العلمية السمعية المرئية قد ملئت الأنترنت ، فجلوسك أمام الحاسوب ومتابعة دورة علمية كالجلوس عند الأستاذ غير أنه لا يمكنك أن تسأله

ولكن احذر أن تأخذ من الدروس التي يقيمها هواة ومبتدئون وقد ملئت الشبكة ، فإنك لا تضمن أبدا ان لا يكون في شرحهم خطأ يلتصق بذاكرتك فلا يحذف أبدا

بل اسأل عن الاساتذة المشهورين والمواقع المشهورة في الدورات ، ثم تابع دروسهم ولا تأخذ عن كل من دب وهب

5-اسأل عن كل ما يشكل عليك

قديما قالوا العلم كنوز والأسئلة مفاتيحها ، وصدقوا ، فلا تستحي أبدا أن تسأل من هو أعلم منك في المنتديات أو في شبكات التواصل أوفي البريد .

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

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

7-اللغة الإنجليزية ضرورية
إذا كنت تريد الذهاب بعيدا في لغات البرمجة فلا بد لك من اتقان اللغة الإنجليزية ، فالمراجع العربية لن تأخذك بعيدا فخذ من وقتك وتعلم هذه اللغة

8-تعلم ومارس ما تتعلمه
نعم لا يكفي أن تقرأ كتاب وتفهمه فلا بد من تطبيق ما تعلمته ، وصدقني بالممارسة سيظهر لك أخطاء ما كنت تظن أنها تقع ومنها تتعلم أشياء جديدة
لاباس أن تشترك في مشاريع في المنتديات ولا بأس ان تشارك في مواقع المسابقات إذا وجدت نفسك قادرا على المشاركة
سوف ترى كيف ستنمو قدراتك بتسارع كبير

المقالة للكاتب/أحمد أبو عبد البر
Advertisements

ضع تعليقك هنا

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: