ما هي البرمجة؟
يُمكننا الإجابة عن هذا السؤال بالجواب البسيط التالي: "البرمجة هي عمليَّة تعليم الحاسوب إجراء مهمة ما"، أو يُشار إليها عادةً بالتكويد. فما هو البرنامج الحاسوبي إذًا؟ البرنامج الحاسوبي هو سلسلة من التعليمات يُنفذُها الحاسوب. يُمكِن أن يكون الحاسوب في التعريف أعلاه أي جهاز قادِر على معالجة الأكواد، فقد يكون هاتفًا ذكيًّا أو صرّافًا أو خادِمًا على سبيل المثال لا الحصر.
مثال عن البرمجة
أولًا، هناك نمط لكل شيء في حياتنا اليوميَّة. يعمل الكون بطريقةٍ يُمكِن التنبؤ بها لحدٍّ ما، فمثلًا: تعاقب الليل والنهار، الفصول، شروق الشمس وغروبها ...إلخ. يَعيش الناس بشكِل روتيني، كالاستيقاظ صباحًا ثُم التوجُّه إلى المدرسة أو العمل. نتلقى تعليمات من أشخاصٍ آخرين كمُشريفنا في العمل. يُمكن شَرح كيفيَّة طَهوِنا لوصفة معينة بسلسلة محدودة من الخطوات. ثانيًا، في كُل مرَّة نستخدم أجهزتنا الذكيَّة تعمل العديد من الأكواد في الخلفيَّة. قد يبدو تَحريك مُؤشِّر الفأرة من موضعٍ لآخر شيئًا بسيطًا، إلّا أنَّه حقيقةً يُنتِج تشغيل العديد من الأكواد. شيء بسيط ككتابة بعض الأحرف في موقع مُستندات جوجل يؤدي إلى تنفيذ عشرات الأكواد في الخلفيَّة. كُل شيء مكوَّن من الأكواد في كُل مكان.
لغة الحاسوب الطبيعيَّة
للآلات لُغة طبيعيَّة كما البشر. لا تَفهَم الحواسيب لُغة البشر الطبيعيّة، فلُغتها الخاصّة مكوَّنة من أكواد ثنائيَّة، أي أصفار (0) وواحدات (1). تُمثِّل هذه الأصفار والواحدات حالتين: مُشغَّل (1) ومُطفأ (0).
تلك هي اللغة الطبيعيَّة للأجزاء الإلكترونيَّة، والتي ستكون لنا صعبةً جدًّا كبشر للتحدث فيها مع الحواسيب.
تلك هي اللغة الطبيعيَّة للأجزاء الإلكترونيَّة، والتي ستكون لنا صعبةً جدًّا كبشر للتحدث فيها مع الحواسيب.
مدخل إلى لغات البرمجة
نَستخدِم لُغةً أقرب إلى لغاتنا البشريَّة، كالعربيَّة والإنجليزيَّة والفرنسيَّة، للتحدُّث إلى الآلات المُتحدثة بالأرقام الثنائيَّة. لُغات البرمجة أقرب إلى لغاتنا الطبيعيّة، إلا أنّها أكثر تنظيمًا وينبغي أن تكون مُمكنة التعلُّم كُليًّا. لغات البرمجة يُمكِن أن تكون رفيعة (عالية) أو منخفضة المستوى. لغات البرمجة عالية المُستوى أبعد من لغة الآلة مِن اللغات منخفضة المُستوى. يُسمَّى هذا "البُعِد" عادةً بالتجريد، ولكّننا لن نتطرَق له في هذه السلسلة. تحتاج الحواسيب لطريقةٍ لفهم لغتنا البشريَّة، والمُترجِمات هي تلك الطريقة.
ما هي المُترجِمات؟
يُشير الكود المصدري إلى الأكواد المكتوبة بلغة برمجة مُعينة. سنتكلَّم عن هذا بالتفصيل في الجزء الثاني. المُترجمات مسؤولة عن تحويل كودك المصدري إلى لغة الآلة، أو ما يُعرَف أيضًا بالكود الثنائي (أصفار وواحدات). قَد تُسمَّى هذه الأكواد الثنائيَّة أيضًا بالكود الهدف أو بالبرنامج أو الكلمة التي يشيع ذكرها اليوم: التطبيق.
يُمكِن أن تكون المُترجمات:
- مُفسِّرات
- مُصرِّفات
- خليط من المُفسِّرات والمُصرِّفات
- مُجمِّعات
المُفسِّرات
بعض اللغة تفسيريَّة، أي أنَّ المُترجِم يُعالج الكود المصدري سطرًا سطرًا ويُنفِّذ كُل سطر في البرنامج النهائي المُنتَج. ما يعني أنَّ الكود المصدري المُفسَّر يبدأ العمل ويستمِر حتّى يواجه خطأً، ليتوقَف ويُبلِّغ عنه. سنتكلَّم عن هذا بالتفصيل لاحقًا في الجزء الثالث. لغة بايثون هي إحدى الأمثلة الجيدة عن لغات البرمجة التفسيريَّة.
المُصرِّفات
تعمل المُصرِّفات بشكلٍ مُختلف، فتحوِّل الكود المصدري كاملًا أولًا إلى كودٍ ثنائي، وتُنفِّذ الكود الثنائي بعدها. تُكشَف وتُعرَض الأخطاء الموجودة في الكود المصدري خلال التصريف. يؤدي هذا إلى مُقاطعة عمليَّة التصريف، وعدم توليد الكود الثنائي.
تُترجِم المُفسِّرات سطرًا سطرًا وتُنفِّذ السطر وتنتقل للذي يليه، بينما تُترجِم المُصرِّفات أسطر البرنامج كاملةً إلى ملف (كود ثنائي) وتُنفِّذه.
أتذكر تعريف البرنامج الحاسوبي؟ هو سلسلة من التعليمات يُنفذها الحاسوب. يُدعى تنفيذ البرنامج عادةً عمليَّة. تستخدم هذه البرامج قدرًا معينًا من موارد الحاسوب أو الهاتف كالذاكرة ومساحة نظام الملفات. يُمكن أن يُقال لتنفيذ البرنامج أيضًا تشغيل. نستخدم الكلمة "تشغيل" عند تنفيذ برنامج حاسوبي. الوقت الذي يستغرقه تشغيل ذلك البرنامج يُعرَف بوقت تشغيل البرنامج. من الشائِع أيضًا تسمية البرامج بالتطبيقات. نَنسُب كذلك البرنامج إلى المنصة أو البيئة التي يعملها عليها أو المُصمَّم لها، فنقول تطبيقات عنكبوتيَّة (نسبةً إلى الشبكة العنكبوتيَّة) التي تعمل على المُتصفِحات العنكبوتيَّة، كتطبيق جداول جوجل. توجد أيضًا تطبيقات الهواتف التي تعمل على الهواتف الذكيَّة كـ(كاندي كراش)، وكذلك تطبيقات سطح المكتب كتطبيق (بور بوينت). تذكَّر مُجدّدًا أنَّ الكود المصدري المُفسَّر يُنفَّذ مُباشرةً من الملف المصدري، بينما يحوَّل الكود المصدري المُصرَّف إلى ملف ثنائي يُنفّذ لاحقًا. قد يتعطَّل الكود المصدري المُصرَّف أثناء وقت التشغيل حتّى بعد نجاح التصريف (انظر الجزء الثالث من السلسلة للمزيد من التفاصيل).
المُترجمات الهجينة
المُترجم الهجين هو تولفية من مُفسِّر ومُصرِّف. إحدى لغات البرمجة الهجينة المشهورة هي جافا. تُصرِّف لغة الجافا بدايةً كودك المصدري إلى صيغة وسيطة تُسمَّى رُقامة. تُفسَّر هذه الرقامة بعدها وتُنفَّذ عبر مُحرِّك وقت تشغيل يُعرَف بالآلة الافتراضيَّة. هذا يُمكِّن المُترجمات الهجينة من تشغيل الرُقامة على أنظمة تشغيل متنوعة.
المُجمِّعات
توجد كذلك مُجمِّعات لترجمة لغة التجميع مُنخفضة المستوى إلى كود ثنائي. سنُركِّز في هذه السلسلة على اللغات رفيعة المستوى فقط. من الطُرُق الجيد للتفكير بالمُترجمات هي النظر إليها كمبرامج أيضًا. عليك تنزيلها ثُم تثبيتها على نظامك الحاسوبي وفهم وظائِفها الأساسيَّة.
سؤال مُتكرِّر
أدناه أحد الأسِئلة التي يسألها المُبتدِئون عادةً:
ما لغة البرمجة التي عليَّ تعلمها أولًا؟
توجد العشرات من لُغات البرمجة، وهي مُرتبة حسب شيوعها ومجتمعها وطول دعمها وطريقة تعليمها واستخدامها في مجال الأعمال. يُمكن كذلك ترتيبها تقنيًّا، كإذا كانت داليّة، أو أمريّة، أو استاتيكيَّة، أو قوية أو ضعيفة النوع. بعض اللغات تعليميَّة أكثر من الأخرى. وبعضها مكتوب لأهداف تعليميَّة وليس للاستخدام التجاري؛ فتوجد مثلًا لغات مكتوبة لتعليم الأطفال التكويد. توجد لغات قوية جدًّا وسهلة الإعداد والاستخدام، وبايثون إحدى هذه اللغات، التي أنصح بها عادةً المبتدئين.
يُمكنك استشكاف المزيد من الآراء حول "اللغة الأولى" في هذا البحث الذي أنجزه (فيليب جوه). أصبحتَ الآن تَعرِف أنَّه عندما سترغب بتعلُّم لغة جديدة سيكون عليك الحصول على مُترجِم اللغة (أي أنَّه عليك تثبيته وإعداده على حاسوبك). أنصحك ببدء تعلُّم واجهة سطر الأوامر. الواجهة السطريَّة هي طرفيَّة أو صدفة. فكِّر حيالها كبديل عن الواجهة الرسوميَّة. نتفاعل في الواجهة الرسوميَّة مع الحاسوب عبر مؤشِّر الفأرة، ونعتمد على التصويرات البصريَّة للعناصر. ولكن في الواجهات السطريَّة، يكون التعامل مع الحاسوب باستخدام الأوامر التي تُكتَب في المُحِث أو المؤشِّر النابِض.
ما التالي؟
والآن بعدما تحدّثنا قليلًا عن ماهيّة البرمجة، عليك البدء بتحضير نفسك لكتابة أوَّل سطر برمجي لك.أدناه الأشياء التي تحتاج إليها للبدء:
- نظام حاسوبي
- تثبيت الواجهة السطريَّة
- تثبيت مُحرِّر نصوص
- تعلُّم لغة برمجة
اختبارات
- ما هي الأدوات الأساسيّة التي تحتاجها لبدء البرمجة؟
- ما الأوامر التي يُمكنك استخدامها لتنفيذ التالي في صدفة باش (الواجهة السطريَّة)؟
- التحقُّق من المُجلَّد الحالي
- الدخول إلى مُجلّد جديد اسمه '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 |