لغات البرمجة ومعالجتها | الوحدة الأولى | الدرس الثاني

لغات البرمجة ومعالجتها هو عنوان الدرس الثاني من الوحدة الاولى التي تحمل اسم “هندسة البرمجيات” من مقرر “هندسة البرمجيات”.
ستتعرف في هذا الموضوع على تاريخٍ مختصرٍ لتطوّر لغات البرمجة، وتمييز تصنيفات لغات البرمجة، ومعرفة كيف تقوم أجهزة الحاسب بفهم هذه اللغات، وتحديد لغات البرمجة المُترجَمة والمُفسِّرة، ومعرفة كيف يتم التعامل مع أخطاء البرامج المصدرية في كلٍّ من المُفسِّر والمُترجِم.
لذا قم بقراءة أهداف التعلُّم بعناية، ثم أعد قراءتها وتأكَّد من تحصيل كافة محتوياتها بعد انتهائك من دراسة الموضوع.
أهداف التعلُّم
- معرفة التاريخ المختصر لتطور لغات البرمجة.
- تمييز تصنيفات لغات البرمجة.
- معرفة كيف تقوم أجهزة الحاسب بفهم لغات البرمجة.
- تحديد لغات البرمجة المُترجَمة والمُفسِّرة.
- معرفة كيف يتم التعامل مع أخطاء البرامج المصدرية في كلٍّ من المُفسِّر والمُترجِم.
هيا لنبدأ!
تاريخ مختصر لتطور لغات البرمجة (A Brief History of the Development Programming Language)
شهد العالم تغيرًا كبيرًا منذ أن تم بناء أول جهاز حاسب وحتى يومنا هذا، وتطورت مكونات وتقنيات الحاسب بشكل كبير، كما تطورت قدرات المعالجة الحاسوبية المتقدمة. ورغم هذا التقدم ما زالت الكثير من مفاهيم تشغيل الحاسب التي صاغها فون نيومان (Von Neumann) في عام 1945 سارية حتى يومنا هذا.
لاحظ أن
تم اختراع لغات البرمجة لغرض التواصل بين الإنسان والألة.
لغة الآلة Machine Learning
- يجب إعطاء الحاسب الأوامر على شكل سلسة من أرقام ثنائية تتكون من الرقمين 0 و1.
- يُطلق على اللغة التي تُقدم بها هذه الأوامر اسم لغة الآلة (Machine Language).
- لا يستطيع الإنسان فهم هذه اللغة، ولا يمكن للمبرمج كتابة البرامج وتنفيذها بشكل مباشر باستخدام هذه اللغة.
- لذلك يتطلب الأمر معرفة عميقة بمكونات الحاسب خاصة أنّ لغة الآلة تختلف باختلاف بنية وحدة المعالجة المركزية (Central Processing Unit – CPU).
لاحظ أن
يتكون البرنامج بلغة الآلة من سلسلة من التعليمات الصادرة للمُعالِج لتنفيذ العمليات الأساسية على شكل الوحدات الثنائية (Binary Bits).
لغة التجميع (Assembly Language)
- هي لغة برمجة تقع من حيث سهولتها بين لغة الآلة ولغات البرمجة عالية المستوى.
- يطلق عليها اسم لغة البرمجية الرمزية.
- تتشابه لغة التجميع مع لغة الآلة ولكنها تُعد أكثر سهولة في البرمجة حيث تُتيح للمبرمجين استبدال الرقمين (0، 1) بالرموز.
لاحظ أن
يتم تحويل أوامر لغة التجميع التي يُمكِن فهمها من قبل الإنسان إلى سلسلة من الأعداد التي تتكوَّن من الرقمين 0 و1 لكي يفهمها الحاسب وينفذها.
- في لغة التجميع على سبيل المثال، يتم استخدام كلمة ADD متبوعة برقمين للقيام بعملية الجمع.
- تُعد هذه الأوامر سهلة الحفظ والاستخدام، ولكن يجب ترجمتها إلى سلسلة من الأرقام الثنائية (0 و1) داخل الحاسب لتنفيذ العملية المطلوبة.
- تتم عملية الترجمة هذه بواسطة برنامج يسمى المجمع Assembler.
- تتكون أوامر لغة التجميع من مقاطع رمزية تتوافق مع أوامر لغة الآلة.
تحديات استخدام لغة التجميع Challenges of Assembly Language
- رغم كونها لغة منخفضة المستوى، إلا أن استخدامها يمكن من برمجة العمليات البسيطة ذات التسلسلات الثنائية بسهولة.
- تختلف لغة التجميع المستخدمة حسب بُنية كل حاسب.
- تقتصر أوامر تنفيذ الوظائف في لغة التجميع على العمليات البسيطة كالجمع والضرب والمقارنات، وتفتقر للأوامر التي يُمكن أن تدعم تنفيذ وظائف أكثر تعقيدًا، مما يُجبر المبرمج على كتابة برامج طويلة ومعقدة يصعب فهمها وتصحيحها.
- لا يُمكن نقل برنامج من جهاز حاسب إلى آخر له بنية مختلفة.
يُوضح الجدول التالي برنامجًا للجمع تمت كتابته بلغة برمجة عالية المستوى وما يكافئه في لغة التجميع ولغة الآلة وذلك لجهاز حاسب مزود بوحدة معالجة مركزية 6502 ذات 8 بت.
يُمكن استخدام برامج اللغة عالية المستوى على معظم أجهزة الحاسب، بينما تعمل لغة التجميع ولغة الآلة فقط على جهاز بنفس عمارة وحدة المعالجة المركزية.
لمعرفة المزيد من المعلومات عن لغة التجميع، قم بالاطّلاع على الرابط التالي:
لغات البرمجة عالية المستوى (High-Level Programming Languages)
- أدت أوجه القصور في لغة الآلة ولغة التجميع إلى تضافر الجهود لتحقيق تواصل أفضل بين الإنسان والآلة، مما أدى إلى ظهور أول لغة برمجة عالية المستوى في الخمسينات من القرن الماضي.
- تستخدم لغات البرمجة عالية المستوى أوامر برمجية تشبه لغة الإنسان، ثم يتم ترجمتها إلى لغة الآلة بواسطة الحاسب نفسه باستخدام برامج خاصة تسمى مترجمات اللغة.
- تستخدم المترجمات (Compilers) والمفسرات (Interpreters) مع أنواع مختلفة من لغات البرمجة.
تطور لغات البرمجة عالية المستوى (The Evolution of High-Level Programming Languages)
- يحدد المطور لغة البرمجة المناسبة لتطوير التطبيقات بسهولة وذلك بناء على معرفته ومهاراته وتفضيلاته، مع الأخذ بالاعتبار البيئة التقنية المطلوبة لتنفيذ الحل البرمجي.
- تحتوي كل لغة برمجة على مجموعة فريدة من الكلمات المحجوزة (الكلمات التي تحتويها تلك اللغة)، وعلى الصيغ الخاصة التي يجب على المطور أن يستخدمها لكتابة التعليمات البرمجية.
لمعرفة المزيد من المعلومات عن لغات البرمجة عالية المستوى، قم بالاطّلاع على الرابط التالي:

لغات البرمجة ومعالجتها
لغات برمجة الجيل الرابع (Fourth-Generation Programming Language)
- توجد ضمن لغات البرمجة عالية المستوى فئة يُطلق عليها لغات برمجة الجيل الرابع والتي عادة يتم اختصارها بالرمز 4GL.
- تُعد هذه اللغات أقرب إلى لغة الإنسان من اللغات عالية المستوى الأخرى.
- يمكن استخدامها من قبل الأشخاص العاديين غير ذوي الاختصاص كالمبرمجين لأنها تتطلب قدرًا أقل من كتابة التعليمات البرمجية.
- تُعد لغات برمجة الجيل الرابع أكثر ملائمة للمبرمجين.
- تُعزز كفاءة عملية البرمجة باستخدام كلمات وعبارات تشبه اللغة الإنجليزية، إضافة إلى الرموز والتمثيلات الرمزية والواجهات الرسومية عند الحاجة.
- يعتمد الحصول على أفضل النتائج باستخدام هذه اللغات على التوافق بين الأداة وطبيعة التطبيق.
- يُمكن لمستخدمي الحاسب في لغات الجيل الرابع إجراء تغييرات على البرنامج بشكل سريع من أجل تلبية متطلبات جديدة، مع القدرة على حل المشاكل الصغيرة بأنفسهم.
- يُمكن في هذه اللغات إجراء عمليات متعددة باستخدام أمر واحد يدخله المبرمج.
- لغات البرمجة النصية هي نوع من لغات البرمجة يتم عادة تفسيرها مباشرة لإعطاء النتائج بدلاً من ترجمتها إلى برنامج لغة التجميع.
- يتم استخدام هذه اللغات لأتمتة المهام المتكررة، وتبسيط العمليات المعقدة، وإنشاء النماذج الأولية السريعة لأنظمة البرنامج.
- تتضمن بعض الأمثلة الشائعة للغات البرمجة النصية جافا سكريبت JavaScript وروبي Ruby وبي اتش بي PHP وبيرل Perl.
- تتميز هذه اللغات باحتوائها على مكتبات برمجية متعددة تتيح القيام بالمهام المطلوبة من البرامج بشكل فعّال.
- مما يجعلها مناسبة تمامًا للمهام التي تتطلب نماذج أولية سريعة ومتكررة.
- تتسم بعض هذه اللغات بمحدودية قدراتها وإمكانية تطويرها كما هو الحال في اللغات المترجمة.
- قد لا تناسب التطبيقات عالية الأداء أو تلك التي تتطلب الكثير من الموارد لتشغيلها عند الحاجة لاستخراج البيانات.
- يمكن للمستخدم انشاء استعلامات وتقارير باستخدام لغة الاستعلام الهيكلية SQL وذلك عند الحاجة لبرمجة العمليات الاحصائية والمشاريع العملية.
- يُمكن للباحث أو عالم الرياضيات تحليل البيانات باستخدام برامج مثل:
- ماتلاب MATLAB.
- لاب فيو LAB VIEW.
- إس بي إس إس SPSS.
لمعرفة المزيد من المعلومات عن لغات البرمجة، قم بالاطّلاع على الرابط التالي:
بإمكانك مراجعة محتوى موضوع “لغات البرمجة ومعالجتها” من بدايته وحتى نهاية هذا القسم، من خلال الرابط التالي:
تصنيف لغات البرمجة (Classifications of Programming Languages)
هناك عدة تصنيفات للغات البرمجة، من حيث نوع الأوامر المستخدمة مثل:
- لغات البرمجة الإجرائية (Procedural Programming Languages).
- لغات البرمجة الموجهة للكائنات (Object-Oriented Programming Languages).
تستخدم البرمجة الإجرائية مجموعة من التعليمات لإخبار الحاسب بما يجب القيام به خطوة بخطوة ومن الأمثلة على لغات البرمجة الإجرائية:
- كوبول (COBOL).
- فورتران (Fortran).
- لغة البرمجة سي (C).
يعتمد البرنامج في البرمجة كائنية التوجه على وحدات تسمى Object، من الأمثلة على لغات البرمجة كائنية التوجه:
- لغات سي شارب C#.
- سي بلس بلس C++.
- جافا Java.
- بايثون Python.
يمكن تصنيف لغات البرمجة وفقًا لغرض الاستخدام إلى:
- لغات برمجة عامة
يُمكن نظريًا استخدام أي لغة برمجة عامة لحل أي مشكلة، ولكن عند النظر بشكل عملي، لقد تم تصميم كل لغة لحل نوع معين من المشاكل، تُقسم هذه اللغات على النحو التالي:
- لغات عملية مثل الفورتران.
- لغات موجهة للأعمال مثل كوبول.
- لغات متعددة المجالات مثل بيسيك وباسكال.
- لغات برمجة لأنظمة التشغيل مثل سي.
- لغات الذكاء الاصطناعي مثل برولوغ.
- لغات إدارة قواعد البيانات المتخصصة مثل لغة الاستعلام الهيكلية.
- اللغات المتخصصة
- ليسيب LSIP والتي تستخدم لنوع معين من التطبيقات مثل الروبوتات أو الدوائر المتكاملة.
كيف تفهم أجهزة الحاسب لغات البرمجة؟ (How Computers Understand Programming Languages?)
يتم تحويل البرنامج الذي تمت كتابته بأي لغة من لغات البرمجة إلى لغة آلة يُمكن للحاسب فهمها وتنفيذها باستخدام برامج ترجمة خاصة.
توجد طريقتان لتشغيل البرامج المكتوبة بلغة عالية المستوى، أكثرها شيوعًا:
- المترجم Compiler.
- المفسر Interpreter.
تعريفات هامة
المُترجِم (Compiler)
المُترجِم هو برنامج حاسب يقوم بتحويل كتلة كاملة من التعليمات البرمجية المكتوبة بلغة برمجة عالية المستوى إلى لغة الآلة التي يفهمها مُعالِج الحاسب.
المُفسِّر (Interpreter)
المُفسِّر هو برنامج حاسب يقوم بتحويل كل سطر من التعليمات البرمجية من مجموعة التعليمات البرمجية المكتوبة بلغة عالية المستوى إلى لغة الآلة ويُرسِلها للتنفيذ مباشرةً قبل الانتقال إلى السطر التالي من التعليمات البرمجية.

لغات البرمجة ومعالجتها
لاحظ أن
البرنامج المصدري هو برنامج تمت كتابته بلغة برمجة عالية المستوى.

لغات البرمجة ومعالجتها
تقوم المترجمات والمفسرات الفورية بالمهمة ذاتها، وهي تحويل البرنامج المكتوب بلغة البرمجة عالية المستوى إلى لغة الآلة، ولكن تعمل كل منها بطريقة مختلفة.
لغات البرمجة المُترجَمة والمُفسَّرة (Interpreted and Compiled Programming Languages)
تستخدم معظم لغات البرمجة الحديثة المُترجمات لإنتاج البرامج المُحسنة بسرعة، ولكن بعض اللغات ما زالت تستخدم المفسّرات عند الحاجة لإنشاء برنامج بسيط لا تُعد السرعة المعيار الأهم به.
اللغات المترجمة Complier Languages
- تستخدم لغات البرمجة مُترجمات لإنشاء برامج سريعة موثوقة ومنها:
- سي (C).
- سي بلس بلس (C++).
- جافا (Java).
- سي شارب (C#).
- يتم إنشاء البرنامج القابل للتنفيذ لكل نوع من أنواع أجهزة الحاسب، مما يجعل اكتساب المعرفة بأجهزة حواسيب المستخدمين النهائيين واجبًا على المطورين.
اللغات المفسّرة Interpreted Languages
- اعتمدت الإصدارات الأولية للغة جافا سكريبت (JavaScript) وكذلك أيضًا لغتي ليسب (LSIP) وبيسيك (Basic) على المفسرات، مما يعني أن البرامج التي تُكتب بهذه اللغات تعمل بشكل بطيء، ولكن كان تشغيل برامجها المصدرية على أي جهاز حاسب يحتوي على مفسر لغة البرمجة ممكنًا.
- على سبيل المثال، يُمكن تشغيل تطبيق ويب مكتوب بلغة جافا سكريبت:
- على جهاز حاسب يعمل بنظام ويندوز.
- على حاسب لوحي يعمل بنظام أندرويد باستخدام متصفح ويب مدمج مع المفسر.
لاحظ أن
تعتبر البايثون لغة مُترجمة ومُفسّرة، يُترجم تطبيق بايثون كل سطر من التعليمات البرمجية بحيث يُمكن للمُفسّر قراءته على الجهاز المستخدم، لا يتغير تركيب الجمل الذي يستخدمه المبرمج، لأن تطبيق بايثون يُحوله لى الشكل الصحيح للمُفسّر المستخدم على هذا الجهاز.
بإمكانك مراجعة موضوع “لغات البرمجة ومعالجتها” بدايةً من عنوان “تصنيفات لغات البرمجة” وحتى هذه النقطة، من خلال الرابط التالي:
التعامل مع أخطاء البرامج (Dealing with Software Errors)
تعمل المُترجمات والمُفسرات بشكل مختلف عند وجود أخطاء أو خلل في البرامج المصدرية.
عملية تصحيح الأخطاء Correction of Errors During the Debugging Process
غالبًا ما يحتوي البرنامج المصدري في نسخته الأولى على العديد من الأخطاء، وتنقسم هذه الأخطاء إلى 3 أنواع:
- الأخطاء المنطقية (Logical Errors)
أخطاء في منطق البرمجة.
- أخطاء وقت التشغيل (Runtime Errors)
أخطاء تحدث أثناء تنفيذ البرنامج.
- أخطاء تركيب الجمل (Syntax Errors)
أخطاء في تركيب الجمل البرمجية.
تحدث الأخطاء المنطقية وأخطاء وقت التشغيل فقط عند تنفيذ البرنامج بينما تحدث أخطاء تركيب الجمل أثناء الترجمة، يتم تنفيذ البرنامج فقط إذا كان البرنامج المصدري لا يحتوي على أخطاء في تركيب الجمل.
بإمكانك مراجعة محتوى موضوع “لغات البرمجة ومعالجتها” بدايةً من عنوان “المقارنة بين المترجم والمفسر” وحتى نهاية الموضوع، من خلال الرابط التالي:
اختبر تحصيلك لمحتوى الموضوع من خلال الرابط التالي:
الواجب الإلكتروني
إلى هنا يكون قد انتهى موضوع “لغات البرمجة ومعالجتها”، لا تنسوا مراجعة أهداف التعلُّم أعلى المقال، وانتظرونا في الموضوع القادم!