ما هي البرمجة ؟
السلام عليكم ورحمة الله وبركاته
المقدمة
سنبدأ سلسلة جديدة لكن هذه السلسلة مميزة جدًا
لأنها ستركز عن أساسيات البرمجة والتي تعد بداية دخولك إلى عالم البرمجة الممتع والجميل
أولًا أحتاج لترسيخ بعض النقاط الأساسية التي ستكون معنا طول السلسلة:
- أحتاج منك أن تكون شخصًا يحب التعلم والبحث والتجربة لأن هذه هي طبيعة حياة المبرمجين
- إن علقت في مشكلة أو استصعبت شيئًا فحاول أن تبذل بعض المجهود فيه ثم حاول أن تبحث بنفسك عن الحل وتجرب ثم ليكون أخر ما تفعله هو سؤال شخص ما بعد ما تكون قد بحثت وجربت بنفسك
- لا تعتمد علي مصدر واحد ابدا، بل نوع في مصادرك وابحث عن مصادر متعددة للتعلم
فهذه هي اسلوب الحياة في التعلم، التنوع من مصادر التعلم - حاول دائمًا أن تهتم بالأساسيات والمفاهيم الأساسية الخاصة بأي شيء تجده في عالم البرمجة
لأنها هي التي ستساعدك في فهم الأمور الأكثر تعقيدًا والتي تأتي بعد ذلك وتجد أن الأساس يظل ثابتًا وكل شيء بعده يكون مجرد أداة لا أكثر - أقرا ثم أقرا ثم أقرا، القراءة هي الطريق الأسرع للتعلم
الفيديوهات قد لا تعطيك المعلومة كاملة
حينها عليك قراءة المقالات والكتب
ومتابعة نقاشات الاخرين حول مواضيع معينة وقراءة الأسئلة التي يكتبها الاخرين والردود عليها - أنا لن اشرح الأساسية باستخدام أو بالاعتماد على لغة برمجة معينة، بل سأشرحها بشكل عام وأعطي لك أمثلة متنوعة من لغات البرمجة المختلفة كيف يبدو الأمر سواء كانت تستخدم
PHP
أوTypeScript
أوC++
... وغيرها
لأحاول تقريب لك الصورة الكاملة وتفهم الأساسيات بشكل شامل
لكن معظم الأمثلة ستكون بلغةC++
لمجرد عرض مثال عملي على الأمور التي نتحدث عنها لا أكثر - المقالات والشرح ليست مصممة لكي تنهيها وتفهمها في جلسة واحدة في الغالب لذا لا تستعجل
بل حاول أن تقرأ وتفهم وتجرب بنفسك وخد راحة بين الفترات لتستوعب المعلومة وتفهمها جيدًا
والشيء الذي لم تفهمه حاول تعيده أو تبحث عنه وتقرأ عنه من مصادر أخرى ومن زوايا مختلفة - التطبيق العملي هو الأهم، لا تكتفي بالقراءة بل حاول أن تطبق ما تقرأه وتجربه بنفسك
لأن القراءة بدون تطبيق لا تعطيك الفائدة الكاملة
والتجربة العملية هي التي تعطيك الفهم الكامل للمعلومة
ما قبل البرمجة
عليك أن تعرف أن الجهاز التي تستخدمه لقراءة هذه المقالة الجميلة هو مجرد حديد ونحاس وسلك كهربائي هنا وهناك
بالتالي هو لا يفقه ولا يفهم شيء سوى أن هناك تيار كهربائي يمر فيشتغل او لا يمر فينطفئ
بالتالي عندما يمر تيار كهربائي في سلك معين فنرمز له بالـ 1
وعندما لا يمر تيار كهربائي فنرمز له بالـ 0
هكذا فتحنا باب صغير جدا لتواصل مع هذا الجهاز وهو الـ 1
والـ 0
ملحوظة
: الجهاز لا يفهم الـ1
والـ0
بحد ذاتهم بمعنى أنه لا يعرف شيء عنهما، هذه مجرد تمثيل للتيار الكهربائي الذي يمر أو لا يمر في الدوائر الكهربائية
نحن الذين قمنا بتحديد أن الـ1
يعني هناك تيار يمر هنا والـ0
يعني لا يوجد تيار يمر هنا
ثم بدأنا نصنع انماط معينة او لغة تواصل معينة من الـ 1
والـ 0
لنتواصل بها مع الجهاز مثل أن 01100001
تعني a
و 01100010
تعني b
وهكذا
حتى الأرقام البشرية التي نعرفها بدأنا تمثيلها بأنماط من 0
و 1
مثل أن 0001
تعني الرقم 1
و 0010
تعني الرقم 2
وهكذا
وهذه لغة تسمى لغة الآلة Machine Language
وهي لغة تفهمها الآلة فقط
ونظام العد الذي يحتوي على الـ 1
والـ 0
يسمى نظام العد الثنائي Binary Number
والرقم 0
و 1
يسمى Bit
وقمنا بتعريفها على أنها أصغر وحدة تخزين في الحاسوب
ثم بدأنا نتقدم ونصنع لغة اسهل لنتواصل مع الجهاز وهي لغة Assembly Language
وهي لغة تستخدم حروف وأوامر بسيطة باللغة الإنجليزية مثل ADD
و SUB
و MOV
كلمات مقروءة ومفهومة ونستطيع حفظها على عكس 0
و 1
ثم يتم ترجمة لغة الـ Assembly
إلى لغة الآلة Machine Language
فيما بعد والتي تكون في النهاية مجموعة من الـ 0
والـ 1
يفهما الجهاز بطريقة ما
مع مرور الوقت، تطورت لغات البرمجة بشكل كبير، وظهرت لغات البرمجة كثيرة مثل C++
و Java
و Python
تبسط عملية البرمجة أكثر وتجعلها أسهل ومفهومة أكثر ويسهل التعامل معها وبها مميزات متنوعة
عملية الترجمة من لغة برمجة مثل C++
إلى لغة الآلة Machine Language
تتم بواسطة وسيط نسميه الـ Compiler
أو الـ Interpreter
وهو يقوم بترجمة الأوامر التي كتبتها في لغة البرمجة إلى لغة الآلة التي يفهمها الجهاز
تخيل كيف بدأنا من التواصل مع الجهاز بالـ 1
والـ 0
ثم تطورنا لنصنع لغات برمجة متقدمة ثم وصلنا لعصر الذكاء الاصطناعي والتعلم الآلي والروبوتات والألعاب الإلكترونية والتطبيقات الذكية والمواقع الإلكترونية والبرامج الضخمة و ... والكثير الكثير
نحن هنا سنحول التركيز على أساسيات لغات البرمجة التي نستخدمها دائما في أي لغة
والتي يجب أن تعرفها بغض النظر عن اللغة التي تستخدما او تتعلمها
ما هي البرمجة ؟
البرمجة هي ببساطة كتابة بعض الأوامر والتعليمات بلغة معينة لينفذها الجهاز
بمعنى أنها لغة تستخدمها لتخاطب بها الآلة لتنفيذ مهام محددة
تلك اللغة مهما كانت فهي مجرد وسيط بينك وبين تلك الحديدة التي لا تفهم شيء
كل ما في الأمر أنك تقوم بكتابة أمر معين في لغة برمجة معينة مثلا اجمع لي 5 و 10
ثم تقوم لغة البرمجة التي تستخدمها بتحويل الأمر التي كتبته إلى لغة الـ 0
و 1
بنمط معين ليفهمها الجهاز
ويوجد لغات كثيرة تستخدمها لتتواصل مع الجهاز
وكل لغة لها مميزاتها وخواصها ولها التخصص التي تمتاز فيه
مثلا ستجد لغات برمجة جيدة في مجالات معينة ولغات مخصصة بشكل كامل لمجال معين
وكل مجال وتخصص له اللغات الخاصة بها واختيارك للغة تعتمد على المجال والفكرة وما الذي تريد القيام به
مجالات البرمجة وما الأبعاد التي يمكنك أن تصل إليها
مجالات البرمجة كثيرة جدًا ومتنوعة وتشمل العديد من الأبعاد والتخصصات
وهناك العديد من الفرص المهنية والمجالات التي يمكنك العمل بها بعد تعلم البرمجة، منها:
- مواقع الويب
وهي تطوير المواقع الإلكترونية والمدونات وأي موقع بشكل عام على الويب وتعتمد على لغات البرمجة مثلJavaScript
وTypeScript
وPHP
وغيرها ... - برامج سطح المكتب
وهي تطوير البرامج التي تجدها في جهازك بشكل عام وتعتمد على لغات مثلC#
وJava
وC++
... وغيرها - تطبيقات الهاتف
وهي تطوير تطبيقات الهواتف الذكية وتعتمد على لغات مثلJava
وKotlin
وSwift
وDart
... وغيرها - الألعاب
وهي تطوير الألعاب الإلكترونية وتعتمد على لغات مثلC#
وC++
وPython
وGDScript
وGML
... وغيرها - الذكاء الاصطناعي
وهي تطوير البرامج التي تعتمد على الذكاء الاصطناعي والتعلم الآلي وتعتمد على لغات مثلPython
وR
وJava
وC++
... وغيرها - الروبوتات
وهي تطوير البرامج التي تعمل على تحكم بالروبوتات والتعامل معها وتعتمد على لغات مثلC
وC++
وJava
... وغيرها - البيانات
وهي تطوير البرامج التي تعمل على تحليل البيانات والتعامل معها وتعتمد على لغات مثلPython
وR
وScala
... وغيرها - ... والعديد من المجالات الأخرى
وكل مجال أو عنوان ذكرناه يحتوي على تخصصات ومجالات فرعية كثيرة جدًا ومتنوعة
وكل تخصص قد يضم ويشترك مع مجالات وتخصصات اخرى
ويوجد تخصصات ومجالات لا يمكنك حصرها او تحديدها بشكل كامل فالمجال يكبر باستمرار ويتطور وتظهر لغات جديدة وتقنيات جديدة ومجالات جديدة وتخصصات جديدة
لكن تعرف ما الشيء الجميل في هذا الكلام ؟
أن كل شيء يتغير ما عادا أساسيات أي مجال أو تخصص
وأيضًا أي لغة جديدة أو قديمة بها أساسيات ثابتة ومفاهيم أساسية تجدها في كل لغات البرمجة
وهذ ما سنركز عليها في هذه السلسلة الجديدة من المقالات
فعلى سبيل المثال لو تعلمت لغة C++
وأتقنت الأساسيات من خلالها ستجد أنك تستطيع التنقل بين اللغات أخرى بشكل أسهل وأسرع
لأنها كلها تشترك في الأساسيات والمفاهيم الأساسية
وهذا ما سنركز عليه في هذه السلسلة الجديدة الأمور الأساسية التي تجدها في كل لغات البرمجة