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

المختلف في هذا الدليل أنك ستجد فيه التالي:

  • شرح مبسط بالأمثلة العملية لمعنى البرمجة.
  • ستعرف كيف نشأت لغات البرمجة المختلفة. ولماذا توجد العديد من لغات البرمجة؟
  • ستعرف ما معنى كلمة ” برنامج ” بطريقة بسيطة ومرحة.
  • ستفهم جيداً معنى بعض المصطلحات البرمجية مثل [ الخوارزميات ( ِAlgorithms ) – و Syntax ) ] وغيرها بالأمثلة العملية.
  • ستتعرف على أهم تخصصات البرمجة المطلوبة في سوق العمل.
  • ستتعرف على معنى أسلوب البرمجة ( Programming Paradigm )، وأشهر أساليب البرمجة المختلفة.

ليس هذا كل شيء، فأهم ما في هذا الدليل هو أنني سأضع لك العديد من الأدلة الشاملة العملية لكي تتعلم البرمجة من أفضل المصادر العربية والأجنبية.

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

لهذا أرجو أن تقرأ كل كلمة في هذا الدليل، لأنك ستجد الكثير من المعلومات المفيدة والروابط التي أضعها لك بين السطور… اتفقنا؟ جيد، هيا بنا نبدأ! 

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

البرمجة هي عملية بناء وتصميم برامج حاسوبية يستطيع أي كومبيوتر فهمها، وذلك من أجل تنفيذ مهام محددة – مثل العمليات الحسابية أو الرسم أو حفظ وتخزين المعلومات.

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

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

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

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

  1. تحرّك 4 خطوات للأمام.
  2. ارفع يدك اليمنى لأعلى 50 سم حتى تجد البن.
  3. احمل كيس البن .
  4. انزل بيدك اليمنى 15سم حتى تصطدم بالمنضدة.
  5. ضع كيس البن على المنضدة.
  6. تحرّك 3 خطوات لليسار.
  7. ارفع يدك اليمنى لأعلى 30 سم.
  8. ستجد أمام يدك كنكة البن التي نستخدمها لصناعة القهوة.
  9. احمل كنكة البن في يديك.
  10. تحرّك 3 خطوات لليمين.
  11. ارفع يديك اليسرى 25 سم حتى تصدم بالصنبور.
  12. حرك يديك اليسرى 8 سم لليمين حتى تجد مفتاح الصنبور

وغيرها من الخطوات الطويلة والمرتبة والدقيقة التي يجب عليك ألا تخطئ في شرحها حتى يقوم صديقك ذلك بصناعة القهوة… هذه هي البرمجة.

الخطوات السابقة تشبه البرامج المختلفة التي يتعامل معها الكمبيوتر… فالبرنامج ما هو إلا خطوات محددة مرتبة يستطيع فهمها و التعامل معها.

الكمبيوتر أداة لا تعرف أو ترى أو تسمع أي شيء إلا الكهرباء… هل الكهرباء مفتوحة ( On ) أم مغلقة ( Off )؟ أو بمعنى آخر لغة الأرقام الثنائية ( 0 و 1 ).

أي جزء أو قطعة من أي كومبيوتر مثل:

  • المعالج ( Processor )
  • الذاكرة المؤقتة ( RAM )
  • الشاشة ( Monitor )
  • الفأرة ( Mouse )

وغيرها الكثير ما هو إلا عبارة عن مجموعة من الدوائر الكهربية التي تتواصل فيما بينها طبقاً لتعليمات محددة أو كما تُسمى البرامج… هناك آلاف البرامج التي يعتمد عليها الحاسوب لتنفيذ أي مهمة مطلوبة منه.

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

كيفية التواصل مع الحاسوب

البرمجة ما هي إلا طريقة للتواصل مع الكومبيوتر، ولكي تعرف ما هي البرمجة بصورة أعمق عليك أن تعرف كيف يتم ذلك التواصل.

الكمبيوتر أول ما بدأ كان عبارة عن آلات ميكانيكية تستخدم التروس والتصميمات الهندسية العبقرية لتنفيذ بعض المهام الحسابية لتوفير المجهود مثل ( معرفة التوقيت – إجراء العمليات الحسابية الكبيرة مثل جمع تعداد السكان – تخزين المعلومات ).

التواصل مع هذا النوع من الأجهزة كان عبارة عن بعض الحركات الميكانيكية ( فتح صمام – تحريك مؤشر )… يمكنك مشاهدة الفيديو التالي لمعرفة ما الذي أتحدث عنه تحديداً.

بعد اكتشاف الكهرباء قام العلماء و المهندسين باستغلالها في تطوير الأجهزة الميكانيكية المختلفة، فالكهرباء أسهل في التحكم وتتحرك أسرع بكثير من التروس وناقلات الحركة الميكانيكية.

في ذلك الوقت كل ما كنت تحتاج إليه لكي تتواصل مع الأجهزة الكهربية هو غلق بعض المفاتيح ( Off أو 0 بلغة الأرقام الثنائية ) أو فتح بعض المفاتيح ( On أو 1 بلغة الأرقام الثنائية ) حتى تتحكم في حركة التيار في الدوائر الكهربية المختلفة.

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

وهنا ظهرت المشكلة؛ في هذه الحالة عندما تتواصل مع  الحاسوب سيتوجب عليك التحكم في آلاف الدوائر الكهربية في وقت واحد… بمعنى آخر سيتوجب عليك إعطاء التعليمات بهذا الشكل 1100001100.

تخيل معي أن الرقم الثنائي السابق يمثل رقم 780 بنظام الأرقام العشرية التي نعرفها جيداً… فماذا لو اردنا من الحاسوب كتابة رقم أكبر بكثير؟ ماذا لو أردنا أن نخبره بتخزين هذا الرقم في الذاكرة أو بإجراء أي عملية حسابية؟

هذا ما يُسمى لغة الآلة ( Machine Language – Machine code )، فهي عبارة عن إعطاء التعليمات للكومبيوتر على هيئة أكواد مكونة من الصفر و الواحد.

لغة الآلة هي اللغة الوحيدة التي يفهمها الحاسوب ولكنها لغة صعبة على البشر العاديين… هنا قام العلماء بتطوير نظام للترجمة.

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

ما هي لغة البرمجة؟

يا ترى ما هو الفرق بين اللغة الإنجليزية واللغة الفرنسية؟ الحروف تقريباً واحدة وطريقة الكتابة واحدة ( من اليسار إلى اليمين )… الفرق الجوهري هو القواعد وطريقة النطق.

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

إذن لغة البرمجة هي الطريقة التي نكتب بها هذه التعليمات، ومثل لغات البشر العادية هناك قواعد يجب اتباعها ( النحو – Grammar ) هناك أيضاً قواعد في لغات البرمجة.

هذه القواعد في عالم البرمجة تُسمى Syntax، كل عالم أو مطور أو جهة قامت بالعمل على تطوير لغة برمجة معينة قامت بوضع الـ Syntax الخاص بها وكيف تعمل اللغة بشكل عام.

انظر إلى الصورة بالإسفل لبرنامج بسيط وظيفته أن يعرض كلمة ( Hello World ) – هذا هو أول برنامج ستتعلمه إن أردت أن تصبح مبرمجاً – بعدة لغات:


كما ترى لكل لغة برمجة طريقة في الكتابة ( شكل الأقواس – علامات التنصيص ) وغيرها … هذا هو الـ syntax بشكل عملي، لا تقلق ستعرف لاحقاً بنفسك أن الكتابة في حد ذاتها بأي لغة برمجة أسهل مما تتصور.

كما أشرت سابقاً، لغات البرمجة ظهرت لكي تقلل من تعامل البشر مع لغة الآلة بشكل مباشر، ولهذا يمكننا تصنيف لغات البرمجة كالتالي:

  • لغات منخفضة المستوى (Low Level Languages): وهي اللغات التي تقترب إلى حد بعيد من لغة الآلات.
  • لغات عالية المستوى (High Level Languages): وهي لغات تبتعد عن لغة الآلات، وتقترب من لغتنا العادية، وهي الأكثر شيوعاً الآن، ويعتمد عليها أغلب المبرمجين في وظائفهم كل يوم.

ما هي وظيفة المبرمج؟

لقد قام الإنسان باختراع الآلة لمساعدته في حل المشكلات المختلفة، وتوفير الوقت والجهد وهذه وظيفة أي كومبيوتر أو حاسوب مهما كان نوعه أو شكله.

المبرمج هو شخص يفهم جيداً نوعية المشكلات التي يتعامل معها، ويعرف كيف يعمل الكمبيوتر، وكيف يتواصل معه لكي يعتمد عليه في حل هذه المشكلات.

يمكننا أن نلخص عملية البرمجة في الخطوات التالية:

1. فهم المشكلة: أي برنامج أو تطبيق تتعامل معه هو في الأساس حل لمشكلة معينة ( تطبيق أوبر هو حل لمشكلة المواصلات – برنامج File Explorer على الويندوز هو حل لمشكلة البحث عن الملفات بطريقة سهلة و مرئية ).

المبرمج الناجح هو الشخص الذي يعرف جيداً المشكلة التي يتعامل معها.

2. تحديد حل للمشكلة: المبرمج يفهم جيداً كيف يعمل وكيف أن يستغله في حل المشكلة بطريقة سهلة وذكية ومنطقية ومرتبة.

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

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

4. تعديل وتحسين البرنامج بناءاً على ردود الأفعال من الخطوات السابقة.

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

ما هي الخوارزميات ( Algorithms )؟

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

الخوارزمية في علوم الكمبيوتر هي عبارة عن مجموعة من الخطوات والتعليمات المنطقية لحل مشكلة معينة أو لتنفيذ مهمة محددة، وبالمناسبة كلمة ” خوارزمية ” جاءت من اسم العالم أبو جعفر الخوارزمي.

كما لاحظت تعريف الخوارزمية يقترب كثيراً من تعريف البرنامج؛ فكلاهما عبارة عن مجموعة من الخطوات المنطقية المرتبة، ولكن الفارق أن الخوارزميات أكثر شمولاً.

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

هذا هو الفارق الجوهري بين الخوارزمية وبين البرنامج، كما أن الخوارزميات جاءت من علوم الرياضيات، ولهذا تجد التركيز عليها في استخدام الدوال ( Functions ) المختلفة.

فمثلاً لو قمت بإعطاءك جدول كبير به أكثر من 1500 عدد، وأردت منك أن تخبرني ما هو أكبر عدد في هذا الجدول… يا ترى ما الذي ستفعله؟

حل هذه المسألة هو عبارة عن خوارزمية رياضية بسيطة، ولهذا ستجد في أغلب لغات البرمجة دالة تعتمد على الترتيب ( Sorting ).

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

فكر في مثال الترتيب السابق، ألا تعتقد أنه يوجد أكثر من طريقة لحل هذه المسألة، فمثلاً يمكنك أن تقارن بين كل رقم في الجدول مع غيره من الأرقام ( وهذا أطول حل ممكن ).

أو يمكنك أن تأخذ العدد الأول وتطرح منه العدد الذي يليه ثم الذي يليه… وهكذا حتى تجد نتيجة الطرح سالبة، وفي هذا الحالة تأخذ العدد الجديد الذي وجدته ( لأنه أكبر ) وتكرر نفس الخطوة السابقة ( اطرح منه الأعداد التي تليه في الجدول ) حتى تجد نتيجة سالبة.

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