لغة برمجة للأغراض العامة

في مجال برمجيات الحاسوب ، تُستخدم لغة البرمجة العامة ( GPL ) لبناء برامج في مجالات تطبيقية متنوعة . في المقابل، تُستخدم لغة البرمجة الخاصة بمجال معين (DSL) ضمن مجال محدد. على سبيل المثال، بايثون هي لغة برمجة عامة، بينما SQL هي لغة برمجة خاصة بمجال معين للاستعلام عن قواعد البيانات العلائقية .

تاريخ

صُممت لغات البرمجة المبكرة للحوسبة العلمية (الحسابات العددية) أو معالجة البيانات التجارية، كما هو الحال مع أجهزة الحاسوب. دعمت اللغات العلمية مثل فورتران وألغول حسابات الفاصلة العائمة والمصفوفات متعددة الأبعاد، بينما دعمت لغات الأعمال مثل كوبول تنسيقات الملفات ذات الحقول الثابتة وسجلات البيانات . أما اللغات المتخصصة مثل IPL-V و LISP لمعالجة القوائم الرمزية ، و COMIT لمعالجة السلاسل النصية، وAPT للآلات التي يتم التحكم فيها رقميًا ، فكان استخدامها أقل شيوعًا. وكانت برمجة الأنظمة التي تتطلب معالجة المؤشرات تتم عادةً بلغة التجميع ، على الرغم من استخدام JOVIAL في بعض التطبيقات العسكرية. [ 1 ]

صُمم نظام System/360 من شركة IBM ، الذي أُعلن عنه عام 1964، كبنية أجهزة موحدة تدعم التطبيقات العلمية والتجارية على حد سواء، وطورت IBM لغة البرمجة PL/I خصيصًا له كلغة عامة الأغراض تدعم البرمجة العلمية والتجارية وبرمجة الأنظمة. في الواقع، استُخدمت مجموعة فرعية من PL/I كلغة برمجة قياسية لأنظمة التشغيل Multics .

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

كما تم تطوير العديد من اللغات المتخصصة بدءًا من الستينيات: GPSS و Simula لمحاكاة الأحداث المنفصلة؛ MAD و BASIC و Logo و Pascal لتعليم البرمجة؛ C لبرمجة الأنظمة؛ JOSS و APL/360 للبرمجة التفاعلية. [ 1 ]

GPL مقابل DSL

لا يكون التمييز بين لغات البرمجة العامة ولغات البرمجة المتخصصة واضحًا دائمًا. [ 2 ] قد تُصمم لغة برمجة لمهمة محددة، ولكن تُستخدم خارج نطاق تلك المهمة الأصلية، وبالتالي تُعتبر لغة برمجة عامة. على سبيل المثال، صُممت لغات COBOL و Fortran و Lisp كلغات برمجة متخصصة (لمعالجة الأعمال، والحسابات العددية، والمعالجة الرمزية)، ولكنها أصبحت لغات برمجة عامة بمرور الوقت. في المقابل، قد تُصمم لغة للاستخدام العام، ولكن تُطبق عمليًا في مجال محدد فقط. [ 3 ] يجب أن تُقلل لغة البرمجة المناسبة لمشكلة ما، سواء كانت لغة عامة أو لغة برمجة متخصصة، من مستوى التفاصيل المطلوبة مع الحفاظ على قدرتها التعبيرية الكافية في مجال المشكلة. [ 4 ] وكما يوحي الاسم، فإن اللغة العامة "عامة" بمعنى أنها لا تدعم الترميز المتخصص، بينما يمكن تصميم لغات البرمجة المتخصصة في مجالات متنوعة لمعالجة هذه المشكلة. [ 4 ] تُفضل اللغات العامة على لغات البرمجة المتخصصة عندما لا يكون مجال التطبيق مفهومًا جيدًا بما يكفي لتبرير وجود لغة خاصة به. في هذه الحالة، يمكن استخدام لغة برمجة عامة الأغراض مزودة بمكتبة مناسبة من أنواع البيانات والوظائف الخاصة بالمجال. [ 5 ] على الرغم من أن لغات البرمجة الخاصة بالمجال (DSL) عادةً ما تكون أصغر حجمًا من لغات البرمجة العامة (GPL) نظرًا لأنها توفر نطاقًا أضيق من رموز التجريد، إلا أن بعض لغات البرمجة الخاصة بالمجال تحتوي في الواقع على لغة برمجة عامة كاملة كلغة فرعية. في هذه الحالات، تستطيع لغات البرمجة الخاصة بالمجال توفير قدرة تعبيرية خاصة بالمجال بالإضافة إلى القدرة التعبيرية للغة البرمجة العامة. [ 6 ]

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

المزايا والعيوب

تُستخدم لغات البرمجة العامة على نطاق أوسع بين المبرمجين. ووفقًا لدراسة، كانت لغات C و Python و Java الأكثر استخدامًا في عام 2021. [ 7 ] ومن الحجج المؤيدة لاستخدام لغات البرمجة العامة بدلًا من اللغات المتخصصة في مجال معين، أن عددًا أكبر من الناس سيكونون على دراية بهذه اللغات، مما يُغني عن الحاجة إلى تعلم لغة جديدة.

بالإضافة إلى ذلك، توجد مكتبات برمجية للعديد من المهام (مثل التحليل الإحصائي، والتعلم الآلي، وما إلى ذلك) تخضع لاختبارات مكثفة وتُحسَّن باستمرار. من الناحية النظرية، ينبغي أن يساهم وجود هذه المكتبات في سد الفجوة بين لغات البرمجة العامة ولغات البرمجة المتخصصة. [ 4 ]

سعت دراسة تجريبية أُجريت عام 2010 إلى قياس مهارات حل المشكلات والإنتاجية بين لغات البرمجة العامة (GPL) ولغات البرمجة الخاصة بالمجال (DSL) من خلال عرض مشكلات على مستخدمين ملمين بلغة البرمجة العامة ( C# ) وغير ملمين بلغة البرمجة الخاصة بالمجال ( XAML ). أظهرت النتائج أن مستخدمي لغة البرمجة الخاصة بالمجال تفوقوا بنسبة 15%، على الرغم من كونهم أكثر دراية بلغة البرمجة العامة، مما يستدعي إجراء المزيد من البحوث. [ 4 ]

أمثلة

ج

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

تُعدّ لغة C مناسبة للاستخدام في مجالات متنوعة نظرًا لعموميتها. فهي توفر اقتصادًا في التعبير، وتحكمًا في تدفق البيانات، وهياكل بيانات، ومجموعة غنية من المعاملات، دون أن تُقيّد مستخدميها باستخدامها في سياق واحد. [ 9 ] ونتيجةً لذلك، ورغم أن مُبتكريها استخدموها في البداية لإعادة كتابة نواة نظام التشغيل يونكس ، [ 10 ] فقد تمّ تكييفها بسهولة للاستخدام في تطوير التطبيقات، والأنظمة المُدمجة (مثل برمجة المعالجات الدقيقة)، وألعاب الفيديو (مثل لعبة Doom )، وغيرها. واليوم، لا تزال لغة C واحدة من أكثر لغات البرمجة شيوعًا واستخدامًا. [ 11 ]

لغة سي++

صُممت لغة C++ كامتداد للغة C، وقدمت ميزات البرمجة الكائنية ، بالإضافة إلى مزايا أخرى مثل المراجع، وتحميل المعاملات الزائد، والوسائط الافتراضية. ومثل لغة C، سمحت عمومية لغة C++ باستخدامها في نطاق واسع من المجالات. ورغم أن مجال استخدامها الأساسي يكمن في برمجة الأنظمة (نظرًا لقدرة C++ على إتاحة الوصول إلى بنية النظام منخفضة المستوى)، [ 12 ] فقد استُخدمت على نطاق واسع لبناء تطبيقات سطح المكتب، وألعاب الفيديو، وقواعد البيانات، والأنظمة المالية، وغير ذلك الكثير. [ 13 ] ولا تزال كبرى شركات البرمجيات والتمويل، مثل مايكروسوفت ، وآبل ، وبلومبيرغ ، ومورغان ستانلي ، تستخدم لغة C++ على نطاق واسع في تطبيقاتها الداخلية والخارجية. [ 13 ]

بايثون

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

تتضمن بعض المجالات التي يتم فيها استخدام لغة بايثون ما يلي: [ 16 ]

  • تطوير الويب - سمحت أطر العمل مثل Django و Flask لمطوري الويب بإنشاء خوادم ويب قوية يمكنها أيضًا استغلال النظام البيئي الأوسع لـ Python.
  • العلوم والأوساط الأكاديمية – ساهمت المكتبات العلمية ومكتبات البيانات، مثل SciPy و Pandas ، في تمكين استخدام لغة بايثون في البحث العلمي. [ 17 ]
  • التعلم الآلي – ساهمت مكتبات مثل scikit-learn و TensorFlow في جعل التعلم الآلي أكثر سهولة للمطورين. [ 18 ]
  • تطوير البرمجيات العامة – تطوير تطبيقات المستخدم، وبرامج استخراج البيانات من مواقع الويب، والألعاب، وغيرها من البرامج العامة.

قائمة

فيما يلي بعض لغات البرمجة ذات الأغراض العامة:

انظر أيضاً

مراجع

  1. 1 2 جان إي. ساميت، "لغات البرمجة: التاريخ والمستقبل"، اتصالات رابطة آلات الحوسبة 15 :7:601-610 (يوليو 1972) doi : 10.1145/361454.361485
  2. ^ فان دورسن ، آري. كلينت، بول؛ فيسر، جوست (2000). “اللغات الخاصة بالمجال: ببليوغرافيا مشروحة”. إشعارات ACM SIGPLAN . 35 (6): 26– 36. سيتيسيركس 10.1.1.33.8207 . دوى : 10.1145/352029.352035 . 
  3. بيري، جيرارد (مايو 2006). "البرمجة في الوقت الحقيقي: لغات ذات أغراض خاصة أم لغات ذات أغراض عامة" . HAL Open Science .
  4. 1 2 3 4 كوسار، توماز (مايو 2010). "مقارنة لغات البرمجة العامة ولغات البرمجة الخاصة بمجال معين: دراسة تجريبية" (ملف PDF) . علوم الحاسوب ونظم المعلومات . 7 (2): 247-264 . doi : 10.2298/CSIS1002247K .
  5. فان ديورسن، آري (ديسمبر 1998). "لغات صغيرة: صيانة قليلة؟" . مجلة صيانة البرمجيات: البحث والممارسة . 10 (2): 75-92 . doi : 10.1002/(SICI)1096-908X(199803/04)10:2 < 75::AID-SMR168 > 3.0.CO ; 2-5 .
  6. ^ فان دورسن ، آري. كلينت، بول؛ فيسر ، جوست (يونيو 2000). "اللغات الخاصة بالمجال: ببليوغرافيا مشروحة" . إشعارات ACM SIGPLAN . 35 (6): 26-36 . دوى : 10.1145 / 352029.352035 . ISSN 0362-1340 . S2CID 1049872 .  
  7. "لغات البرمجة الأكثر شيوعًا - 1965/2021 - تحديث جديد - الإحصاءات والبيانات" . statisticsanddata.org . تاريخ الاسترجاع: 3 يونيو 2022 .
  8. تومسون، ك. (1972-01-07). "غلاف المذكرة الفنية" (ملف PDF) . مختبرات بيل للهواتف . مؤرشف (ملف PDF) من الأصل بتاريخ 2015-06-11 . تم الاطلاع عليه بتاريخ 2022-06-03 .
  9. دبليو، كيرنيغان، برايان (2016). لغة البرمجة سي . برنتيس هول. ISBN 978-0-13-110370-2. OCLC 1004153413 . {{cite book}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط )
  10. ريتشي، دينيس (أبريل 1993). "تطوير لغة C" (ملف PDF) . إشعارات ACM SIGPLAN . 28 (3): 201-208 . doi : 10.1145/155360.155580 .
  11. "مؤشر TIOBE" . TIOBE . تم الاسترجاع في 2022-06-03 .
  12. ستروستروب، بيارن (1995). لغة البرمجة سي++ . أديسون-ويسلي.
  13. 1 2 "تطبيقات C++" . www.stroustrup.com . تم الاطلاع عليه بتاريخ 2022-06-03 .
  14. "artima – The Making of Python" . www.artima.com . تم الاطلاع عليه بتاريخ 3 يونيو 2022 .
  15. "أسئلة وأجوبة عامة حول بايثون - وثائق بايثون 3.10.4" . docs.python.org . تم الاطلاع عليه بتاريخ 2022-06-03 .
  16. "تطبيقات بايثون" . Python.org . تم الاطلاع عليه بتاريخ 2022-06-03 .
  17. "شعبية لغات البرمجة في 12086 ورقة بحثية - قياس الصحة" . تم الاطلاع عليه بتاريخ 3 يونيو 2022 .
  18. بيدريجوسا، فابيان (2011). "Scikit-learn: تعلم الآلة في بايثون" (ملف PDF) . مجلة أبحاث تعلم الآلة . 12 : 2825-2830 . arXiv : 1201.0490 . Bibcode : 2011JMLR...12.2825P .