29 أغسطس 2013

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

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

 1- ما هي البرمجة ؟2- ما هي اللغات البرمجية ؟3- كيف أختار لغة البرمجة التي تناسبني ؟4- كم من الوقت أحتاج لتعلم لغة برمجية ؟5- هل يمكن تعلم أكثر من لغة في نفس الوقت ؟6- هل أنتقل من لغة برمجية لأخرى ؟ 7-هل أداء البرنامج مهم ؟ 8-مشكلة عدم اكمال البرامج؟

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

 2- ما هي اللغة البرمجية ؟ أولا قبل أن أوضح ما هي اللغات البرمجية ، دعنا نسأل أنفسنا لما نحتاجها ؟ طبعا نحتاجها لنطلب من الحاسوب أن يفعل شيئا ، أي أننا نتحاور مع الحاسوب ، هنالك سؤال آخر يطرح نفسه ، ما هي اللغة التي يتكلمها الحاسوب ؟ أنا سأخبرك, الحاسوب يعرف شيئان فقط 1 و 0 ،أو ما يسمى بالنظام الثنائي ، فمثلا لو أردنا قول hello للحاسوب فعلينا كتابة 01101000 01100101 01101100 01101100 01101111 و هذا أمر صعب ، كأنك تحاول أن تكلم صينيا ، في هذه الحالة علينا أن نحظر مترجما ، لكن في العالم الافتراضي ، يجب أن تتحدث مع المترجم بلغته التي هي طبعا أسهل من لغة الحاسوب ، هنالك عدة مترجمات و بالتالي عدة لغات ، هذه اللغات هي لغات البرمجة . و كاضافة في هذه الفقرة ، سأوضح كيف نطلب من الحاسوب القيام بأمر عن طريق المترجم .

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

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

 5- هل يمكن تعلم أكثر من لغة في نفس الوقت ؟ هذا أحد أكبر الأخطاء الذي يقع فيه الكثيرون و خصوصا الجدد في البرمجة . و سأقول لك لماذا . أولا أنت حددت المجال الدي ترغب في البرمجة فيه (الفقرة الثالثة) ، و اخترت اللغة البرمجية ، اذن ما الحاجة للغة أخرى ؟؟!! ثانيا قد تبدأ في الخلط بين syntax هذه اللغة و اللغة الأخرى . ثالثا عملية التعلم ستكون أبطأ. اذن الجواب هو لا ، لا تحاول تعلم عدة لغات برمجية في نفس الوقت.

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

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

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