random
آخر التقارير

مقدمة في عالم البرمجة للمبتدئين - الجزء الأوَّل: ما هي البرمجة؟



قد تتساءل إن كنت موظَّفًا لست مُختصًا بالبرمجة في شركة لتطوير البرمجيَّات عن ماهيَّة عمل المُبرمجين، وخاصةً أنَّك تسمع العبارات الرنّانة التي يتداولونها كُل يوم. هذا المقال لك في حال كنت كذلك. سواءً كُنت مندوب مبيعات أو طبيب أو محامٍ أو رائِد أعمال أو محاسِب، وكُنت ترغب بتعلُّم التكويد، فهذا أفضل مكان لتبدأ منه. وهذه المقالة عبارة عن خلاصة ما علَّمته في دوراتي التدريبيَّة. لن أُناقِش هنا أي أكواد أو لغات برمجة أو أي شيء من هذا النوع، بل سأشرح مفاهيم عامة وحسب.


صمّمَ الصورة جون أديسانيا

كيف نُظِّمت سلسلة المقالات هذه؟ 

هذه المقالة مُقسَّمة إلى أربَع تدوينات. في نهاية كُل تدوينة قسمًا للاختبارات لمُساعدتك على حفظ ما قرأته بشكلٍ أفضل. ستَجِد بعد ذلك القسم قسمًا يُدعى "ما التالي؟" وآخر لأجوبة الاختبارات. لاحِظ أنَّ الكلمات المُهمَّة في سلسلة مقالاتنا ستكون مكتوبة بخطٍّ عريض، ككلمة خوارزميَّة.
صمّمَ الصورة جون أديسانيا

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

يُمكننا الإجابة عن هذا السؤال بالجواب البسيط التالي: "البرمجة هي عمليَّة تعليم الحاسوب إجراء مهمة ما"، أو يُشار إليها عادةً بالتكويد. فما هو البرنامج الحاسوبي إذًا؟ البرنامج الحاسوبي هو سلسلة من التعليمات يُنفذُها الحاسوب. يُمكِن أن يكون الحاسوب في التعريف أعلاه أي جهاز قادِر على معالجة الأكواد، فقد يكون هاتفًا ذكيًّا أو صرّافًا أو خادِمًا على سبيل المثال لا الحصر.

مثال عن البرمجة

أولًا، هناك نمط لكل شيء في حياتنا اليوميَّة. يعمل الكون بطريقةٍ يُمكِن التنبؤ بها لحدٍّ ما، فمثلًا: تعاقب الليل والنهار، الفصول، شروق الشمس وغروبها ...إلخ. يَعيش الناس بشكِل روتيني، كالاستيقاظ صباحًا ثُم التوجُّه إلى المدرسة أو العمل. نتلقى تعليمات من أشخاصٍ آخرين كمُشريفنا في العمل. يُمكن شَرح كيفيَّة طَهوِنا لوصفة معينة بسلسلة محدودة من الخطوات. ثانيًا، في كُل مرَّة نستخدم أجهزتنا الذكيَّة تعمل العديد من الأكواد في الخلفيَّة. قد يبدو تَحريك مُؤشِّر الفأرة من موضعٍ لآخر شيئًا بسيطًا، إلّا أنَّه حقيقةً يُنتِج تشغيل العديد من الأكواد. شيء بسيط ككتابة بعض الأحرف في موقع مُستندات جوجل يؤدي إلى تنفيذ عشرات الأكواد في الخلفيَّة. كُل شيء مكوَّن من الأكواد في كُل مكان.

لغة الحاسوب الطبيعيَّة

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

مدخل إلى لغات البرمجة

نَستخدِم لُغةً أقرب إلى لغاتنا البشريَّة، كالعربيَّة والإنجليزيَّة والفرنسيَّة، للتحدُّث إلى الآلات المُتحدثة بالأرقام الثنائيَّة. لُغات البرمجة أقرب إلى لغاتنا الطبيعيّة، إلا أنّها أكثر تنظيمًا وينبغي أن تكون مُمكنة التعلُّم كُليًّا. لغات البرمجة يُمكِن أن تكون رفيعة (عالية) أو منخفضة المستوى. لغات البرمجة عالية المُستوى أبعد من لغة الآلة مِن اللغات منخفضة المُستوى. يُسمَّى هذا "البُعِد" عادةً بالتجريد، ولكّننا لن نتطرَق له في هذه السلسلة. تحتاج الحواسيب لطريقةٍ لفهم لغتنا البشريَّة، والمُترجِمات هي تلك الطريقة.

ما هي المُترجِمات؟

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

يُمكِن أن تكون المُترجمات:
  • مُفسِّرات
  • مُصرِّفات
  • خليط من المُفسِّرات والمُصرِّفات
  • مُجمِّعات

المُفسِّرات

بعض اللغة تفسيريَّة، أي أنَّ المُترجِم يُعالج الكود المصدري سطرًا سطرًا ويُنفِّذ كُل سطر في البرنامج النهائي المُنتَج. ما يعني أنَّ الكود المصدري المُفسَّر يبدأ العمل ويستمِر حتّى يواجه خطأً، ليتوقَف ويُبلِّغ عنه. سنتكلَّم عن هذا بالتفصيل لاحقًا في الجزء الثالث. لغة بايثون هي إحدى الأمثلة الجيدة عن لغات البرمجة التفسيريَّة.

المُصرِّفات

تعمل المُصرِّفات بشكلٍ مُختلف، فتحوِّل الكود المصدري كاملًا أولًا إلى كودٍ ثنائي، وتُنفِّذ الكود الثنائي بعدها. تُكشَف وتُعرَض الأخطاء الموجودة في الكود المصدري خلال التصريف. يؤدي هذا إلى مُقاطعة عمليَّة التصريف، وعدم توليد الكود الثنائي.
تُترجِم المُفسِّرات سطرًا سطرًا وتُنفِّذ السطر وتنتقل للذي يليه، بينما تُترجِم المُصرِّفات أسطر البرنامج كاملةً إلى ملف (كود ثنائي) وتُنفِّذه.
أتذكر تعريف البرنامج الحاسوبي؟ هو سلسلة من التعليمات يُنفذها الحاسوب. يُدعى تنفيذ البرنامج عادةً عمليَّة. تستخدم هذه البرامج قدرًا معينًا من موارد الحاسوب أو الهاتف كالذاكرة ومساحة نظام الملفات. يُمكن أن يُقال لتنفيذ البرنامج أيضًا تشغيل. نستخدم الكلمة "تشغيل" عند تنفيذ برنامج حاسوبي. الوقت الذي يستغرقه تشغيل ذلك البرنامج يُعرَف بوقت تشغيل البرنامج. من الشائِع أيضًا تسمية البرامج بالتطبيقات. نَنسُب كذلك البرنامج إلى المنصة أو البيئة التي يعملها عليها أو المُصمَّم لها، فنقول تطبيقات عنكبوتيَّة (نسبةً إلى الشبكة العنكبوتيَّة) التي تعمل على المُتصفِحات العنكبوتيَّة، كتطبيق جداول جوجل. توجد أيضًا تطبيقات الهواتف التي تعمل على الهواتف الذكيَّة كـ(كاندي كراش)، وكذلك تطبيقات سطح المكتب كتطبيق (بور بوينت). تذكَّر مُجدّدًا أنَّ الكود المصدري المُفسَّر يُنفَّذ مُباشرةً من الملف المصدري، بينما يحوَّل الكود المصدري المُصرَّف إلى ملف ثنائي يُنفّذ لاحقًا. قد يتعطَّل الكود المصدري المُصرَّف أثناء وقت التشغيل حتّى بعد نجاح التصريف (انظر الجزء الثالث من السلسلة للمزيد من التفاصيل).

المُترجمات الهجينة

المُترجم الهجين هو تولفية من مُفسِّر ومُصرِّف. إحدى لغات البرمجة الهجينة المشهورة هي جافا. تُصرِّف لغة الجافا بدايةً كودك المصدري إلى صيغة وسيطة تُسمَّى رُقامة. تُفسَّر هذه الرقامة بعدها وتُنفَّذ عبر مُحرِّك وقت تشغيل يُعرَف بالآلة الافتراضيَّة. هذا يُمكِّن المُترجمات الهجينة من تشغيل الرُقامة على أنظمة تشغيل متنوعة.

المُجمِّعات

توجد كذلك مُجمِّعات لترجمة لغة التجميع مُنخفضة المستوى إلى كود ثنائي. سنُركِّز في هذه السلسلة على اللغات رفيعة المستوى فقط. من الطُرُق الجيد للتفكير بالمُترجمات هي النظر إليها كمبرامج أيضًا. عليك تنزيلها ثُم تثبيتها على نظامك الحاسوبي وفهم وظائِفها الأساسيَّة.

سؤال مُتكرِّر

أدناه أحد الأسِئلة التي يسألها المُبتدِئون عادةً:
ما لغة البرمجة التي عليَّ تعلمها أولًا؟
توجد العشرات من لُغات البرمجة، وهي مُرتبة حسب شيوعها ومجتمعها وطول دعمها وطريقة تعليمها واستخدامها في مجال الأعمال. يُمكن كذلك ترتيبها تقنيًّا، كإذا كانت داليّة، أو أمريّة، أو استاتيكيَّة، أو قوية أو ضعيفة النوع. بعض اللغات تعليميَّة أكثر من الأخرى. وبعضها مكتوب لأهداف تعليميَّة وليس للاستخدام التجاري؛ فتوجد مثلًا لغات مكتوبة لتعليم الأطفال التكويد. توجد لغات قوية جدًّا وسهلة الإعداد والاستخدام، وبايثون إحدى هذه اللغات، التي أنصح بها عادةً المبتدئين.
أفضل لغات البرمجة لعام 2019 يجبأن تتعلمها

يُمكنك استشكاف المزيد من الآراء حول "اللغة الأولى" في هذا البحث الذي أنجزه (فيليب جوه). أصبحتَ الآن تَعرِف أنَّه عندما سترغب بتعلُّم لغة جديدة سيكون عليك الحصول على مُترجِم اللغة (أي أنَّه عليك تثبيته وإعداده على حاسوبك). أنصحك ببدء تعلُّم واجهة سطر الأوامر. الواجهة السطريَّة هي طرفيَّة أو صدفة. فكِّر حيالها كبديل عن الواجهة الرسوميَّة. نتفاعل في الواجهة الرسوميَّة مع الحاسوب عبر مؤشِّر الفأرة، ونعتمد على التصويرات البصريَّة للعناصر. ولكن في الواجهات السطريَّة، يكون التعامل مع الحاسوب باستخدام الأوامر التي تُكتَب في المُحِث أو المؤشِّر النابِض.
1
$_
تُسمَّى الطرفيَّة الافتراضيَّة في ويندوز "موجّه الأوامر". على لينُكس وماكنتوش الطرفيّة الافتراضيّة هي باش. يُمكنك الحصول على طرفيَّة مشابهة على ويندوز بتثبيت جيت باش أو باور شيل.

ما التالي؟

والآن بعدما تحدّثنا قليلًا عن ماهيّة البرمجة، عليك البدء بتحضير نفسك لكتابة أوَّل سطر برمجي لك.
أدناه الأشياء التي تحتاج إليها للبدء:
  • نظام حاسوبي
ليس عليك الحصول على واحد غالٍ جدًّا أو شديد التعقيد، مُجرَّد حاسوب يعمل جيدًا سيفي بالغرض.
  • تثبيت الواجهة السطريَّة
أنصحك بهذه الدورة للبدء بتعلُّم كيفيّة استخدام الواجهة السطريّة.
  • تثبيت مُحرِّر نصوص
سنتكلّم عن هذا في الفصل الثاني.
  • تعلُّم لغة برمجة
ستتعلَّم في سلسلة التدوينات هذه عن العناصر الأساسيّة التي ستكوّن لديك معرفة أساسيّة بمعظم لُغات البرمجة.

اختبارات

  • ما هي الأدوات الأساسيّة التي تحتاجها لبدء البرمجة؟
  •  ما الأوامر التي يُمكنك استخدامها لتنفيذ التالي في صدفة باش (الواجهة السطريَّة)؟
    • التحقُّق من المُجلَّد الحالي
    • الدخول إلى مُجلّد جديد اسمه 'bin' (المُجلَّد bin موجود في مُجلّدك الحالي)
    • إنشاء مُجلَّد جديد اسمه 'lib' في المُجلَّد الحالي
    • إنشاء ملف جديد اسمه 'book.py' في المُجلَّد الحالي
    • سَرد كُل محتويات المُجلَّد الحالي

الخلاصة

تحدثنا في هذا الجزء عن أساسيات البرمجة، بدءًا بمدخل إلى المُترجمات. لا ينبغي أن يكون مصطلح "كود مصدري" غريبًا لك بعد الآن. سنتحدَث عن ماهيّة الكود المصدري بالتفصيل في الجزء الثاني من سلسلتنا.

أجوبة الاختبارات

  • ما هي الأدوات الأساسيّة التي تحتاجها لبدء البرمجة؟
 حاسوب، ومُحرِّر نصوص، وصدفة (طرفيَّة)، ومُصرِّف أو مُفسِّر.
  •  ما الأوامر التي يُمكنك استخدامها لتنفيذ التالي في صدفة باش (الواجهة السطريَّة)؟
    • التحقُّق من المُجلَّد الحالي: pwd
    • الدخول إلى مُجلّد جديد اسمه 'bin' (المُجلَّد bin موجود في مُجلّدك الحالي): cd bin
    • إنشاء مُجلَّد جديد اسمه 'lib' في المُجلَّد الحالي: mkdir lib
    • إنشاء ملف جديد اسمه 'book.py' في المُجلَّد الحالي: touch book.py
    • سَرد كُل محتويات المُجلَّد الحالي: ls

    المصطلحات

    المصطلح العربيالمصطلح الإنكليزي
    تكويدCoding
    تجريدAbstraction
    مُترجِمTranslator
    ثنائيBinary
    مُفسِّرInterpreter
    مُصرِّفCompiler
    مُجمِّعassembler
    واجهة سطريَّة، واجهة سطر الأوامرCLI
    واجهة رسوميَّةGUI
    مُحِثPrompt
    مؤشِّر نابِضBlinking cursor

    مقدمة في عالم البرمجة للمبتدئين - الجزء الثاني: الكود المصدري

    بتصرّف freecodecamp
    google-playkhamsatmostaqltradent