دليلك الشامل إلى لغات البرمجة


دليلك الشامل إلى لغات البرمجة September 14, 2022 at 08:46PM

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

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

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

إليك فهرس المقال لكي يسهل عليك التنقل بين أقسامه:

تعريف البرمجة

تعريف البرمجة

البرمجة هي العملية التي تستطيع بواسطتها إنجاز فكرة معينة أو حل مشكلة ما عن طريق تقسيم الفكرة أو المشكلة إلى خطوات متتالية قابلة لإعادة التكرار وصولًا إلى النتيجة المطلوبة. فلو سألت أحدهم ما هو ناتج العملية الرياضية التالية 5*(2-3) فقد يعطيك مباشرة الجواب 5 لكن ما فعله الدماغ هو عملية تحليل للمسألة ووضع طريقة لحلها وهذا ما يُدعى بوضع خوارزمية Algorithm. فخوارزمية حل المسألة البسيطة السابقة هي:

  1. اطرح 2 من 3 وسجل الجواب: 1 =2-3.
  2. احسب جداء الناتج مع العدد 5: 5x1.
  3. قل الجواب: 5.

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

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

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

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

ويُقصد بمعالجة لغات البرمجة هو تحويلها من تعليمات مقروءة -في لغات البرمجة المكتوبة Written Programming Languages- أو مرئية بالنسبة للبشر -في لغات البرمجة المرئية Visual programing languages- إلى توجيهات تفهمها الآلة المستهدفة سواء حاسوب أو أية أنظمة إلكترونية أخرى. فما يفهمه الحاسوب هو برنامج مكوّن من الواحدات 1 والأصفار 0 التي تخبره وفقًا لتسلسلها بطريقة محددة سلفًا ما عليه فعله، وتعرف لغة البرمجة التي تُكتب برنامجًا بهذه الطريقة "لغة الآلة" machine language. ونظرًا لصعوبة فهمها للبشر، ظهرت الحاجة إلى لغات برمجة أكثر قربًا من البشر وهنا بدأت الحكاية.

تتكون لغة البرمجة -مثلها مثل أي لغة- عمومًا من الأقسام التالية:

صياغة لغة البرمجة Syntax

هي الطريقة التي نصيغ فيها تعليمات لغة البرمجة ونربطها مع بعضها لإنتاج عبارات صحيحة الصياغة يمكن استخدامها في تنفيذ البرنامج وقد تكون الصياغة:

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

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

دلالة لغة البرمجة Semantic

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

تحديد الأنواع في لغة البرمجة Types

وهي الطريقة التي تصنّف فيها لغة البرمجة القيم والتعابير ضمن أنواع مختلفة وكيفية التعامل مع هذه الأنواع والتحويل فيما بينها. فهنالك مثلًا قيم نصية كأن استخدم القيمة "انقر هنا" وقيم عددية كأن استخدم الرقم 5 وقيم منطقية كأن استخدم القيمة "صحيح" true. وقد تكون نتيجة تنفيذ العملية نوعًا محددًا من البيانات كأن تُنتج العملية الحسابية عددًا أو تنتج نصًا. لهذا تحاول معظم اللغات وضع أنواع للقيم التي تتعامل معها. لكن في المقابل ستجد عدة لغات لا تعتمد على الأنواع مثل جافاسكربت JavaScript وماتلاب MatLab.

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

المكتبات المعيارية Standard Libraries

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

تصنّف لغات البرمجة في فئات ومجموعات وفقًا لصياغتها وطريقة معالجتها للمعلومات وطريقة تنفيذ تعليمات لغة البرمجة وهذا ما سنتوسع فيه بعد قليل.

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

لغات البرمجة مقابل اللغات البشرية

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

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

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

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

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

فيما يلي بعض الأنواع أو الفئات التي تنضوي تحتها لغات البرمجة علمًا أنّ بعضها قد يحقق تصنيفين أو أكثر. لهذا سنحاول أن نصنفها وفق نهج معين.

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

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

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

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

لغات البرمجة منخفضة المستوى 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 Programming
  • لغات البرمجة الكائنية Object-oriented Programming

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

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

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

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

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

  • JAVA
  • C
  • Pascal
  • Fortran
  • BASIC

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

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

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

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

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

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

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

لغات البرمجة عامة الغرض 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.

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

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

تُعد لغة برمجة ما أنها لغة سكربت إن كانت:

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

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

أضف إلى ذلك أنها سريعة التنفيذ كونها تستطيع تنفيذ الطلبات مباشرة (تنفيذ أمر مباشرة) دون الحاجة إلى تعليمات أخرى لتفعيل الطلب كما يزيد سرعتها كونها لغة برمجة مفسّرة. يمكنك مثلًا أن تُنفّذ الأمر ('مرحبًا')window.alert مباشرة في جافاسكربت وهي لغة سكربت مشهورة جدًا، لكنك لن تستطيع فعل ذلك باستخدام لغة ++C. لاحظ ماذا سيتطلب الأمر:


// لنقول مرحبًا C++ برنامج بلغة
#include <iostream>
using namespace std;
int main(){
cout
<<"مرحبًا";
return 0;
}

تُصنف لغات برمجة السكربت إلى:

  • سكربتات تطوير الويب: وتستخدم لكتابة صفحات ويب ديناميكية وتطوير مواقع وتطبيقات الويب، ويمكن أن نميز بين نوعين من السكربتات في هذه الصدد

  • سكربتات تعمل من جانب العميل (أي تُستخدم في بناء الواجهة الأمامية للتطبيق أو الموقع) نجد:

  • سكربتات تعمل من جانب الخادم (أي تستخدم لبناء الواجهة الخلفية للتطبيق، وهي ما يستعرضه المتصفح) نجد منها:

  • سكربتات تعمل مع طرفيات أنظمة التشغيل: وتستخدم لتنفيذ الأوامر ضمن واجهات سطر الأوامر في أنظمة التشغيل المختلفة مثل ويندوز ولينكس. من الأمثلة عليها:

  • BASH: في طرفيات لينكس، وتنفذ طيفًا واسعًا من التعليمات مثل الكتابة والقراءة من وإلى الملفات وتنزيل البرمجيات من الإنترنت وتثبيتها وتشغيل البرمجيات وغيرها الكثير.

  • Windows powerShell: في ويندوز، وتنفذ مهامًا مشابهة لما تنفذه طرفية لينكس.

  • سكربتات للأغراض العامة: يمكن أن تُنفذ تقريبًا أي شيء نذكر منها:

  • Ruby

  • Python

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

اللغات التوصيفية Markup Languages

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

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

يمكن استخدام هذه اللغات لتصميم صفحات ويب مثل HTML أو لتنسيق صفحات الويب مثل CSS أو لتخزين البيانات مثل XML أو لتنسيق النصوص مثل Markdown وغيرها الكثير.

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

يمكنك الرجوع في هذا الصدد إلى مقال تعلم لغة HTML الذي يتحدث عن اللغات التوصيفية عمومًا ولغة HTML خصوصًا.

أسئلة شائعة عن لغات البرمجة

أسئلة شائعة عن لغات البرمجة

إليك بعض الإجابات عن أكثر الأسئلة شيوعًا حول لغات البرمجة.

كم عدد لغات البرمجة الموجودة حاليًا؟

عدد لغات البرمجة وفقًا لموقع ويكيبيديا يقارب 700 لغة برمجة مستخدمة أو توقف استخدامها باستثناء اللغات التوصيفية. لكن يرى البعض أنها قد تصل بجميع تصنيفاتها إلى 8000-9000 وهذا رقم مبالغ فيه قليلًا.

ما السبب في وجود عدد كبير من لغات البرمجة؟

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

ما هي أحدث لغات البرمجة؟

إذا استثنينا الإصدارات الجديدة من اللغات القديمة مثل الإصدار 3 من لغة Python يمكن أن نجد:

  • لغات البرمجة بالدوال:
  • ELIXIR
  • ELM
  • PURESCRIPT
  • SWIFT
  • لغات البرمجة الإجرائية:
  • Go
  • لغات البرمجة بالكائنات:
  • DART
  • PONY
  • CARBON
  • لغات أغراض عامة:
  • HACK
  • Kotlin
  • NIM
  • RUST

ما هي لغات البرمجة السائدة (أشهر لغات البرمجة)؟

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

أشهر لغة من بينها تُستعمل في بناء تطبيقات سطح مكتب تعمل على مختلف أنظمة التشغيل الحاسوبية هي لغة جافا Java وبايثون Python والأخيرة تستعمل في مجال الذكاء الاصطناعي وتعلم الآلة والتعامل مع البيانات وغيرها، أما في مجال الويب، فأشهر لغة فيه حاليًا هي لغة جافاسكربت JavaScript فيمكنك باستعمالها تطوير الواجهات الأمامية Frontend وأصبح بإمكانك أيضًا تطوير الواجهات الخلفية Backend عبر بيئة Node.js وكما يمكنك باستعمال تقنيات الويب تطوير تطبيقات لسطح المكتب تعمل على كل أنظمة التشغيل باستعمال إطار العمل Electron.js، وتعد دورة تطوير التطبيقات باستخدام لغة JavaScript أفضل مرجع عربي يشرح لغة جافاسكربت وكافة تطبيقاتها لبناء تطبيقات الويب وتطبيقات سطح المكتب شرحًا عمليًا.

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

لا يمكن أن نجد إجابة محددة عن هذا السؤال فالغرض من استخدامك للغة البرمجة وتآلفك معها مسألة حاجة ورغبة:

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

هل عليَّ تعلم لغة برمجة؟

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

ما الفائدة من تعلم لغة برمجة؟

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

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

هل من الصعب تعلم لغة برمجة؟

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

ما هي مجالات استخدام لغات البرمجة؟

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

خاتمة

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

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

اقرأ أيضًا

#oqpahameedq

تعليقات