Introdction of Programming

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

مقدمة عن البرمجة

البرمجة :

هي عمليَّة تعليم الحاسوب إجراء مهمة ما, فا هي الوسيلة التي تعطي بها أوامر للكمبيوتر لتنفيذ مهام معينة لتحقيق فكرتك أو مشروعك. وهذه الأوامر التي تعطيها للكمبيوتر تكون عن طريق لغة معينة يفهمها الكمبيوتر وتسمى لغة برمجة وهي لغة التخاطب بينك وبين الكمبيوتر وهناك بعض اللغات التي يمكنها مخاطبة الكمبيوتر مباشرة وهناك بعض اللغات التي تحتاج لمترجم ليستطيع ترجمة ما تكتبه للغة الآلة ( Machine Language ) حتى يفهمها الكمبيوتر ويقوم بتنفيذ فكرتك.

كيف تتعامل الحواسيب مع بعضها :

للآلات لُغة طبيعيَّة كما البشر. لا تَفهَم الحواسيب لُغة البشر الطبيعيّة، فلُغتها الخاصّة مكوَّنة من أكواد ثنائيَّة، أي أصفار (0) وواحدات (1). تُمثِّل هذه الأصفار والواحدات حالتين: مُشغَّل (1) ومُطفأ (0). تلك هي اللغة الطبيعيَّة للأجزاء الإلكترونيَّة، والتي ستكون لنا صعبةً جدًّا كبشر للتحدث فيها مع الحواسيب.

ما لغة البرمجة التي عليَّ تعلمها أولًا؟

أول لغة برمجة ننصح المبتدئين بتعلّمها فهي لغة Javascript. انطلاقًا من هذه اللغة ستكون قادرًا على الرسم وتصميم الألعاب كذلك، و هذا يعتبر محمّسًا ودافعًا قويًّا للانطلاق والتعمّق داخل عالم البرمجة. وحين تتعلّم لغتك الأولى ستكون قد قفزت مسافةً كبيرةً، وسيسهل عليك تعلم اللغات الأخرى مثل ++C أو Java أو Python، لأن نفس الأساسيات تتحكم في كل لغة حول العالم، والاختلاف يكمن في طريقة صياغة الأوامر فقط.

ما هي مسارات البرمجة ؟

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

1- تطوير المواقع

2- تطوير تطبيقات الهواتف الذكية

3- تطوير الألعاب

4- تطوير برامج سطح المكتب

4-الذكاء الاصطناعي

5- علوم البيانات

6- أمن المعلومات

مسار تطوير المواقع

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

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

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

مسار تطوير تطبيقات الهواتف الذكية

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

كيف اتعلم البرمجة ؟

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

المسار

CS50

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

لغة برمجة

تعلم واحده من أحد لغات البرمجة ولكن لا ننصحك باان لاتبدأ بي لفه يسهل تعلمها مثل ال Python لأنك حينما تنتقل الي لغة اخري من اللغات الاصعب مثلا C++ ستجد صعوبه جدا في تعلمها ولكن اذا بدأت بي لفه متوسط صعوبتها مثلا Javascript او غيرها سيكون من السهل عليك التنقل بين اللغات البرمجة الأخري

Problem Solving

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

Algorithm

الخوارزمية هي مجموعة من الخطوات الرياضية والمنطقية والمتسلسلة اللازمة لحل مشكلة ما

Data Structure

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

Design Patterns

يُعرَف نمط التصميم Design Pattern في هندسة البرمجيات بأنه حل عام قابل للتكرار لمشكلة متكررة الحدوث في تصميم البرمجيات. نمط التصميم ليس نموذجا نهائيا يمكن تحويله إلى تعليمات برمجية مباشرة؛ بل هو توصيف أو قالب لكيفية حل المشكلة، يمكن استخدامه في العديد من الحالات المختلفة

الأدوات الازمه لبدأ العمل

محرر الأكواد : هو البرنامج التي تقوم بكتابه الكود البرمجي عليه وهناك الكثير من محررات الاكواد ولكن ننصح بي التعامل مع Visual Studio Code

Visual Studio Code

هو محرر للنص البرمجي من مايكروسوفت. المحرر مفتوح المصدر ويعمل على نظم التشغيل ويندوز وماك أو إس ولينكس. وتم إطلاقه من قبل مايكروسوفت

فديو شرح كيفيه أستخدام المحرر تحميل المحرر

Atom

هو محرر كود مصدري ونصوص مفتوح المصدر تم تطويره وإطلاقه من قبل غيت هاب، يعمل على أنظمة ويندوز ولينكس وماك

فديو شرح كيفيه أستخدام المحرر تحميل المحرر

Brackets

هو مفتوح المصدر محرر مكتوب في HTML, CSSو جافا سكريبت مع التركيز بشكل أساسي على تطوير الشبكة

فديو شرح كيفيه أستخدام المحرر تحميل المحرر

نصائح للمبتدائين

1- كتابة كود دون التخطيط:

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

2- كتابة كود دون تعليقات:

في بداية مشوارك البرمجي قد تظن أن كتابة التعليقات إضاعة للوقت لأن الأكواد التي تكتبها تكون بسيطة ولكن فيما بعد ستدرك أهميتها عندما تضطر للرجوع إلى كود ما لتعديله فقد تضيّع الكثير من الوقت لإعادة فهمه بالرغم من أنك أنت من كتبه أما بوجود التعليقات لن يستغرق منك الأمر سوى بضع ثوانٍ وكذلك فإن التعليقات أمر مهم جداً أثناء العمل مع فريق برمجي متكامل.

3- عدم البحث في Google:

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

4- الهروب من الأخطاء:

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

5- إعادة اختراع العجلة:

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