مرحبًا بك عزيزنا الزائر لمدونة وادي التكنولوجيا | بالعربية، في هذه المقالة سوف نقوم بعمل خارطة الطريق لتعلم البرمجة عبر الإنترنت، وسوف نذكر فيها جميع التفاصيل التي يجب عليك كمبتدئ أن تعرفها قبل الخوض في هذا المجال الشيق.
من أكثر العبارات التي تتردد من حديثي العهد بالبرمجة "أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ!"
نعم، قد يكون تعلم البرمجة عبر الإنترنت مؤلمًا بالنسبة للمبتدئين لأن هناك الكثير من المحتوى المتاح للاختيار من بينها، وعلى الرغم من أن معظم هذا المحتوى يعتبر صديق للمبتدئين إلا أنه قد يكون سببًا في إرباكهم.
لذلك سوف تحتوي هذه المقالة على مجموعة من أفضل الموارد التي ستساعدك على تعلم برمجة الكمبيوتر عبر الإنترنت، سواء كانت دورات أو كتب أو موارد أخرى، وأيضًا سوف نذكر الأمور التي يجب على كل مبرمج مبتدئ أن يعرفها.
اقرأ أيضًا: خارطة الطريق لتعلم لغة بايثون في عام 2024 | دليل شامل للمبتدئين والمحترفين في الأساسيات
اقرأ أيضًا: كيف أتعلم البرمجة | الدليل الذي تمنيت أن أحصل عليه عندما بدأت تعلم البرمجة
هيا بنا نتعرف على التفاصيل من خلال هذه المقالة.
ما هي البرمجة؟
البرمجة هي عملية تقسيم مهمة معينة يُراد تنفيذها من خلال الكمبيوترإلى أجزاء صغيرة مترابطة وقابلة للتنفيذ بأوامر بسيطة، بعد ذلك يتم كتابة هذه الأوامر بإحدى لغات البرمجة، والتي هي وسيلة للتخاطب بينك وبين الكمبيوتر.
هل ترى أن الأمر مُعقد منذ بدايته وتفكر جديًا الابتعاد عنه؟!!
لا تتسرع في الحُكم، فمن خلال المثال التالي سوف أُثبت لك مدى سهولة البرمجة، بل سوف أُثبت لك أنك تستخدم البرمجة في حياتك اليومية.
فلنتخيل أنك تنتظر زيارة صديق لك اليوم، ثم اتصل بك هذا الصديق ليقول لك: "أنا أقف بجانب المسجد الكبير ولا أعرف كيف أصل إلى منزلك". أنت الآن لديك مهمة تريد تنفيذها كما ورد في تعريف البرمجة .
لكن برأيك هل يصلح أن تقول له: "منزلي معروف وقريب من المسجد فسأل أحد المارة عنه وسوف يدلك عليه"؟ بالتأكيد لا. أنت الآن تحتاج إلى أن تُقسِّم المشكلة إلى أجزاء تمثل خطوات بسيطة يستطيع صديقك فهمها وتنفيذها كما ورد في تعريف البرمجة .
مثلًا، أخبره أن ينفذ الأوامر التالية: "سر إلى الأمام عشرة أمتار" ثم "اتجه إلى اليمين" ثم "سِر إلى نهاية الشارع" ثم "اتجه إلى اليسار"، أخبره بعد ذلك: "قم بعَد الأبنية الموجودة على اليسار حتى تصل إلى البناء الرابع" ثم "اصعد إلى الطابق الثاني" ثم "اطرق على الباب الذي سيظهر أمامك".
تهانينا! بهذه الطريقة، أنت استطعت أن تدل صديقك على منزلك بدقة من خلال تقسيم المهمة التي تريد تنفيذها إلى أجزاء صغيرة مترابطة وقابلة للتنفيذ كما ورد في تعريف البرمجة.
لكن العامل الأهم الذي ساعدك في نجاح مهمتك هي اللغة التي تواصلت بها مع صديقك، لكن ماذا لو أن صديقك كان يتحدث بلغة مختلفة عن لغتك؟ في هذه الحالة سوف تحتاج لمترجم حتى يفهم صديقك ما تقوله له وتنجح في مهمتك، أليس كذلك!
هنا يأتي دور لغات البرمجة، فهي مجموعة من المفردات والقواعد اللغوية التي تشكل لغةً وسيطةً للتخاطب مع الكمبيوتر وأمره بتنفيذ تعليمات محدَّدة، فالكمبيوتر لا يفهم لغة البشر ولا البشر يفهمون لغة الكمبيوتر، لذلك كان هنالك حاجة ملحة لوجود لغة وسيطة يفهمها كلاهما؛ نتيجةً لذلك، انبثق مفهوم لغة البرمجة إذ يمكنك أن تعدّ لغات البرمجة على أنها وسيط بين المبرمج والكمبيوتر.
يهتم المبرمج بالتفكير في تسلسل الخطوات التي على الحاسوب القيام بها لإتمام العمل المطلوب منه (مثل حساب العمر اعتمادًا على تاريخ الولادة)، ثم كتابة هذه الخطوات بترتيب منطقي بإحدى لغات البرمجة.
ربما لاحظتَ في الجملة السابقة أن جزءًا من مهمة المبرمج هو التفكير المنطقي، وهذا يجعلنا ننتقل إلى السؤال الشائع "هل أستطيع تعلم البرمجة وأصبح مبرمجًا؟".
ما عليك معرفته لتصبح مبرمجًا
يتردد الكثيرون في تعلم البرمجة متذرعين بأن مستواهم في اللغة الإنجليزية و الرياضيات ليس ممتازًا، وهذا أمر غير صحيح، نعم هناك أمور سوف تعترضك أثناء أداء عملك كمبرمج تتطلب خبرة في الرياضيات، إلا أنَّه قد تمر عليك فترات طويلة لا تحتاج فيها إلى مسائل رياضية.
كل ما يلزمك للبدء في تعلم البرمجة هو الأساسيات التي يعرفها الجميع مثل عمليات الجمع والطرح والضرب والقسمة، إلى حين اعتراضك لمشكلة تتطلب مهارة في الرياضيات، سوف تجد الكثير من المصادر والمراجع التي تستطيع الرجوع إليها آنذاك، بعبارة أخرى، أجِّل هذا الأمر قليلًا ولا تخف، الأهم من ذلك هو أن تكون قادرًا على التفكير بشكل منطقي.
1- التفكير المنطقي
التفكير المنطقي هو المهارة التي تجمع كافة المبرمجين تحت مظلة واحدة، وهي أساس كتابة الخوارزميات، إذ يجب أن تكون قادرًا على اكتساب هذه المهارة وتطويرها.
2- الخوارزميات
كلمة "الخوارزميات" هي الكلمة المرعبة التي يهرب منها البعض، فكل ما يتخيلونه عند ذكرها هو الرياضيات المعقدة والمعادلات الطويلة، لكن الأمر بسيط جدًا؛ فالخوازرميات هي تطبيق للتفكير المنطقي في خطوات متسلسلة واضحة تمامًا لحل مشكلة ما.
ولكي نوضح لك أن الخوارزميات ليست أمرًا معقدًا، إليك كيفية كتابة برنامج يسأل المستخدم عن سنة ميلاده، ثم يعيد له عمره الحالي بالسنوات.
- الخطوة الأولى: إظهار رسالة نصية نطلب فيها من المستخدم إدخال تاريخ ميلاده.
- الخطوة الثانية: تخزين سنة الميلاد التي أدخلها المستخدم.
- الخطوة الثالثة: الحصول على التاريخ الحالي.
- الخطوة الرابعة: طرح مدخلات المستخدم من السنة الحالية.
- الخطوة الخامسة: إظهار الناتج.
ويمكننا أن نحل هذه الإشكالية منطقيًا بوضع شرط يمنع المستخدم من إدخال تاريخ أكبر من التاريخ الحالي، كما يلي:
3- هياكل البيانات
كلمة أخرى شائعة جدًا في عالم البرمجة هي "إطارات العمل | frameworks" وهي مجموعة من الشيفرات البرمجية التي تسهل على المبرمج إنشاء التطبيقات، بتوفير وحدات جاهزة تقدم خدمات مثل تسجيل المستخدمين، وإرسال البريد الإلكتروني، والتعامل مع قواعد البيانات، أي يمكنك أن تعدّها أدوات برمجية تساعدك في برمجة تطبيقك وتسهِّل لك فعل ذلك.
الأدوات اللازمة للبدء في تعلم البرمجة
- تحتاج إلى جهاز كمبيوتر بمواصفات جيدة، ليس من الضروري أن يكون من أفضل الأجهزة، ولكن يُفضل أن لا يقل عن 8 جيجا من الذاكرة العشوائية،وبالنسبة للمعالج أن لا يقل عن الجيل الرابع.
- لا نطالبك باستخدام نظام تشغيل معين، استعمل ما يحلو لك وما ترى نفسك معتادًا عليه، سواءً كان ويندوز أو لينكس أو ماك.
- ستحتاج أيضًا إلى اتصالٍ جيد بالإنترنت للوصول إلى المواد التعليمية، ولتنزيل البرمجيات والمكتبات اللازمة للتطوير، والأهم حصولك على الدعم من خلال المجتمعات لحل المشاكل التي قد تواجهك.
- ستحتاج إلى برنامج لكتابة الأكواد البرمجية، وهنالك نوعان رئيسيان لهذه البرامج:
- المحررات النصية: مثل Visual Studio Code أو Atom أو Sublime Text أو Bracktes أو Notepad++، وهذه المحررات النصية تكون بسيطة في أغلبها، وتوفر ميزات أساسية مثل تلوين الأكواد، وبعض ميزات الإكمال التلقائي، و وظيفة هذه المحررات النصية عمومًا هي تعديل الأكواد بسهولة وسرعة.
- بيئات التطوير المدمجة: مثل IntelliJ IDEA و Visual Studio و Eclipse و Android Studio و NetBeans و Apple Xcode، وهذه البيئات توفر ميزات أكثر بكثير من المحررات النصية، مثل تشغيل الشيفرات وتنقيحها (debugging) وميزات التحكم بالإصدارات والاتصال بقواعد البيانات، وخلاف ذلك الكثير.
مفاهيم البرمجة
أنت الآن تعلم أن البرنامج هو سلسلة أوامر ينفذها الكمبيوتر لحل مشكلة ما، وهذا البرنامج تم كتابته بلغة برمجة يفهمها الكمبيوتر تسمى لغة الآلة، وعلى الرغم من تعدد لغات البرمجة واختلاف كل لغة عن الأخرى وتعدد المجالات التي يمكن استخدام كل لغة فيها، إلا أن المفاهيم التي تقف خلف كل هذه اللغات واحدة، وإليك هذه المفاهيم كما يلي:
1- المتغيرات والثوابت
عليك أن تتعرف على مفهوم "المتغيرات | variables" المستعمل في جميع لغات البرمجة، والذي يعني " إسناد قيمة ما إلى رمز أو كلمة، وتخزين هذه القيمة في الذاكرة " فلو أردنا أن نخزن العبارة "Hello World" في متغير ما فنكتب شيئًا شبيهًا بما يلي:
var variable_name = "Hello World";
أي أننا نسند الجزء الموجود على يمين علامة (=) إلى المتغير المذكور على يسار علامة (=).
ويمكننا أن نستنتج من اسم "المتغيرات" أن قيمتها قابلة للتغيير خلال تنفيذ البرنامج، فيمكننا في مكانٍ ما في البرنامج أن نعيد تعريف المتغير السابق بكتابة:
var variable_name = "Mostafa Amaan";
أما الثوابت فهي تتشابه مع المتغيرات في كثيرٍ من النواحي، إلا أنك لا تستطيع إعادة تعريف قيمتها بعد تعريفها أول مرة، فقد تستفيد من الثوابت عندما تكون متأكدًا تمامًا من عدم تغيير القيمة خلال فترة تنفيذ البرنامج، فلو أردنا تعريف ثابت اسمه pi يحتوي على القيمة 3.14 والتي نعرف أنها لن تتغير مطلقًا، فيمكننا أن نكتب التالي:
const pi = 3.14;
2- الشروط
تدعم جميع لغات البرمجة تعريف شروط تُنفَّذ في حالات معينة. ففي الخوازرمية السابقة التي شرحنا فيها حساب العمر، يمكننا أن نُعَبِّر عن الشرط باللغة العربية كما يلي:
إذا كان تاريخ الميلاد أكبر من التاريخ الحالي، إذًا أخبر المستخدم بأن هنالك خطأ في التاريخ الذي قام بإدخاله، وإلا: سنحسب العمر بطرح تاريخ الميلاد من التاريخ الحالي.
وإذا أردنا كتابة هذا التعبير بإحدى لغات البرمجة فستبدو شبيهةً بما يلي:
if ( user_birth > current_year ) {
// ERROR!
} else {
age = current_year - user_birth;
}
3- حلقات التكرار
ماذا لو كانت لدينا قاعدة بيانات فيها أكثر من مستخدم، ولكل مستخدم تاريخ ميلاد، لا تقل لي سنأخذ كل تاريخ على حدى ونقوم بإدخاله يدويًا إلى البرنامج! هذا مضيعةٌ للوقت والجهد أيضًا، لكن الصواب هو إنشاء حلقة تكرار تأخذ قيمة تاريخ الميلاد الخاص بكل مستخدم ثم تحسب عمره كما ذكرنا سابقًا.
دعنا نعدل الخوارزمية البسيطة لنضيف تكرارًا فيها:
تخيل لو كان عندك ألف مستخدم، وكان عليك حساب أعمارهم، يمكنك بضغطة زر أن تحسبها كلها.
4- البرمجة الشيئية أو الكائنية التوجه
"البرمجة الكائنية | Object-oriented programming" والمعروفة اختصارًا بـ OOP هي نموذج برمجة يعتمد على مفهوم "الكائنات | Objects"، والتي يمكن أن تحتوي على بيانات وكود برمجي: البيانات تكون في شكل حقول وتُعرف غالبًا باسم "سمات | Attributes"، الكود البرمجي يكون في شكل إجراءات وتُعرف غالبًا باسم "الطرق | Methods".
ميزة الكائنات هي أن الإجراءات الخاصة بالكائن يمكنها الوصول إلى حقول البيانات الخاصة به وتعديلها في كثير من الأحيان، وتتنوع لغات OOP، لكن أكثرها شيوعًا تعتمد على "الفئات | Classes"، مما يعني أن الكائنات هي أمثلة للفئات، والتي تحدد أيضًا أنواعها، فعلى سبيل المثال، قد يكون هناك فئة تسمى "الأشكال" وتحتوي على كائنات تسمى "مثلثات ومربعات ومستطيلات ودوائر".
5- الدوال
"الدالة | function" هي مجموعة من التعليمات البرمجية التي تقبل مدخلات وتعيد القيمة المطلوبة منها، وتكون الدوال عادةً ذات أكواد قصيرةً وتقوم بمهمة وحيدة فقط، فمثلًا لو أردنا تعريف دالة باسم divide تقبل عددين، وتعيد ناتج قسمة العدد الكبير على الصغير، فيمكننا أن نكتب الخورزمية الآتية:
مجالات البرمجة
يبدأ أغلبية المبرمجين مشوارهم من خلال تعلم تطوير واجهات المستخدم عند اتخاذ قرارهم لدخول مجال تطوير وبرمجة مواقع الويب، وذلك لسهولة اللغات المستعملة في هذا المجال.
والهدف من هذا المجال هو تطوير صفحات الويب التي تعرض محتوى على مواقع الويب، وهي الصفحات التي تراها عند زيارتك لمدونة وادي التكنولوجيا | بالعربية، أو أي موقع آخر.
صفحة الويب تتألف من مجموعة من المكونات، وتُكتَب هذه المكونات باستخدام لغة الترميز HTML، وبعد كتابة البينة الهيكلية للصفحة سنأتي على تنسيقها باستخدام لغة CSS، وهي اللغة المستعملة لإضفاء شكل وهيئة على عناصر HTML، أي أن عناصر HTML تصف محتوى الصفحة (مثل الترويسات والقوائم والمحتوى الرئيسي والفقرات والروابط والصور والفيدوهات)، وقواعد CSS تُعرِّف كيف يجب أن تبدو هذه العناصر سواءً من ناحية الألوان أو المساحات أو الخلفيات أو الخطوط أو خلاف ذلك.
ثم تأتي لغة JavaScript مكملةً لهما وتستعمل لإعطاء بعض عناصر الصفحة صفاتٍ تفاعلية، مثل شريط متحرك من الصور أو قوائم تظهر عند وقوع حدث معيّن ...إلخ.
وهنالك تقنيات كثيرة تستعمل في تسهيل إنشاء الواجهات الأمامية وسنذكر بعضها:
- إطار Bootstrap لتسهيل تنسيق عناصر الصفحة.
- مكتبة jQuery لتسهيل التعامل مع عناصر الصفحة باستخدام JavaScript.
- لغة Sass لإنشاء ملفات CSS بسرعة وسلاسة.
- أدوات بناء مثل Gulp التي تُسهِّل تحويل الملفات المصدرية للتطبيق إلى النسخة النهائية التي ستُعرَض للمستخدم.
إذًا نستخلص من ذلك أن اللغات والتقنيات المستخدمة في تطوير واجهات المستخدم هي: HTML و CSS و JavaScript و Bootstrap و Sass و jQuery و Gulp.
إقرأ أيضًا: أدوات مهمة لمطوري الواجهات الأمامية Front End
2- تطوير الواجهات الخلفية | Back End
قد تتساءل: ماذا يعني تطوير الواجهات الخلفية Back End ؟ وما الفرق بينه وبين تطوير واجهات المستخدم Front End ؟
الفرق بينهما هو أن الواجهات الخلفية هي البرمجيات التي تُنفَّذ على الخوادم وتجري عمليات عليها مثل التعامل مع قواعد البيانات والملفات والخدمات الخارجية، أما واجهات المستخدم فهي الصفحات التي تظهر على شاشة الزائر في متصفحه، لذلك أنت في مجال تطوير الواجهات الخلفية تحتاج إلى تعلم إحدى لغات البرمجة.
لذلك، سوف نطرح عليك الخيارات المتاحة أمامك للبدء في مجال تطوير الواجهات الخلفية، وجميع اللغات التي سوف نعرضها عليك الآن هي لغات ناجحة وقوية ولا يهم أي لغة تختار منها، المهم أن تتطلع على أكواد بسيطة من كل لغة وتتخذ قرار تعلمها، واحذر من تضييع وقتك في التنقل بين لغات البرمجة والبحث عن أفضلها، فكلُ لغةٍ ممتازةٌ في مجالها.
- لغة PHP
يمكن القول بأن أشهر لغة لتطوير الواجهات الخلفية هي لغة PHP، وتتفوق على اللغات المنافسة لها أضعافًا مضاعفة، فتعلم البرمجة بلغة PHP أمر سلس، فهي لغة سهلة التعلم وبسيطة الشكل، والمجتمع الخاص بها كبير وتطويرها مستمر، فهذه اللغة هي خيار استراتيجي لمن يريد الدخول إلى مجال تطوير الواجهات الخلفية.
هنالك عدد من المواقع الإليكترونية المكتوبة بلغة PHP مثل WordPress و Drupal و MediaWiki وغيرهم الكثير؛ هذا بالإضافة إلى عددٍ كبير من إطارات العمل الخاصة بهذه اللغة مثل Laravel و Zend و CodeIgniter و Symfony و CakePHP و Yii وغيرها، وهذا ما يدل على إمكانيات اللغة الكبيرة والمجتمع الكبير الذي يحيط بها.
إذًا نستخلص من ذلك أن اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام لغة PHP هي: PHP و Laravel وقواعد البيانات مثل MySQL و PostgreSQL وغيرها.
- لغة Ruby
إذا كنتَ تبحث عن لغةٍ أنيقة وسهلة الاستعمال فستجد ضالتك في لغة روبي Ruby فهي من أجمل اللغات وأسلسها كتابةً، وهي لغة برمجة عامة يمكن استخدامها لتطوير مختلف أنواع التطبيقات ومن ضمنها تطوير تطبيقات الويب.
وقد ذاع صيت لغة روبي في تطوير الويب بعد نشر إطار العمل Ruby on Rails ويشار إليه اختصارًا بـ "ريلز"، وهناك إطارات عمل أخرى مثل Sinatra لكن يبقى ريلز أشهرها.
إذًا نستخلص من ذلك أن اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام لغة Ruby هي: Ruby و Rails وقواعد البيانات مثل MySQL و PostgreSQL وغيرها.
- لغة Python
لغة بايثون متعددة الاستعمالات، ويمكن عدّها على أنها أسهل لغة برمجة على الإطلاق، إذ تبدو أكوادها البرمجية كأنها مقالة مكتوبة باللغة الإنكليزية، فإذا أردتَ لغةً سهلةً ومدعومةً دعمًا ممتازًا ولها مجتمع كبير وأطر عمل كثيرة فأنت تبحث عن لغة بايثون.
الخيارات المتاحة أمامك هي إطار العمل جانجو Django و فلاسك Flask وغيرها.
إذًا نستخلص من ذلك أن اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام لغة Python هي: Python وإطارات العمل المبنية عليها مثل Django و Flask وقواعد البيانات مثل MySQL و PostgreSQL وغيرها.
- لغة JavaScript
نعم! تُستعمل لغة JavaScript في تطوير الواجهات الخلفية أيضًا، والفضل في ذلك يعود لإطار عمل Node.js الذي يسمح للمطورين باستخدام لغة JavaScript لكتابة برمجيات تعمل من جهة الخادم وذلك لتوليد صفحات ويب ديناميكية قبل إرسالها إلى المتصفح، ويستطيع إطار Node.js التعامل مع الملفات وقواعد البيانات ومختلف أنظمة الشبكات وخدمات أنظمة التشغيل.
فهل يوجد أجمل من استخدام نفس اللغة لبرمجة الواجهات الأمامية لمواقع الويب والواجهات الخلفية؟ وكل ذلك باستخدام لغة سهلة التعلم والاستعمال ومدعومة دعمًا ممتازًا من المجتمع.
- إطار عمل ASP.NET
ASP.NET هي اختصارا لـ Active Server Pages والتي تعني "صفحات الخادم النشط" وهو إطار لتطبيقات الويب تم تطويره وتسويقه من خلال شركة مايكروسوفت، من أجل إعطاء القدرة للمبرمجين على بناء مواقع ويب ديناميكية، وتطبيقات ويب وخدمات ويب، وهو يسمح للمبرمجين بكتابة أكوادهم الخاصة باستخدام أي لغة برمجة يفضلونها على أن تكون مدعومة بإطار عمل NET..
إذًا نستخلص من ذلك أن اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام لغة JavaScript هي: لغة JavaScript وإطار عمل Node.js وإطار Express.js وقواعد البيانات مثل MongoDB و MySQL و PostgreSQL وإطار عمل ASP.NET وغيرهم.
اقرأ أيضًا: كيف تصبح مطور لتطبيقات الويب
3- تطوير تطبيقات الجوال
يشهد تطوير تطبيقات الجوال طفرة في وقتنا الحالي، فهي توفر منصة لمشاركة تطبيقك مع ملايين المستخدمين حول العالم.
هناك نوعان من أنظمة التشغيل الرئيسية في عالم الأجهزة المحمولة وهما Android و iOS (وظهر حديثًا نظام التشغيل HarmonyOS الخاص بشركة هواوي) ويحتوي كلا نظامي التشغيل على عدد كبير من المستخدمين مما يحفز المطورين على إنشاء تطبيقات مفيدة لهم.
وكلا نظامي التشغيل يتطلب لغة برمجة مختلفة لترميز تطبيقاتهما، فأنت مطالب بتطوير تطبيقين منفصلين تمامًا، واحد لهواتف Android وآخر لهواتف iOS، وذلك يسبب زيادةً في حجم العمل المطلوب وصعوبةً في إدارة التغييرات، لذلك ظهرت في السنوات الأخيرة العديد من التقنيات التي تتيح لك إنشاء تطبيقات لكل من Android و iOS بنفس الأكواد البرمجية.
فيما يلي قائمة لغات البرمجة وأطر العمل لبدء تعلم برمجة تطبيقات الجوال:
- لغة Java
تُستخدم لغة Java على نطاق واسع في تطوير تطبيقات Android، إنها اللغة الرسمية لإنشاء تطبيقات Android، فهي لغة سهلة التعلم وكانت أكثر لغات البرمجة شيوعًا لعقد من الزمان.
- لغة Swift
تُستخدم بشكل أساسي في برمجة نظامي تشغيل iOS و macOS، إذا كنت مهتمًا بتطوير تطبيقات iOS ، فيمكنك تعلم لغة Swift.
شيء واحد يجب أن نذكره وهو أنك بحاجة إلى حساب كمطور Apple لتطوير تطبيقات iOS والتي تكلف 99 دولارًا أمريكيًا سنويًا.
- لغة Kotlin
هي لغة برمجة تعمل على منصة لغة Java كما يُمكن تشغيلها على منصة لغة JavaScript طوّر اللغة مجموعة من المُبرمجين في شركة JetBrain وهي نفس الشركة التي طورت Android Studio الأداة الرسمية لتطوير تطبيقات أندرويد، لكنها تتيح كتابة الأكواد البرمجية بعدد أقل من الأسطر وبشكل أسرع وأكثر فاعلية مقارنةً بلغة Java، حيث تُعتَبر شبيهة بلغة Swift.
- لغة Dart
من اللغات التي قامت شركة جوجل بإصدارها، تتمتع بالمرونة وسهولة التعلم، وهي لغة كائنية التوجيه يتم استخدمها في برمجة تطبيقات الهواتف على نظام تشغيل Android و iOS عن طريق استخدام إطار عمل Flutter.
- مكتبة React Native
لغة JavaScript موجودة في كل مكان، من الويب إلى الهواتف المحمولة، React Native هي مكتبة من مكتبات لغة JavaScript مقدمة بواسطة شركة Facebook والتي تعتمد على إطار React.js لإنشاء تطبيقات الهاتف المحمول، لذلك يجب عليك أولاً تعلم لغة Javascript وإطار React.js قبل الشروع في تعلم React Native.
- إطار عمل Flutter
هو برنامج مفتوح المصدر لمجموعة أدوات تطوير البرمجيات تم تطويره من قبل شركة جوجل لبناء واجهات المستخدم لتطبيقات أنظمة تشغيل Android و iOS و Windows وتطبيقات الويب، وذلك يعني أنه يمكنك من خلاله عمل تطبيق واحد يعمل على كل هذه الأنظمة.
إذًا نستخلص من كل ما سبق أن اللغات والتقنيات المستخدمة في تطوير تطبيقات الجوال هي: لغة Java ولغة Swift ولغة Kotlin ولغة Dart ومكتبة React Native وإطار عمل Flutter.
4- تطوير الألعاب
تطوير الألعاب هو المجال الذي يحلم جميع مستخدمي الكمبيوتر بالدخول إليه، فالأغلبية تعرفت على الكمبيوتر من خلال ألعاب الفيديو ومن ثم بدؤوا برحلة الاستكشاف عن البرمجة والتطوير.
لكن قبل أن تنجذب إلى هذا المجال دعني أنبهك لأمر هام، فبرمجة الألعاب تتطلب عملًا كثيرًا من فريق عمل كبير، مدعوم من شركة تجارية، لذلك من الصعب على مطوِّر وحيد أن ينشئ لعبة كاملة من الصفر دون فريق.
وفيما يلي قائمة لغات البرمجة والمحركات لبدء تعلم تطوير ألعاب الفيديو:
- لغة ++C
هي لغة برمجة كائنية تضم العديد من مميزات لغات البرمجة عالية المستوى ومنخفضة المستوى وهي تعتبر امتداد للغة البرمجة C.
وتعتبر لغة C أو اللغات المشتقة منها، مثل: لغة C++ ولغة #C من اللغات الأكثر شيوعاً، فقد استخدمت على نطاق واسع في بناء أنظمة التشغيل مثل Windows و Apple Os X ومعظم برامج شركة Adobe مثل الفوتوشوب Photoshop وأليستريتور Illustrator والبريمير Premier، وبرنامج النمذجة ثلاثية الأبعاد Autodesk Maya مروراً بمتصفح الإنترنت Google Chrome و Mozila Firefox وانتهاءً بالخوادم عالية الأداء وبرامج التسلية كألعاب الفيديو.
لغة C وأخواتها تتطلب سنوات من الخبرة لإتقانها، لذلك نوصيك بتعلمها كلغة أولى لك، فإذا أصبحت خبيرًا فيها، فإن تعلم لغات البرمجة الأخرى هو مجرد مسألة وقت.
- لغة Java
كما ذكرنا سابقًا أن لغة Java تُستخدم على نطاق واسع في تطوير تطبيقات Android، ونستنتج من ذلك أنها اللغة المستخدمة في تطوير ألعاب الهواتف الذكية.
- لغة HTML5 و JavaScript
تذكر أنّ الألعاب غير مرتبطة بتطبيقات سطح المكتب أو الهواتف فقط، فهنالك ألعاب كثيرة تعمل على المتصفحات باستخدام تقنيات HTML5 و JavaScript.
- محرِّك | Engine
يتم تطوير أغلبية الألعاب باستخدام "محرِّك | Engine" والذي يسهِّل الأمر على المطورين ويتيح بيئة تطوير مناسبة للألعاب، ويتيح المميزات الأساسية لجميع الألعاب مثل التحكم بالكاميرا ونمذجة الشخصيات ثلاثية الأبعاد وتحريكها والأمور الفيزيائية الأخرى.
هنالك عدد كبير من محركات تطوير الألعاب، ومن المرجح أنك شاهدت شعارها في الألعاب التي لعبتها من قبل، ومن أشهرها: Unreal Engine و Unity.
إذًا نستخلص من كل ما سبق أن اللغات والتقنيات المستخدمة في تطوير الألعاب هي: لغة C++ ولغة Java ولغة HTML5 ولغة JavaScript ومحرك Unity ومحرك Unreal Engine.
5- الأنظمة المدمجة | إنترنت الأشياء
الأنظمة المدمجة هي أنظمة كمبيوتر شبيهة بالكمبيوتر ولكنها لا تملك كل ميزات الكمبيوتر الذي تراه أمامك الآن.
بعبارة أخرى، النظام المدمج هو كمبيوتر صغير مبرمج لأداء مهام محددة فقط ومدمج ضمن الجهاز أو البيئة المراد استخدامه فيها.
فأنت الآن محاط بالكثير من الأنظمة المدمجة مثل جهاز مقياس مستوى المياه وجهاز التحكم بالتلفاز وجهاز إنذار الحريق وأجهزة المراقبة، حتى إشارات المرور وتنظيم السير وألعاب الأطفال الآلية تصنَّف على أنها أنظمة مدمجة.
إنترنت الأشياء هو نظام مدمج متصل بالإنترنت، لابد الآن أن يتبادر إلى ذهنك الساعات والثلاجات والغسالات الذكية وطائرات الدرون وأنظمة المراقبة عن بعد وأنظمة البيوت الذكية، فهي كلها أمثلة على إنترنت الأشياء.
هل فكرت يومًا أنك تريد امتلاك منزل مثل منزل توني ستارك في فيلم Iron Man؟
إذا كانت الإجابة بنعم، فابدأ في العمل على تعلم إنترنت الأشياء والمعروف أيضًا باسم IoT، إنه مجال سريع النمو في هندسة البرمجيات وسيكون أحد أكثر التقنيات شعبية في المستقبل.
وإليك بعض لغات البرمجة الشائعة المستخدمة في برمجة إنترنت الأشياء، وهي كالتالي:
- لغة C
هي أشهر وأكثر لغة برمجة تستعمَل في برمجة الأنظمة المدمجة وإنترنت الأشياء سواء هي أو اللغات المشتقة منها، مثل: لغة C Arduino ولغة C++ ولغة #C.
- لغة Python
بدأ حديثًا استعمال لغة Python في برمجة تطبيقات الأنظمة المدمجة، صحيح أنها ليست بقوة لغة C ولغة C++ في هذا المجال إلا أنها تستمد ميزاتها وفعاليتها من المكتبات الهائلة المتوافرة فيها.
- لغة Java
صممت لغة Java لتكون مشابهة للغة C واللغات المشتقة منها، ولكنها أسهل في الاستعمال، وبما أن لغة Java من اللغات العالية المستوى فهي مناسبة لمن يود تعلم إنترنت الأشياء.
- لغتي VHDL و Verilog
تستعمل في مجال الأنظمة المدمجة أيضًا لغات أخرى تنضوي ضمن "لغات توصيف العتاد | Hardware Description Languages" وتعتبر لغتي VHDL و Verilog من أشهر لغات توصيف العتاد المستعملة في هذا المجال.
- لغة التجميع Assembly
تصنف من اللغات منخفضة المستوى، ويتطلب تعلم البرمجة باستخدام هذه اللغة فهمًا واسعًا بمعمارية وحدة التحكم المركزية والمعالج بالمجمل لأنها أقرب لغة يفهمها الكمبيوتر.
والانتقال إلى تعلم هذه اللغة قد يكون في مستويات متقدمة من تعلمك لبرمجة الأنظمة المدمجة وتطبيقات إنترنت الأشياء، ومن ميزات البرمجة بهذه اللغة هي التحكم الواسع بالهاردوير والمعالج الذي لا توفره لغات أخرى.
إذًا نستخلص من كل ما سبق أن اللغات والتقنيات المستخدمة في تطوير الأنظمة المدمجة وإنترنت الأشياء هي: لغة C وأخواتها ولغة Python ولغة Java ولغة VHDL ولغة Verilog ولغة Assembly.
6- تطبيقات سطح المكتب
مجال تطوير تطبيقات سطح المكتب كالمحيط الواسع؛ إن لم تملك بوصلة وتعرف إلى أين تريد الاتجاه، ستضيع فيه حتمًا.
وبما أن هناك العديد من أنظمة التشغيل مثل: Windows و Linux و macOS، ويملك كل نظام تشغيل تطبيقات مكتبية خاصة به، لذلك يجب عليك أولًا تحديد نظام التشغيل المستهدف، أي يجب عليك الإجابة على السؤال التالي: هل يستهدف تطبيقك نظام تشغيل محدد، أم تريد لتطبيقك أن يعمل على عدة أنظمة تشغيل في آن واحد؟!
بعد تحديد نظام التشغيل المستهدف، اطلع على اللغات المفضل استعمالها في ذلك النظام لبرمجة تطبيقاته، وهي كما يلي:
- لغة C وأخواتها
من أكثر اللغات استعمالاً في تطوير تطبيقات سطح المكتب، يتم استخدام إطار عمل اسمه QT بلغة ++C لإنشاء تطبيقات سطح مكتب تعمل على أنظمة Windows و Linux.
- لغة VB.NET
هي نسخة جديدة بكل المقاييس من لغة Visual Basic، أصدرتها شركة مايكروسوفت في نهاية عام 2001، وبنتها من الصفر لتجعلها إحدى لغات نظام فيجيوال ستديو دوت نت VS.NET وتستفيد من كل قدرات إطار عمل دوت نت، فتصير بذلك نداً حقيقياً لعائلة لغات ++C، وتعتبر لغة VB.NET تؤام للغة #C ولكن الاختلاف بينهم في طريقة كتابة الكود.
ويمكن من خلال لغة VB.NET إنشاء تطبيقات سطح مكتب تعمل على أنظمة Windows و Linux.
- لغة Objective-C
لغة Objective-C هي لغة كائنية التوجه، وتستخدم بشكل أساسي الآن في تطوير تطبيقات شركة Apple لنظام تشغيلها ماكينتوش MAC OS X ونظام التشغيل الخاص بالأجهزة المحمولة iOS.
- لغة Java
تحتوي لغة Java على مجموعة أدوات Swing لإنشاء تطبيق سطح مكتب قائم على واجهة المستخدم الرسومية، فهو يسمح للمطورين بإنشاء تطبيقات جميلة بسهولة وتصلح للعمل على مختلف أنظمة التشغيل.
- لغة Python
دخلت لغة Python بقوة على هذا المجال نظرًا لامتلاكها الكثير من المكتبات الرائعة وسهولة صياغتها، ويُعد إطاري العمل Tkinter و PyQT من أكثر الأطر شيوعًا في Python لإنشاء تطبيقات برمجية قائمة على واجهة المستخدم الرسومية، فهو يسمح للمطورين بإنشاء تطبيقات جميلة بسهولة وتصلح للعمل على مختلف أنظمة التشغيل.
- إطار العمل Electron
مكتبة اخرى من مكتبات لغة JavaScript المشهورة، تم إصدارها في عام 2013 لتصبح أحد أفضل الخيارات لتطوير تطبيقات سطح المكتب التي تعمل عبر أنظمة التشغيل الأساسية باستخدام تقنيات الويب مثل HTML و CSS و Javascript.
لذلك يجب أن تكون لديك معرفة بلغة JavaScript حتى تتمكن من استخدام إطار العمل Electron.js لتطوير تطبيقات سطح المكتب.
إذًا نستخلص من كل ما سبق أن اللغات والتقنيات المستخدمة في تطوير تطبيقات سطح المكتب هي: لغة C وأخواتها ولغة VB.NET ولغة Objective-C ولغة Java ولغة Python وإطار العمل Electron.
7- علم البيانات
علم البيانات هو العلم الذي يتعامل مع كافة أشكال البيانات بداية من جمعها وتنسيقها وحتى تحليلها واستعراضها واستخراج المؤشرات الهامة منها، فهو العلم الذي يجمع بين مجالات علوم الحاسوب المختلفة، وعلم الإحصاء، بجانب عدد آخر من العلوم الحديثة الهامة.
وبالرغم من أن علم البيانات شيء يحتاجه ويمارسه البشر منذ قديم الزمان، إلا أن المصطلح Data Science لم يكتسب كل هذا الزخم إلا في العقود الأخيرة خاصة بعد اقتحام الإنترنت كل مجالات حياتنا، وما نتج عنه من كم ضخم من البيانات يقُدر بأضعاف أضعاف ما أنتجته البشرية طيلة وجودها.
وتُستخدم هذه البيانات لفهم سلوكنا ودراستنا وتوقع أفعالنا بعد ذلك من قِبَل شركات التكنولوجيا الكبرى، هذا غير أنها تساعد الشركات أيضًا على اتخاذ القرارات والتنبؤ بالمستقبل وتقليل المخاطر، وفي بعض الأحيان يتم استخدامها كمصدر للأموال من خلال بيعها.
وعلم البيانات يتداخل مع العديد من التخصصات الشهيرة اليوم، مثل:
1- تحليل البيانات: هو فحص البيانات المتوفرة بغرض استخلاص واستنتاج معلومات قد تُفيد في معرفة أسباب حدوث أمور من الماضي، أو من أجل تطبيقها في الحاضر، وذلك بهدف تطوير الحياة في المستقبل، ويكون كل ذلك من خلال الخوارزميات.
2- البيانات الضخمة: أو الـ Big Data وهي كميات هائلة جدًا من البيانات تتزايد وتكبر باستمرار، وليس من الممكن معالجة هذه البيانات أو حتى التعامل معها، حيث يتطلب هذا النوع من البيانات أساليب مبتكرة لمعالجتها.
3- الذكاء الاصطناعي: يتم الإشارة له بشكل مختصر بحرفي AI، وهما اختصارًا لكلمة Artificial Intelligence، وهو فرع من فروع علوم الحاسب والذي يمكن بواسطته إنشاء وتصميم برامج تحاكي أسلوب الذكاء الإنساني، والقدرات الذهنية البشرية و أنماط عملها، ويعتبر علم البيانات فئة فرعية من الذكاء الاصطناعي.
4- تعلم الآلة: يتم الإشارة له بشكل مختصر بحرفي ML، وهما اختصارًا لكلمة Machine Learning، وهو مجال من مجالات الذكاء الاصطناعي، حيث يُشير إلى قدرة أنظمة تكنولوجيا المعلومات داخل الآلات على إيجاد حلول للمشكلات بنفسها بشكل مستقل، وذلك عن طريق إدراك الأنماط المختلفة للبيانات، وذلك دون تدخل أو توجيه بشري حيث يتم تعليم الآلة أن تقوم بالمهام بنفسها وتكتسب القدرة على حل المشكلات المستقبلية، فعندما تجد مشكلة معينة لم تقابلها من قبل لا تتوقف الآلة تماماً ولكن تبحث عن أي حل بديل.
5- التعلم العميق: أو الـ Deep Learning، وهو قسم أو جزء من تعلم الآلة والذي هو بدوره يعتبر جزء من العلم الكبير الذي يطلق عليه الذكاء الاصطناعي، والتعلم العميق هي تقنية اخترعها الإنسان من أجل محاولة تقليد الطريقة التي يعمل بها العقل البشري، فالتعلم العميق يحاول أن يحاكي العقل البشري في جميع قدراته، والتي منها؛ الرؤية، وفهم الحديث، وتكوينه، والسمع، وغيرها من القدرات القوية التي يتمتع بها عقلنا البشري ولا ينافسه فيها أي شيء آخر، أو هكذا كان.
وإليك بعض لغات البرمجة الشائعة المستخدمة في كل هذه المجالات، وهي كالتالي:
- لغة Python
مما لا شك فيه أن لغة البرمجة Python أصبحت تتصدر لغات البرمجة في المجالات السابقة وأصبحت من اللغات المطلوبة كشرط في فرص العمل والوظائف التي لها علاقة بهذه المجالات، ولديها مكتبات رائعة في هذه المجالات، مثل: Numpy و Pandas و Scipy و Matplotlib و Scikit-learn.
- لغة ++C / C
تعد اختيارات جيدة لعلوم البيانات فهما من اللغات الأقرب إلى آلية التشغيل الداخلية للكمبيوتر لأنهما يُستخدمان مباشرةً في معالجة الذاكرة، كما تتم كتابة الخوارزميات ذات الصلة غالبًا بهما، ولديهما القدرة على إنتاج نتائج محسّنة أفضل وأقوى، كما أنهما الأسرع نسبيًا مقارنة بلغات البرمجة الأخرى بسبب ميزاتها القوية.
- لغة Java
هي لغة برمجة أخرى لعلوم البيانات، فقدمت لغة Java مكتبات مثل Hadoop و Hive و Spark و Scala و Fink لعلوم البيانات، فهي تُستخدم في تحليل البيانات ومعالجة اللغة الطبيعية والتعلم العميق واستخراج البيانات وغير ذلك.
- لغة R
هي لغة برمجة مفتوحة المصدر، تم تطويرها لإدارة الجوانب الرياضية والرسومية لعلوم البيانات، فهي توفر مرونة ممتازة، كما أنها تسمح للغات البرمجة الأخرى بتغيير هياكل البيانات في لغة R دون بذل المزيد من الجهد، نظرًا لتصميمها القوي الموجه للكائنات.
وتقدم لغة البرمجة R معالجة فعالة للبيانات وأدوات متقدمة لتحليل البيانات، كما توفر لغة R مجموعة متنوعة من الخيارات لتطوير مخططات تحليل البيانات المتميزة.
- لغة MATLAB
هي بيئة برمجة رياضية تم تطويرها للقيام بتعبيرات رياضية متقدمة، ويتعامل MATLAB مع مجموعة من البرامج التي تساعدك على أداء مهام مثل إنشاء المصفوفة والبيانات وتصور الميزات وغير ذلك الكثير. بمساعدة لغة MATLAB هذه ، يمكن للمستخدمين حل المشكلات الرياضية أو الإحصائية الأكثر تعقيدًا بسرعة.
ويسمح MATLAB بتطوير خوارزمية وتطوير واجهة المستخدم، كما يأتي مع مجموعة متنوعة فعالة من الميزات الرياضية، ويقدم MATLAB تصميمًا مدمجًا لتطوير وتصور البيانات الأساسية.
- مكتبة TensorFlow.js
TensorFlow.js هي مكتبة JavaScript أخرى مفتوحة المصدر ومتاحة مجانًا وتستخدم لتنفيذ ونشر نماذج التعلم والذكاء الاصطناعي.
إذًا نستخلص من كل ما سبق أن اللغات والتقنيات المستخدمة في تطوير علم البيانات والعلوم المرتبطة بها، هي: لغة Python ولغة ++C / C ولغة Java ولغة R ولغة MATLAB ومكتبة TensorFlow.js.
8- الحوسبة السحابية
إن الحوسبة السحابية أو Cloud Computing تعني توفير موارد تكنولوجيا المعلومات حسب الطلب عبر الإنترنت مع تسعير التكلفة حسب الاستخدام، فبدلاً من شراء مراكز البيانات الفعلية وامتلاكها والاحتفاظ بها، يمكنك الاستفادة من الخدمات التكنولوجية، مثل إمكانيات الحوسبة، والتخزين، وقواعد البيانات، بأسلوب يعتمد على الاحتياجات لديك، وذلك من خلال جهة موفرة للخدمات السحابية مثل شركة Microsoft و Amazon و IBM.
وتستعين المؤسسات بمختلف أنواعها وأحجامها ومجالاتها بالخدمات السحابية في مجموعة متنوعة من حالات الاستخدام، مثل: الاحتفاظ بنسخة احتياطية من البيانات، والتعافي من الكوارث، واستخدام البريد الإلكتروني، وبيئات افتراضية للأجهزة المكتبية، وتطوير البرامج واختبارها، وتحليلات البيانات الكبيرة، وتطبيقات الويب التي يتم استخدامها من جانب العملاء، كما تستعين الشركات المقدمة للخدمات المالية بالخدمات السحابية لإتاحة الإمكانيات اللازمة لاكتشاف العمليات الاحتيالية ومنعها في الوقت الحقيقي، وأيضًا يستعين صناع ألعاب الفيديو بالخدمات السحابية لتوفير الألعاب عبر الإنترنت لملايين من اللاعبين حول العالم.
وإليك بعض لغات البرمجة الشائعة المستخدمة في الحوسبة السحابية، وهي كالتالي:
- لغة Python
تعد لغة البرمجة Python من أهم اللغات التي تستخدم في مجال الحوسبة السحابية، ويعود السبب في استخدامها كما ذكرنا سابقًا هو سهولة تعلمها، حيث يتم استخدامها على منصة Google Cloud، وغيرها من المنصات.
- لغة Java
تعد لغة البرمجة Java من اللغات الشهيرة التي تستخدم في مجال الحوسبة السحابية، فهي تقدم إطار عمل خاص بها اسمه Spring والذي يستخدم في مجال بناء التطبيقات السحابية.
- لغة Go
تعد لغة البرمجة Go واحدة من لغات البرمجة الحديثة التي تم تطويرها من قِبَل شركة جوجل، وكان الغرض من إنشاء هذه اللغة هو حل مشاكل لغات البرمجة الأخرى، وتم تصميمها كبديل للغة البرمجة ++C، وهذه اللغة مدعومة من قبل منصة Google Cloud.
- لغة R
تعد لغة البرمجة R من اللغات المناسبة لإنشاء الرسوم البيانية والتقارير، ويتم استخدامها أيضاً في مجال الحوسبة السحابية.
إذًا نستخلص من كل ما سبق أن اللغات والتقنيات المستخدمة في تطوير الحوسبة السحابية، هي: لغة Python ولغة Java ولغة Go ولغة R.
9- الأمن السيبراني والاختراق الأخلاقي
الأمن السيبراني هو عملية حماية الأنظمة والشبكات والبرامج والبيانات ضد الهجمات الرقمية، حيث تهدف هذه الهجمات السيبرانية عادةً الوصول إلى المعلومات الحساسة أو تغييرها أو تدميرها؛ بغرض الاستيلاء على المال من المستخدمين أو مقاطعة العمليات التجارية.
ويمثل تنفيذ تدابير الأمن السيبراني تحديًا كبيرًا اليوم نظرًا لوجود عدد أجهزة يفوق أعداد الأشخاص كما أصبح المهاجمون أكثر ابتكارًا.
أما فيما يتعلق بالاختراق الأخلاقي فهو يهدف إلى تحديد نقاط الضعف في الأنظمة التي يتم اختبارها من خلال استخدام أساليب المخترقين دون التسبب في أي اضرار، فيعمل المخترق الأخلاقي بمعرفة وإذن من المنظمة التي يحاولون تعزيز الدفاع عنها ضد المخترقين الفعليين.
وإليك بعض لغات البرمجة الشائعة المستخدمة في هذين المجالين، وهي كالتالي:
- لغة ++C / C
تعتبر كلا من لغتي C و ++C من لغات البرمجة المنخفضة المستوى التي عليك معرفتها وإتقانها كخبير أمن معلوماتي، حيث يمكنك التحكم بكل شيء باستخدام هاتين اللغتين ويمكنك الوصول إلى البنية التحتية والتحكم بقطع الهاردوير للكمبيوتر مثل ذاكرة الوصول العشوائي وعمليات النظام والتي إن لم تكن محمية بشكل جيد يمكن للمتطفلين استغلالها بسهولة.
- لغة Python
يمكنك استخدام لغة Python لإرسال حزم TCP إلى الأجهزة، وإجراء تحليل للبرامج الضارة وإنشاء أنظمة كشف التسلل وغيرها من الوسائل التي تساعدك كخبير معلوماتي.
- لغة JavaScript
نظرًا لاستخدامها المكثف في مجالات عديدة ومتشعبة، وفي حال إتقانك لها فأنت تسبق المتسللين واللصوص بخطوة، حيث ستفهم كيفية عمل مواقع الويب والتطبيقات الأخرى، فبالتالي ستستطيع التصدي للهجمات التي تستهدف مواقع الويب، وهي كثيرة في الحقيقة.
- لغة PHP
تعلّمك لهذه اللغة سيعطيك المزيد والمزيد من المهارات والخبرات التي ستحتاجها في العمل، فعلى سبيل المثال هجمات DDos التي تحاول جعل بعض التطبيقات غير متاحة للمستخدمين، يمكن التصدي لها باستخدام لغة PHP بجانب معرفة القليل من لغة JavaScript، فلك أن تتخيل كم ستصبح ماهرًا في مجالك كخبير معلوماتي لو اتقنت الاثنتين.
- لغة SQL
هي لغة برمجية مخصصة لإدارة البيانات المخزّنة في قواعد البيانات، وفي هذا العصر الذي نعيش به حيث تحيطنا البيانات من كل حدب وصوب، لذلك يتم استخدام SQL على نطاق واسع للحفاظ على البيانات واستردادها، وبالمثل يقوم الهاكرز بهجمات مكثّفة وبشكل متزايد لإتلاف هذه البيانات أو الحصول عليها أو تعديلها أو تسربها، لذلك تعلّم هذه اللغة تعتبر من المهارات الأساسية بالنسبة لك.
إذًا نستخلص من كل ما سبق أن اللغات والتقنيات المستخدمة في الأمن السيبراني والاختراق الأخلاقي، هي: لغة Python ولغة JavaScript ولغة PHP ولغة SQL.
10- قواعد البيانات
يتم الاعتماد على قواعد البيانات من أجل تخزين المعلومات وحفظها، ومنذ بداية عصر الكمبيوتر تم ابتكار طرق مختلفة في تخزين المعلومات وتسجيلها، بداية من حفظها على شكل ملفات نصية، إلى حفظها وتنظيمها على شكل جداول.
لذلك قواعد البيانات هي جزء أساسي يجب عليك تعلمه كمبرمج، فهي العمود الفقري لأي تطبيق سوف تقوم بإنتاجه، تخيل معي أنك قمت بعمل تطبيق محاسبي وأغفلت جانب قاعدة البيانات، فكيف سيتعامل التطبيق مع البيانات التي يسجلها المستخدمين، أين سيقوم بتخزينها والتعديل عليها وتأمينها واستدعائها، كل هذه الأمور يجب عليك كمبرمج أن تكون ملم بها.
وحتى لا أطيل عليك في هذه الفقرة، قمت بعمل مقالة منفصلة عن قواعد البيانات لأهميتها، ستجد بها كل ما تريد معرفته عن قواعد البيانات، أنصحك بشدة قرائتها.
لماذا هناك العديد من لغات البرمجة؟
قد تتساءل، لماذا هناك العديد من لغات البرمجة؟ أليست هذه اللغات كلها تنفذ الهدف ذاته؟ لماذا لا يكون هنالك لغة موحدة بين المبرمجين والكمبيوتر؟
الحقيقة أنّه توجد لغة برمجة واحدة ولكن ليست إحدى اللغات التي ذكرناها في الفقرة قبل السابقة، فاللغة التي نشير إليها هي "لغة الآلة" التي يستطيع معالج الكمبيوتر قراءتها وفهمها، فمن المعلوم أن معالج الكمبيوتر لا يفهم شيئًا سوى الأصفار والواحدات، وهذه اللغة، أي "لغة الآلة" هي تمثيل للأصفار والواحدات بطريقة تخبر الكمبيوتر بما يجب عليه فعله.
ومن الجدير بالذكر أن هذه اللغة عصية الفهم على البشر، إذ حتى إن استطعت كتابة شيفرة بها، فلن يفهمها الآخرون ولن يستطيع أحد التعديل على هذه الشيفرة وتطويرها لاحقًا باستثنائك.
لذلك، في إطار السعي لإيجاد لغة قريبة من لغة البشر، انقسمت لغات البرمجة إلى قسمين:
- لغات برمجة منخفضة المستوى.
- لغات برمجة عالية المستوى.
وذلك تبعًا لمدى قربها من لغة الآلة أو لغة البشر، أي أنّ لغات البرمجة منخفضة المستوى هي اللغات الأقرب للغة الآلة، مثل: لغة Assembly، ولغات البرمجة عالية المستوى هي اللغات الأقرب للغة البشر، مثل: لغة Python و Java.
والحديث عن اللغات عالية المستوى واللغات منخفضة المستوى يقودنا إلى السؤال التالي:
كيف ينفيذ المعالج الشيفرة المكتوبة بلغة عالية المستوى لا يفهمها؟
لقد عرفنا أن المعالج يفهم الأوامر والتعليمات المكتوبة بلغة منخفضة المستوى "لغة الآلة"، فعلى سبيل المثال لو افترضنا أن شخص أجنبي تعلم اللغة العربية وبدأ التحدث بها، بهذا الشكل يمكنه التواصل مباشرةً أي شخص يتحدث باللغة العربية ليخبره بما يريد فعله دون وسيط.
أمَّا كتابة كود برنامج بلغة عالية المستوى أقرب إلى لغة البشر والطلب من الحاسوب تنفيذه، كمثل ناطق بلغة أجنبية يريد التخاطب مع ناطق باللغة العربية دون أن يفقه أحدهما لغة الآخر، ففي هذه الحالة لن يستطيع أحدهما فهم ما يتكلم به الآخر وستفشل عملية التواصل.
قد تقول: لماذا لا يحضران مترجمًا يترجم ما يقوله كل منها للآخر؟
حسنًا، هذا ما يحصل تمامًا عندما يراد تنفيذ برنامج بلغة لا يفهمها معالج الحاسوب.
في اللغات البشرية، هنالك نوع واحد من المترجمين يعرفه الجميع للترجمة من لغة إلى آخرى؛ أما في لغات البرمجة، هنالك نوعان من المترجمين بين اللغات هما: المفسر، والمترجم، وبناءً على ذلك، تنقسم لغات البرمجة إلى لغات مفسرة ولغات مترجمة.
- المفسر (interpreter): وهو برنامج خاصٌ يفسِّر الشيفرة المصدرية لبرنامج مكتوب بلغة عالية المستوى سطرًا بسطر ويحولها إلى لغة منخفضة المستوى لينفذها الكمبيوتر مباشرةً.
- المترجم (compiler): وهو برنامج خاصٌ يحوِّل الملفات المصدرية لبرنامج مكتوب بلغة عالية المستوى إلى ملف تنفيذي مكتوب بلغة الآلة دفعةً واحدةً، ثم يمكن تشغيل الملف التنفيذي على الكمبيوتر للقيام بالمهمة المطلوبة.
حسنًا، هذا الحديث يقودنا إلى سؤال مهم آخر:
لماذا يوجد الكثير من لغات البرمجة عالية المستوى؟
الآن نستطيع القول أنك خطوت خطوةً جيدةً للأمام، وردًا على هذا السؤال هو أنّ كل لغات البرمجة تُستخدم لتحويل فكرة منطقية إلى سلسلة أوامر يمكن للكمبيوتر أن ينفذها.
فعلى سبيل المثال لا الحصر يمكنك استخدام أي من لغة Ruby أو Java أو Python أو C# أو Go أو JavaScript لبناء موقع ويب، لكن يمكنك أيضًا أن تعدّ لغات البرمجة على أنها أدوات، وكل أداة تسهّل مهمة دونًا عن أخرى.
فعلى سبيل المثال، السيارة والحافلة والدراجة والمحراث الزراعي كلها وسائط نقل، لكنها مختلفة الاستخدام؛ فلا يمكنك أن تذهب وعائلتك لقضاء إجازة صيفية مستخدمين المحراث الزراعي، كما لا يمكنك استخدام سيارة سباق في مدينة مكتظة ذات شوارع ضيقة للذهاب بها إلى العمل، مع أن آلية عمل هذه المركبات متشابهة، والأمر سيانٌ بالنسبة إلى البرمجة.
خلاصة القول: أنّ هنالك لغات برمجة متخصصة بإنشاء تطبيقات سطح المكتب، وأخرى متخصصة بإنشاء تطبيقات الجوال، وأخرى تستعمل خصيصًا لمواقع الويب، وأخرى لبرمجة الهاردوير.
كيفية اختيار لغة البرمجة التي تناسبك
أعلم أنك الآن تشعر بالضياع من كثرة لغات البرمجة والتقنيات المستعملة في هذا المجال؛ معك حق، فقد أخبرتك بذلك منذ قليل، فدخول هذا السوق يحتاج منك تحديد هدفك منه بالضبط.
فإن كان لديك فكرة تطبيق وتريد إنشاؤه والربح منه؟ أو تريد العمل لدى شركة محددة؟ أو مواصفات التطبيق الذي تريد إنشاءه أو تريد العمل على تطويره؟ كل ذلك يلعب دورًا في تحديد لغة البرمجة الأنسب لك لتعلمها.
فإن تعلمت أساسيات البرمجة وأتقنت العمل على لغة برمجية محددة، سيسهل عليك الانتقال إلى لغة برمجة أخرى، إذ أغلب لغات البرمجة تشبه بعضها بعضًا من ناحية المفهوم والمضمون وتختلف بعض الشيء من ناحية الصياغة والشكل لذلك، اطمئن من هذه الناحية.
ويمكنك اختيار لغة البرمجة اعتمادًا على المجال الذي تحب العمل فيه، سألخص لك مسار التعلم لمختلف مجالات العمل كالتالي:
- العمل كمطور ويب full-stack: يعني ذلك تعلم تطوير واجهات المستخدم الأمامية، وتطوير الواجهات الخلفية، ويمكنك التخصص بمجال واحد من هذين المجالين فقط، إذ يُطلَب كثيرًا في سوق العمل مبرمجين متخصصين في واجهات المستخدم الأمامية أو الواجهات الخلفية.
- العمل كمطور تطبيقات للهواتف المحمولة: يمكنك تعلم برمجة تطبيقات Android أو iOS كلًا على حدة، أو استعمال تقنيات مثل Flutter للتطوير لكلا النظامين معًا.
- العمل كمطور تطبيقات سطح المكتب: يمكنك البدء بالتخصص في تطوير تطبيقات مكتبية لنظام تشغيل محدَّد عبر تعلم لغة البرمجة المستعملة في ذاك المجال، كما أشرنا إلى ذلك في قسم تطوير تطبيقات سطح المكتب؛ خيار آخر هو تعلم اللغات والتقنيات التي تمكنك من تطوير تطبيقات عابرة للمنصات، أي تعمل على عدة أنظمة تشغيل، مثل: استعمال إطار العمل Electron.
- العمل كمطور للأنظمة المدمجة والأنظمة الذكية: فلغة C هي أساس هذا المجال، سواءً كنتَ تتعامل مع المتحكمات مباشرةً، أو تتعامل مع شريحة مثل أردوينو.
مصادر تعلم البرمجة
أول ما سيتبادر إلى ذهنك بعد قرارك تعلم البرمجة هو من أين سأتعلم؟
لذلك سوف أقدم لك قائمة بالمنصات العالمية، والكتب، وقنوات اليوتيوب التي يمكنك تعلم البرمجة من خلالها، وهم كالتالي:
أولاً: المنصات العالمية لتعلم البرمجة
- منصة Google Developers: سوف تحتاج إلى إنشاء حساب كمطور على هذه المنصة، وسوف تجد على هذه المنصة مجموعة واسعة من الدورات التدريبية، منها ما هو مجاني خاصة المقدمة للمبتدئين، ومنها ما هو مدفوع خاصة الدورات التدريبية المتقدمة، وفي نهاية كل دورة تخوض اختبار مدفوع لكي تحصل على شهادة معتمدة من Google والتي قد تؤهلك للعمل معها أو أحد شركائها بعد ذلك، وإليك رابط منصة Google Developers.
- منصة IBM: يوجد بهذه المنصة مسارين، الأول: مسار تدريبي مجاني، وبعد اجتياز كل مرحلة تحصل على بادج يمكنك عرضه في مواقع التوظيف مثل موقع Linkedin، والثاني: مسار تعليمي مدفوع، وهو أن تلتحق بالأكاديمية الخاصة بـ IBM، ثم حصولك على شهادة معتمدة من الشركة مما قد يؤهلك للعمل معها أو أحد شركائها بعد ذلك، وإليك رابط منصة IBM Training، وهذا رابط IBM Academy.
- منصة Microsoft: وهي منصة تعليمية متخصصة في منتجات شركة مايكروسوفت فقط، وفي نهاية كل دورة تخوض اختبار مدفوع لكي تحصل على شهادة معتمدة من Microsoft والتي قد تؤهلك للعمل معها أو أحد شركائها بعد ذلك، وإليك رابط منصة Microsoft Learn.
- منصة udemy: هي منصة مشهورة بها كورسات مجانية وأخرى مدفوعة، فمن خلال هذه المنصة الرائعة يمكنك الوصول الى الآف الكورسات الرائعة في مجال البرمجة، فيوجد بها أشهر المبرمجين حول العالم يقومون بإعطاء كورسات برمجية بشكل مجاني أو بأسعار رمزية وربما تكون في بضع الأحيان كورسات ذات أسعار مرتفعة، وإليك رابط منصة udemy.
- منصة coursera: تعتبر من أكبر المنصات التي تقدم كورسات متنوعة في عدة مجالات مختلفة، والتي يتم الإشراف والتدريس فيها من قِبَل أساتذة جامعيين من مختلف أنحاء العالم، والجميل في هذه المنصة أن جيمع الكورسات الموجودة عليها مجانية بالكامل، ولكن إذا كنت ترغب بالحصول على شهادة تثبت حصولك على هذا الكورس، سوف يُطلب منك دفع مبلغ بسيط مقابل هذه الشاهدة، وإليك رابط منصة coursera.
- منصة freecodecamp: هي عبارة عن مدرسة اونلاين لتعلم البرمجة بشكل مجاني للمبتدئين، يمكنك الدخول الى المنصة وبدء التعلم من خلال الكورسات الموجودة بشكل مجاني على هذه المنصة المتخصصة بالبرمجة، وجميع الكورسات المتواجدة باللغة الانجليزية، وإليك رابط منصة freecodecamp.
- منصة Codecademy: من أشهر المنصات الأجنبية لتعلم البرمجة، وهي عادة المنصة التي يبدأ بها المبرمجون تعليمهم والدخول في عالم البرمجة، وتعتبر منصة قوية يعتمد عليها، خاصة أن التعليم عليها هو تعليم تفاعلي وليس مجرد محتويات مرئية تشاهدها وتطبق ما فيها، بل يوجد واجبات وتمارين تفاعلية وغيرها من الامور التي تساعد المبرمج المبتدئ في الدخول في عالم البرمجة، وإليك رابط منصة Codecademy.
- منصة كورسات: تعتبر منصة كورسات منصة عربية للتعلم أونلاين، تحتوي المنصة على عشرات الكورسات في البرمجة مع مدربين مختلفين مما يجعلها خيار ممتاز جداً لتعلم البرمجة، وإليك رابط منصة كورسات.
- منصة برمج: هي منصة عربية متخصصة فقط في تعليم البرمجة، ولا تقوم هذه المنصة فقط بعرض الفيديوهات بل تقوم بالقيام بأنشطة تفاعليه تساعد المبرمج على الوصول الى أقصى إستفادة من الكورسات الموجودة لديهم، تحتوي المنصة على كورسات مجانية، كما تحتوي على معكسرات تدريبية مدفوعة ستقوم من خلالها بالتدرب على يدي مبرمجين محترفين، للوصول الى مرحلة متقدمة من إحتراف البرمجة، وإليك رابط منصة برمج.
- منصة رواق: تعتبر المنصة العربية الأكبر للتعليم المفتوح والمتنوع عبر الانترنت، وتقدم منصة رواق مجموعة كبيرة الكورسات في مجال البرمجة مشروحة باللغة العربية وعلى أيدي مبرمجين متمرسين ولهم خبرة طويلة في هذه اللغات والبرمجة، والكورسات منها ما هو مجاني ومنها ما هو مدفوع، والشهادات لديهم مدفوعة أيضًا، وإليك رابط منصة رواق.
- منصة معارف: هي منصة عربية جميع الكورسات بها مجانية، لكن شهاداتها ليست معتمدة لدى الجهات الحكومية، وإليك رابط منصة معارف.
- ProgrammingKnowledge
- freeCodeCamp.org
- thenewboston
- Programming with Mosh
- LearnCode.academy
- Derek Banas
- Google Developers
ثالثًا: قنوات اليوتيوب العربية
- Elzero Web School
- TheNewBaghdad
- Muhammed Essa
- محمد الدسوقى
- Nour Homsi
- Abdullah Almehmadi
- تكنو U
- خالد السعداني
رابعًا: الكتب
- كتاب Automate the Boring Stuff with Python
- كتاب The Self-Taught Programmer
- كتاب Think Like a Programmer
- كتاب Introduction to Algorithms
- كتاب Algorithm Design
- كتاب Clean Code
- كتاب Thinking in Java
- كتاب Learn C++ Programming Lsngusge TutorialsPoint
- كتاب Learn C Programming Lsngusge TutorialsPoint
- كتاب Programming Ruby The Pragmatic Programmers’ Guide
- كتاب Swift
- كتاب The Objective-C Programming Language
نصائح لتعلم البرمجة
مشوار تعلم البرمجة طويل وشاق، وفي نفس الوقت جميل ومسلٍ، لكنك قد تصاب بالإحباط في بداية طريقك لكثرة الأمور التي عليك الإلمام بها، لذا جهزت إليك النصائح الآتية:
- حدد هدفك من تعلم لغة البرمجة وسوق العمل الذي تريد دخوله، لأنك إن لم تحدد هدف لتعلمك البرمجة، أبشرك بأنك ستتخلى عن فكرة تعلم البرمجة بعد حين.
- رشح كورس واحد وكتابًا واحدًا وابدأ بقراءة الكتاب ومتابعة الكورس تدريجيًّا ثم انتقل بعد الانتهاء إلى كورس جديد وكتاب جديد، إذ سيجنبك ذلك التشتت بين الكورسات الكثيرة والكتب العديدة.
- إليك هذه الخطة البسيطة: قم بترشيح قائمة من عدة كتب وكورسات ثم رَتِّب هذه الكتب والكورسات بحسب جودتها ومدى بساطتها وتعقيدها، ثم قم بترقيم الكتب والكورسات وأبدأ بالخيار الأول منها، ثم حدد الوقت التقريبي الذي يأخذه كل خيار لدراسته وجدول الخيارات المتبقية.
- لا تأخذ العلم إلا ممن تثق بعلمه، فالكثير من المبتدئين يحاولون مساعدة غيرهم وقد يضعون معلومات مغلوطة دون قصد.
- طبق ما تعلمته مباشرة، وأنشئ أي شيء من كل أمر جديد تتعلمه حتى لو كان رسمة بسيطة أو شيفرة من عدة أسطر فقط، ففرحة إنجاز شيء مما تعلمته تدفعك لتعلم المزيد والاستمرار في طلب العلم.
- في نهاية كل أسبوع قم بقياس مدى الإنجاز الذي حققته ومدى تطبيق الخطة التي وضعها، وحاول أن تصل النسبة إلى 100%، وأنصحك بقراءة ومتابعة استراتيجيات تنظيم الوقت ورفع الإنتاجية.
- تمرس على حل المشكلات وتحدى نفسك باستمرار، وتابع المسابقات البرمجية واشترك بها إن استطعت.
- لا تنسَ أن تكافئ نفسك في كل مرة تنهي فيها كتابًا أو تكمل العمل على مشروع.
- لا تنسَ حظك من الاستراحة، لأن طريق البرمجة قد يكون له بداية ولكن النهاية بعيدة ومتعبة.
في النهاية، نتمنى أن نكون قد أضفنا لكم معلومة جديدة ومفيدة، وفي حالة وجود أي استفسارات لا تترددوا في ذكرها لنا في التعليقات وسوف نقوم بالتواصل معكم والرد على استفساراتكم.
إضافة تعليق