مقارنة لغات البرمجة

تُستخدم لغات البرمجة للتحكم في سلوك الآلة (غالباً الحاسوب ). ومثل اللغات الطبيعية ، تتبع لغات البرمجة قواعد بناء الجملة والدلالات .

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

معظم لغات البرمجة غير موحدة بمعيار دولي (أو وطني)، حتى تلك الشائعة الاستخدام، مثل بيرل أو ستاندرد إم إل (على الرغم من الاسم). ومن أبرز لغات البرمجة الموحدة: ألغول ، وسي ، وسي++ ، وجافا سكريبت (تحت اسم إيكما سكريبتوسمول توك ، وبرولوج ، وكومون ليسب ، وسكيم ( معيار IEEE )، وإيسليسب ، وآدا ، وفورتران ، وكوبول ، وإس كيو إل ، وإكس كويري .

مقارنة عامة

يقارن الجدول التالي المعلومات العامة والتقنية لمجموعة مختارة من لغات البرمجة الشائعة الاستخدام . راجع مقالات كل لغة على حدة لمزيد من المعلومات.

أنظمة الكتابة

عمليات الإدخال/الإخراج الآمنة واستدعاءات النظام

تقوم معظم لغات البرمجة بطباعة رسالة خطأ أو إطلاق استثناء في حال فشل عملية إدخال/إخراج أو استدعاء نظام آخر (مثل chmod أو kill )، ما لم يُحدد المبرمج طريقة مختلفة للتعامل مع هذه الأحداث. وبالتالي، فإن هذه اللغات تتعامل مع حالات الفشل بأمان في هذا الصدد.

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

تُعدّ خاصية الإدخال/الإخراج الآمن من الفشل ميزةً في لغات البرمجة التالية: 1C:Enterprise ، Ada (الاستثناءات)، ALGOL (الاستثناءات أو القيمة المُعادة حسب الدالة)، Ballerina ، C# ، Common Lisp (نظام الشروط وإعادة التشغيل)، Curry ، D (إطلاق استثناء عند الفشل)، [ 51 ] Erlang ، Fortran ، Go (إلا إذا تم تجاهل النتيجة صراحةً)، Gosu ، Harbour ، Haskell ، ISLISP ، Java ، Julia ، Kotlin ، LabVIEW ، Mathematica ، Objective-C (الاستثناءات)، OCaml (الاستثناءات)، OpenLisp ، PHP ، Python ، Raku ، Rebol ، Rexx (مع معالجة اختيارية للإشارة عند حدوث خطأ)، Ruby ، Rust (إلا إذا تم تجاهل النتيجة صراحةً)، Scala ، [ 52 ] Smalltalk ، Standard ML ، Swift ≥ 2.0 (الاستثناءات)، Tcl ، Visual Basic ، Visual Basic (.NET) ، Visual Prolog ، Wolfram Language ، Xojo ، XPath / XQuery (باستثناءات) ، و Zeek .

لا يوجد إدخال/إخراج آمن في حالة الفشل : AutoHotkey (يجب التحقق من مستوى الخطأ العام بشكل صريح)، C ، [ 53 ] COBOL ، Eiffel (يعتمد في الواقع على المكتبة وليس محددًا بواسطة اللغة)، GLBasic (سيؤدي عمومًا إلى تعطل البرنامج)، RPG ، Lua (بعض الوظائف لا تحذر أو تطلق استثناءات)، و Perl . [ 54 ]

يتم تضمين بعض عمليات فحص الإدخال/الإخراج في C++ ( STL iostreams تُصدر خطأ عند الفشل ولكن واجهات برمجة تطبيقات C مثل stdio أو POSIX لا تفعل ذلك) [ 53 ] و Object Pascal ، في Bash [ 55 ] يكون اختياريًا.

التعبيرية

لغةنسبة البيانات [ 56 ]نسبة الخطوط [ 57 ]
ج11
لغة سي++2.51
فورتران20.8
جافا2.51.5
بيرل66
أحاديث قصيرة66.25
بايثون66.5

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

المعايير

رسم بياني شريطي للوغاريتم الزمني لإنتاج ماندلبروت 1600 2 [ 60 ] كما ورد في لعبة المعايير [ 61 ]

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

جدول زمني لمقارنات لغوية محددة

  • 1974 – ملاحظات مقارنة حول Algol 68 و PL/I [ 63 ] – SH Valentine – نوفمبر 1974
  • 1976 – تقييم ALGOL 68 و JOVIAL J3B و Pascal و Simula 67 و TACPOL مقابل TINMAN – متطلبات لغة برمجة عالية المستوى مشتركة.
  • 1977 – مقارنة بين PASCAL و ALGOL 68 [ 64 ]أندرو س. تانينباوم – يونيو 1977.
  • 1993 – خمس لغات صغيرة وكيف نمت – BLISS ، Pascal ، ALGOL 68 ، BCPL & Cدينيس م. ريتشي – أبريل 1993.
  • 2009 - حول لغة البرمجة Go - هيا بنا - ما مدى قدرة لغة البرمجة Go من جوجل على منافسة لغة البرمجة X؟ - ديفيد جيفن - نوفمبر 2009

انظر أيضاً

مراجع

  1. اعتبارًا من مايو 2006، فإن موسوعة ديارميد بيجوت للغات الحاسوبية المؤرشفة في 2011-02-20 في Wayback Machine والمستضافة في جامعة مردوخ ، أستراليا، تسرد 8512 لغة حاسوبية.
  2. دليل مرجعي لـ Ada، ISO/IEC 8652:2005(E) الإصدار 3 ، 3.9 الأنواع الموسومة وامتدادات الأنواع
  3. دليل مرجعي لـ Ada، ISO/IEC 8652:2005(E) الإصدار 3 ، القسم 6: البرامج الفرعية
  4. دليل مرجعي لـ Ada، ISO/IEC 8652:2005(E) الإصدار 3 ، القسم 12: الوحدات العامة
  5. دليل مرجعي لـ Ada، ISO/IEC 8652:2005(E) الإصدار 3 ، القسم 9: المهام والمزامنة
  6. "الأنظمة الموزعة" . www.adaic.org .
  7. "Vak.ru" (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 30 مارس 2017. تم الاطلاع عليه بتاريخ 9 أغسطس 2008 .
  8. ^ "ISO/IEC JTC1/SC22/WG6 - الجول" . www.open-std.org .
  9. "Vak.ru" (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 24-03-2017 . تم الاطلاع عليه بتاريخ 09-08-2008 .
  10. "جمعية معايير IEEE" . جمعية معايير IEEE .
  11. "الأشياء - التعريف والاستخدام" .
  12. "مواصفات لغة الباليرينا" (ملف PDF) . WSO2. 2018-05-01. مؤرشف من الأصل (ملف PDF) بتاريخ 2018-05-04 . تم الاطلاع عليه بتاريخ 2018-05-03 .
  13. 1 2 3 POSIX.2 ، Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992.)
  14. "برنامج عملية مجتمع جافا (SM) - طلبات مواصفات جافا: JSRs - تفاصيل JSR# 274" . jcp.org .
  15. ^ "التاريخ" . www.bell-labs.com .
  16. "ISO/IEC JTC1/SC22/WG14 - C" . www.open-std.org .
  17. "ISO/IEC JTC1/SC22/WG21 - لجنة معايير لغة C++ - ISOCPP" . www.open-std.org .
  18. "Codeproject.com: البرمجة الوظيفية في C# 3.0 باستخدام تعبير Lambda" .
  19. ECMA-334؛ ISO/IEC 23270:2006
  20. "كلاريون - الصفحة الرئيسية" . www.softvelocity.com .
  21. "كريستال" . جيت هاب . 2 نوفمبر 2021.
  22. "الأنواع العامة في لغة كريستال" . crystal-lang.org . 13 أبريل 2024.
  23. "التزامن - كريستال" . crystal-lang.org . تم الاطلاع عليه بتاريخ 2024-04-02 .
  24. "برتراند ماير: آليات لغة إيفل الأساسية" . se.inf.ethz.ch .
  25. الإغلاق (برمجة الحاسوب)
  26. ECMA-367؛ ISO/IEC 25436:2006
  27. "الأسئلة الشائعة (FAQ) - لغة البرمجة Go" . go.dev .
  28. "Codewalk: First-Class Functions in Go" . تدعم لغة Go الدوال من الدرجة الأولى، والدوال ذات الرتبة العليا، وأنواع الدوال المُعرَّفة من قِبل المستخدم، والقيم الحرفية للدوال، والإغلاقات، وقيم الإرجاع المتعددة. تدعم هذه المجموعة الغنية من الميزات أسلوب البرمجة الوظيفية في لغة ذات كتابة قوية.
  29. "برنامج عملية مجتمع جافا (SM) - طلبات مواصفات جافا: JSRs - تفاصيل JSR# 241" . jcp.org .
  30. "تقرير لغة هاسكل لعام 2010" . تم الاطلاع عليه بتاريخ 7 ديسمبر 2011 .تعتمد معظم تطبيقات لغة هاسكل على معيار هاسكل 2010.
  31. "البرمجة الكائنية في جوليا" . 4 يونيو 2023. في جوليا، لا تُعدّ البرمجة الكائنية محور التركيز الأساسي، بل تُركّز على الإرسال المتعدد، وهو مفهوم أعمّ. مع ذلك، يُمكن تحقيق البرمجة الكائنية في جوليا من خلال استخدام الأنواع والأساليب المركبة.
  32. "برمجة جوليا الكائنية التوجه" . 29 مايو 2021. تدعم جوليا البرمجة الكائنية التوجه (OOP) بشكل جزئي فقط.
  33. "وثائق جوليا · لغة جوليا" . docs.julialang.org .
  34. "kotlin-script-examples/jvm/main-kts/MainKts.md at master · Kotlin/kotlin-script-examples" . GitHub .
  35. "أدوات بناء آمنة من حيث النوع" . مساعدة كوتلين .
  36. "M8 متوفر الآن!" 2 يوليو 2014. كإطلالة أولية على إمكانيات Kotlin المستقبلية في مجال الانعكاس، يمكنك الآن الوصول إلى الخصائص ككائنات من الدرجة الأولى في Kotlin.
  37. "الروتينات الفرعية" . مساعدة كوتلين .
  38. يقدم كل من Halcyon (Inworldz) و Open Sims تطبيقات متوافقة مع وظائف إضافية.
  39. لا تحتوي لغة Lua على نوع "كائن" صريح (يتم استخدام نوع "جدول" الأكثر عمومية لتعريف الكائن)، ولكنها تحتوي على صيغة صريحة لاستدعاء أساليب الكائن
  40. تُرفق إصدارات البرامج بدليل مرجعي شامل للغة Lua، يُوضح قواعدها النحوية ودلالاتها بالكامل، بالإضافة إلى تطبيق مرجعي ومجموعة اختبارات. تُستخدم هذه الأدوات لإنشاء تطبيقات ومترجمات أخرى للغة Lua VM ، مثل Kahlua وLLVM-Lua.
  41. ISO/IEC 10514-1:1996
  42. ISO 7185
  43. دليل PHP ، الفصل 19. الفئات والكائنات (PHP 5) ،
  44. دليل PHP ، الفصل 17. الدوال
  45. "دليل مرجعي للغة PostScript" (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 18 فبراير 2017. تم الاطلاع عليه بتاريخ 18 فبراير 2017 .
  46. "ميزات البرمجة الكائنية التوجه" . doc.rust-lang.org .
  47. كلابنيك، ستيف؛ نيكولز، كارول. "الماكرو" . لغة برمجة رست .
  48. "معايير المخطط" . standards.scheme.org .
  49. "معايير المخطط" . standards.scheme.org .
  50. "SML '97" . www.smlnj.org .
  51. "std.stdio - لغة برمجة D" . dlang.org .
  52. تعمل لغة Scala على آلة Java الافتراضية التي ترث منها معالجة استثناءات وقت التشغيل.
  53. يمكن لبرنامج gcc إصدار تحذيرات بشأن قيمة errno غير المُعالجة . عادةً ما تُصدر الإصدارات الأحدث من Visual Studio استثناءات عند فشل عمليات الإدخال/الإخراج عند استخدام stdio .
  54. يمكن تفعيل فحص الأخطاء بشكل كبير اختياريًا، ولكن بشكل افتراضي، لا يكون Perl آمنًا ضد الأعطال.
  55. set -e يُمكّن الإنهاء إذا كانت أي حالة خروج غير مُدققة غير صفرية.
  56. البيانات مأخوذة من ماكونيل، ستيف (30 نوفمبر 2009). Code Complete . مطبعة مايكروسوفت. ص 100. ISBN  9780735636972.يُظهر عمود نسبة العبارات "النسب النموذجية لعبارات المصدر في العديد من لغات البرمجة عالية المستوى إلى الكود المكافئ في لغة C. النسبة الأعلى تعني أن كل سطر من الكود في اللغة المدرجة يحقق أكثر مما يحققه كل سطر من الكود في لغة C.
  57. نسبة اختبارات عدد الأسطر التي فازت بها كل لغة إلى عدد الأسطر التي فازت بها لغة C عند استخدام ميزة المقارنة في ماكلون، جون (14 نوفمبر 2012). "قياس طول الكود في 14 لغة" . مؤرشف من الأصل في 19 نوفمبر 2012.تم استخدام C gcc للغة C، وتم استخدام C++ g++ للغة C++، وتم استخدام FORTRAN G95 للغة FORTRAN، وتم استخدام Java JDK Server للغة Java، وتم استخدام Smalltalk GST للغة Smalltalk.
  58. فيليسين، ماتياس. حول القدرة التعبيرية للغات البرمجة . ESOP '90 الندوة الأوروبية الثالثة حول البرمجة. CiteSeerX 10.1.1.51.4656 . 
  59. "كيفية قياس البرامج" . لعبة معايير لغات البرمجة . تم الاطلاع عليه بتاريخ 29-05-2018 .
  60. ماندلبروت، بينوا ب. (1982). الهندسة الكسورية للطبيعة ( طبعة منقحة). سان فرانسيسكو. ISBN  0-7167-1186-9. OCLC 7876824 . {{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط )
  61. "ماندلبروت" . لعبة قياس أداء لغات البرمجة . تم الاطلاع عليه بتاريخ 9 يوليو 2021 .
  62. "المعيار النهائي" . لعبة معايير لغات البرمجة . تم الاطلاع عليه بتاريخ 29-05-2018 .
  63. فالنتاين، إس إتش (نوفمبر 1974). "ملاحظات مقارنة حول Algol 68 وPL/I" . مجلة الكمبيوتر . 17 (4): 325-331 . doi : 10.1093/comjnl/17.4.325 .
  64. ^ “جامعة فريجي أمستردام” (PDF) .

للمزيد من القراءة