اذهب إلى المحتوى

مستويات لغات البرمجة


Ola Saleh

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

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

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

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

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

ما الحاجة إلى لغة البرمجة؟

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

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

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

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

لماذا ظهرت مستويات لغات البرمجة؟

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

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

ما هي مستويات لغات البرمجة

مستويات لغات البرمجة

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

توجد المئات من لغات البرمجة في العالم، وتصنف لغات البرمجة بناء على درجة تجريدها إلى ثلاثة مستويات هي:

  • لغات البرمجة منخفضة المستوى Low level Programming Languages

  • لغات البرمجة متوسطة المستوى Medium Level Programming Language

  • لغات البرمجة عالية المستوى High level Programming Languages

  • لغات البرمجة فائقة المستوى Very High-level programming language

نشرح في الفقرات التالية كل مستوى من هذه المستويات بمزيد من التفصيل.

لغات البرمجة منخفضة المستوى Low level Programming Languages

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

تعد كل من لغة الآلة Machine language التي تستخدم بيانات رقمية مكونة من 0 و 1 فقط، ولغة التجميع Assembly language أبرز الأمثلة على لغات البرمجة منخفضة المستوى.

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

تستخدم اللغات منخفضة المستوى عادة في كتابة نواة نظام التشغيل أو برامج تعريف العتاد وتشغيله device driver أو التطبيقات المخصصة التي تتطلب التعامل المباشر مع عتاد الحاسوب، ولا تستخدم من قبل المطورين بشكل مباشر لأغراض البرمجة المعروفة مثل تصميم مواقع الويب أو تطبيقات الجوال أو تطوير الألعاب وما شابه.

لغة الآلة Machine Language

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

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

صورة مثقبة لغة آلة

صورة مثقبة تعبر عن تعليمات مكتوبة بلغة الآلة لبرمجة الحاسوب قديمًا

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

وتتكون الأوامر بلغة الآلة من جزأين الأول هو جزء التعليمات القابلة للتنفيذ والثاني هو جزء العناوين، على سبيل المثال الكود التالي يمثل كودًا برمجيًّا مكتوبًا بلغة الآلة:

10100011 10110111 11000101 AZ B7 C5

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

لغة التجميع Assembly Language

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

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

على سبيل المثال البرنامج البسيط التالي يقوم بجمع العددين 30 و40 باستخدام لغة التجميع:

.data
 sum DWORD ?
.code
 main proc
    MOV eax,30
    ADD eax,40
    MOV sum,eax

في الكود السابق يدل القسم ‎.data على منطقة البرنامج التي تحتوي على المتغيرات وهنا كما تلاحظ عرفنا متغيرًا باسم sum لتخزين ناتج الجمع. ويدل القسم ‎.code على منطقة البرنامج الأساسية التي تحتوي على التعليمات المخصصة لجمع هذين العددين.

يمكن أن تخمن من الكود السابق أن أول تعلمية MOV وضعت القيمة 30 ضمن السجل eax والتعليمة ADD أضافت القيمة 40 إلى القيمة المخزنة في السجل eax وأخيرًا قامت التعليمة MOV بوضع قيمة eax ضمن المتغير sum.

بعد كتابة التعليمات بلغة التجميع يمكن تحويلها بسهولة إلى لغة آلة قابلة للتنفيذ بواسطة برنامج خاص يسمى "المُجمِّع" Assembler.

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

لغات البرمجة عالية المستوى High level Programming Languages.

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

هناك المئات من لغات البرمجة عالية المستوى المتفاوتة في درجة صعوبتها لكنها بالمجمل تبقى سهلة التعلم والتنفيذ ومن أشهر الأمثلة على اللغات عالية المستوى جافاسكربت وبايثون وروبي و C++‎ و PHP …إلخ.

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

على سبيل المثال البرنامج التالي مكتوب بلغة "بايثون" لجمع العددين 30 و 40، وكما تلاحظ فهو مكتوب بشيفرة أسهل في الفهم بكثير من شيفرة لغة التجميع.

x = 30
y = 40
sum=x+y
print(sum)

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

لغات البرمجة متوسطة المستوى Medium Level Programming Language

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

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

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

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

لغات البرمجة فائقة المستوى Very high-level programming language

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

على سبيل المثال تصنف لغة برولوغ Prolog على أنها لغة برمجة فائقة المستوى وهي لغة منطقية تعريفية declarative تستخدم بشكل أساسي في مجالات الذكاء الاصطناعي. ولا بد أنك سمعت بلا شك بروبوت ChatGPT المدعوم بالذكاء الاصطناعي والذي يعتمد على لغة GPT-3 الخاصة بـ OpenAI والذي يمكنك من التحدث إليه بلغتك كما تتحدث مع أي إنسان حقيقي ويفهمك ويجيبك على أي أسئلة برمجية أو غير برمجية وبطرق ولغات مختلفة، وهذا من شأنه أن يجعلنا ننتقل في مجال البرمجة لمستويات جديدة لم نعهدها من قبل في المستقبل القريب.

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

على سبيل المثال يمكنك كتابة برنامج باستخدام لغة برولوغ لاختبار ما إذا كانت X هي أخت شقيقة لـY من خلال كتابة قواعد الحل أو منطق الحل كالتالي:

كي تكون X هي أخت Y يجب أن تكون أنثى ويكون لكل من X و Y نفس الوالدين ونضيف لها شرطًا وهو لا تكون قيمة X هي نفسها قيمة Y كل لا تكون أخت نفسها.

Rules:
sisterof(X, Y) :- female(X), parent(Z, X), parent(Z, Y), not(X = Y).

بعدها ننشئ قاعدة بيانات تتضمن مجموعة من الحقائق مثل:

male(Ali).
male(Ahmad).
female(Ola).
female(Maryem).
parents(Ali, Ola, Ahmad).
parents(Maryem, Ola, Ahmad).

الآن يمكننا أن نسأل البرنامج أسئلة مثل "هل علا أخت علي؟" سوف يجبنا بالنفي بناء على القواعد والحقائق التي يملكها.

sisterof(Ali, Ola).

الخاتمة

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

وللمزيد من المعلومات حول لغات البرمجة وأهم أنواعها وتطبيقاتها يمكنك مطالعة مقال دليلك الشامل لتعلم البرمجة

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

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

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...