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

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

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

أنواع لغات البرمجة

أنواع لغات البرمحة

تصنَّف لغات البرمجة وفق الأنواع التالية كما هو موضح في الصورة أعلاه كما يلي:

  • أنواع لغات البرمجة وفق مستوى الترميز:
    • لغات البرمجة منخفضة المستوى Low level Programming Languages
    • لغة الآلة Machine language.
    • لغات التجميع Assembly languages.
    • لغات البرمجة عالية المستوى High level languages.
  • أنواع لغات البرمجة وفق طريقة معالجة التعليمات:
    • اللغات المُصرَّفة Compiled Languages.
    • اللغات المُفسَّرة Interpreted languages.
    • اللغات الهجينة المصرّفة المفسّرة
  • أنواع لغات البرمجة وفق أسلوب تنظيم الشيفرة:
  • أنواع لغات البرمجة وفق مجالات الاستخدام:
    • لغات البرمجة عامة الغرض General Purpose programming Languages.
    • لغات البرمجة خاصة الغرض Special Programing Languages.

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

أنواع لغات البرمجة وفق مستوى الترميز

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

  • لغات البرمجة منخفضة المستوى
  • لغات البرمجة عالية المستوى
  • لغات برمجة متوسطة المستوى

سنشرح كل واحدة منها تباعًا.

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

تُدعى لغات التجميع assembly languages ولغة الآلة machine language لغات البرمجة منخفضة المستوى لأنها تُنفِّذ فقط مجموعات الأوامر الأساسية للتعامل مع الآلة دون أية وظائف (أو القليل القليل منها في حالة لغات التجميع) جاهزة للتعامل مع البيانات أو تنفيذ حلقات أو عبارات شرطية أو إدارة تلقائية للذاكرة.

  • لغة الآلة Machine Language: وهي اللغة الأصيلة التي يفهمها الحاسوب أو الآلة المخاطبة وتمثل سلسلة من الأحرف والأرقام المتداخلة التي يصعب جدًا فهم المطلوب منها للأشخاص غير المختصين في هذا المجال من البرمجة. إليك مثالًا:
;123+25 برنامج بلغة الآلة لجمع العددين
B82301
052500
  • لغة التجميع Assembly Languages: لا تبتعد هذه اللغة كثيرًا عن لغة الآلة لكنها تستخدم عددًا محدودًا من التعليمات التي تمتلك مدلولًا وتنفذ عملًا بسيطا جدًا كنقل قيمة من مكان لآخر أو إضافة قيمة إلى قيمة وهكذا. إليك المثال السابق مكتوبًا بلغة تجميع:
;برنامج بلغة التجميع العددين 123+25
MOV AX,123
ADD AX,25

يمكن أن نتوقع أن التعليمة MOV تضع القيمة 123 ضمن AX ومن ثم تجمع التعليمة ADD القيمة 25 إلى قيمة AX.

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

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

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

إليك المثال السابق الذي رأيناه بلغة الآلة ولغة التجميع مكتوبًا بلغة ++C:

// 25+123 لجمع العددين C++  برنامج بلغة
int num= 25+123 //num اجمع العددين وأسندهما إلى المتغير الصحيح 

لغات برمجة متوسطة المستوى

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

للمزيد من المعلومات يمكنك مطالعة مقال مستويات لغات البرمجة.

أنواع لغات البرمجة وفق طريقة معالجة التعليمات

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

  • اللغات المُصرَّفة Compiled Languages
  • اللغات المُفسَّرة Interpreted languages
  • اللغات الهجينة المصرّفة المفسّرة

اللغات المصرفة Compiled Languages

لغات البرمجة المصرفة

تستخدم هذه اللغات برنامجًا يُدعى المصرّف Compiler لنقل الشيفرة المكتوبة بلغة برمجة عالية المستوى إلى لغة الآلة. تجري عملية التصريف عادة بمسح الشيفرة ثم تحليلها ونقلها إلى لغة وسطية Intermediate Representation ثم تُطبق عليها تحسينات مما يجعل البرامج أكثر فعالية وأسرع في التنفيذ وأقل حجمًا ثم تُنقل أخيرًا إلى لغة الآلة (لغة الأصفار و الواحدات). من أمثلة لغات البرمجة المصرّفة نجد:

  • C
  • ++C
  • Go
  • Ada
  • Fortran
  • COBOL
  • Lisp
  • Objective-C
  • Swift

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

عمومًا، تُعد البرامج المكتوبة بلغات برمجة مصرّفة أسرع تنفيذًا بعد الانتهاء من تصريفها موازنة بغيرها.

اللغات المفسّرة Interpreted languages

لغات البرمجة المفسرة

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

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

اللغات الهجينة المصرّفة المفسّرة

تستخدم هذه اللغات مصرّفًا لتحويل الشيفرة المكتوبة إلى لغة منخفضة المستوى ثم يُستخدم المفسر في تحليل وتفسير شيفرة هذه اللغة وتنفيذها. إذ تُصرّف شيفرة جافا JAVA مثلًا إلى لغة جافا بايت كود bytecode ليأتي المفسر الذي يُدعى JIT ويحسّن الشيفرة بناء على المعالج المستهدف ثم ينفّذها. وهكذا نضمن سرعة الأداء وقلة الأخطاء أثناء التنفيذ. من أمثلة اللغات الهجينة نجد:

  • Java
  • #C
  • Visual Basic
  • Erlang
  • #F

مفهوم وقت التنفيذ Runtime

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

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

أنواع لغات البرمجة وفق أسلوب هيكلة الشيفرة وتنظيمها

يُقصد بذلك تصنيف لغات البرمجة وفقًا لتنظيم المتغيرات والإجرائيات وتسلسل العمليات التي تؤدي في النهاية إلى تنفيذ البرنامج:

  • لغات البرمجة الوظيفية Functional Programming
  • لغات البرمجة الإجرائية Procedural Programing
  • لغات البرمجة الكائنية Object-oriented Programming

لغات البرمجة الوظيفية Functional Programming

تجمع التعليمات التي تؤدي وظيفة معينة ضمن دالة function تقبل وسطاء لحمل المعلومات إليها وتعيد قيمًا. تُستخدم الدوال في كل مكان: كمتغيرات ووسطاء وقيم معادة ولا تستخدم هذه اللغات حلقات التكرار أو العبارات الشرطية بل الدوال التعاودية Recursive function. تُعد لغات البرمجة هذه معدومة الثغرات تقريبًا وفعالة جدًا في البرمجة المتوازية Parallel Programing. من أمثلة لغات البرمجة بالدوال نجد:

  • Elixir
  • Erlang
  • Common Lisp
  • Haskell
  • #F
  • Clojure
  • Elm
  • Racket

فيما يلي مثال على طباعة عبارة Hello World بلغة البرمجة الوظيفية "#F"

printfn "Hello, world!"

لغات البرمجة الإجرائية Procedural Programing

تُجمع التعليمات التي تؤدي إلى وظيفة معينة ضمن إجرائية Procedural (شبيهة بفكرة الدوال) تقبل وسطاء لحمل المعلومات إليها. تنفذ الإجرائية التعليمات التي تضمها ويمكن استدعائها في أي مكان من الشيفرة وضمن أي إجرائية أخرى. ولا تمنع هذه اللغات استخدام الحلقات والعبارات الشرطية ضمن الإجراءات. من أمثلة لغات البرمجة الإجرائية نجد:

  • C
  • Pascal
  • Fortran
  • BASIC

إليك مثالًا بسيطًا على طباعة عبارة Hello World بلغة البرمجة الإجرائية "C":

#include <stdio.h>
int main() {
    printf("Hello, world!");
    return 0;
}

لغات البرمجة الكائنية Object-oriented Programming

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

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

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

لنستعرض مثالًا على طباعة عبارة Hello World بلغة البرمجة الكائنية "#C":

using System;
class Program {
    static void Main(string[] args) {
        Console.WriteLine("Hello, world!");
    }
}

أنواع لغات البرمجة وفق مجالات الاستخدام

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

  • لغات البرمجة عامة الغرض
  • لغات برمجة خاصة الغرض

لغات البرمجة عامة الغرض General Purpose programming Languages

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

تستخدم بعض اللوحات الإلكترونية القابلة للبرمجة مثلًا (وهي بمثابة حواسيب خاصة) لغات البرمجة العامة الأغراض، إذ تستخدم منصات أردوينو Arduino لغات C و ++C و Java لكتابة برامجها ضمن بيئة عمل مخصصة ومكتبات مخصصة، كما تستخدم حواسب راسبيري باي الشهيرة لغة Python ضمن نظام تشغيل راسبيان الخاص بها.

لغات برمجة خاصة الغرض Special Programing Languages

تُستخدم هذه اللغات لكتابة تطبيقات لأنظمة تشغيل محددة أو لتجهيزات محددة. من أمثلة لغات البرمجة الخاصة نجد:

  • Kotlin: لبرمجة تطبيقات على نظام أندرويد Android.
  • Swift: لبرمجة تطبيقات على نظام أي أو إس iOS.
  • Objective-C تستخدم نُسخ منها لبرمجة تطبيقات ماك أو إس Mac OS ونُسخ أخرى لبرمجة التجهيزات التي تعتمد على المتحكمات الصغرية Micro Controllers.
  • ASP.Net: لغة سكربت تعمل على الخادم لتطوير تطبيقات ويب فقط.
  • PHP: لغة سكربت تعمل على الخادم فقط لتطوير تطبيقات ويب.

أنواع اللغات وفق طريقة كتابة شيفراتها

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

لغات برمجة مكتوبة Written programming Languages

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

لغات برمجة رسومية أو مرئية Visual programming Languages

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

من أمثلة لغات البرمجة الرسومية نجد سكراتش Scratch التي تُستخدم لبرمجة التطبيقات على منصات مختلفة مثل ويندوز ولينكس (نسخة محدودة) وكذلك لبرمجة تجهيزات راسبيري باي. كما يمكن أن نشير إلى اللغتين Ladder و FBD وتستخدمان في برمجة تجهيزات إلكترونية تُدعى المتحكمات المنطقية القابلة للبرمجة PLC.

الخلاصة

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

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

وللمزيد من المعلومات يمكنك مطالعة مقال دليلك الشامل لتعلم البرمجة.

 

اقرأ أيضًا


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

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

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



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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.


×
×
  • أضف...