ECMAScript

ECMAScript ( تُلفظ / ˈɛkməskrɪpt / ؛ ES ) [ 1 ] هو معيار لغة جافا سكريبت ، ويهدف إلى ضمان توافق صفحات الويب عبر مختلف متصفحات الويب . [ أ ] [ 2 ] وقد تم توحيده من قِبل اللجنة الفنية TC39 التابعة لمنظمة ECMA الدولية في الوثيقة ECMA -262 ، مع توحيد واجهات برمجة التطبيقات الدولية ( i18n ) في الوثيقة ECMA-402 . [ 3 ]

تُستخدم لغة ECMAScript بشكل شائع في برمجة جانب العميل على شبكة الويب العالمية ، ويتم استخدامها بشكل متزايد في برمجة جانب الخادم والخدمات التي تستخدم بيئات التشغيل مثل Node.js ، [ 4 ] و Deno [ 5 ] و Bun . [ 6 ]

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

المعايير

تنشر اللجنة الفنية رقم 39 التابعة لمنظمة ECMA الدولية معايير متعددة تُعرّف لغة جافا سكريبت ، والمعروفة رسميًا باسم ECMAScript. تشمل هذه المعايير بنية اللغة، ودلالاتها، ومكتباتها، والتقنيات التكميلية التي تدعمها. [ 7 ] [ 8 ] ترد تفاصيل هذه المعايير أدناه.

مواصفات لغة ECMAScript (ECMA-262)

يُعرّف معيار ECMA-262 لغة جافا سكريبت، والمعروفة رسميًا باسم ECMAScript. [ 9 ] يحدد معيار ECMA-262 فقط بنية اللغة ودلالات واجهة برمجة التطبيقات الأساسية ( API )، مثل Array، Functionو ، و globalThis، بينما تضيف التطبيقات الصحيحة لجافا سكريبت وظائفها الخاصة مثل الإدخال/الإخراج ومعالجة نظام الملفات .

مواصفات واجهة برمجة تطبيقات التدويل ECMAScript (ECMA-402)

يحدد هذا المعيار واجهات برمجة تطبيقات JavaScript i18n ( Intl)، وهو مكمل لمعيار ECMA-262. [ 10 ] تم اختيار وظائفه من وظائف واجهات برمجة تطبيقات التدويل مثل تلك الموجودة في مكتبة المكونات الدولية لليونيكود (ICU) الخاصة بإطار عمل .NET ، أو منصة Java .

صيغة تبادل بيانات JSON (ECMA-404)

يُعرّف هذا النص صيغة JSON (تدوين كائنات جافا سكريبت)، وهي صيغة ملفات قياسية مفتوحة سهلة القراءة ، وتُستخدم أيضًا لتبادل البيانات . [ 11 ] وقد اشتُقّت من جافا سكريبت، ولكنها صيغة بيانات مستقلة عن لغات البرمجة .

مواصفات تنسيق خريطة المصدر (ECMA-426)

يُعرّف هذا المعيار تنسيق خريطة المصدر ، المستخدم لربط شفرة المصدر المُحوّلة بشفرة المصدر الأصلية. [ 12 ] وقد ابتكر جوزيف شور تنسيق خريطة المصدر الأصلي لاستخدامه في مشروع Closure Inspector لتصغير حجم الشفرة ، وذلك لتمكين تصحيح أخطاء شفرة جافا سكريبت المُحسّنة على مستوى المصدر. وفي عام 2024، نُشر تنسيق خريطة المصدر كمعيار من معايير Ecma.

تاريخ

مواصفات ECMAScript هي مواصفات قياسية للغة برمجة نصية طورها بريندان إيتش من شركة نتسكيب ؛ سُميت في البداية موكا، ثم لايف سكريبت، وأخيراً جافا سكريبت. [ 13 ] في ديسمبر 1995، أعلنت شركتا صن مايكروسيستمز ونتسكيب عن جافا سكريبت في بيان صحفي. [ 14 ] في نوفمبر 1996، أعلنت نتسكيب عن اجتماع لمنظمة ECMA الدولية للمعايير للنهوض بتوحيد معايير جافا سكريبت. [ 15 ] اعتمدت الجمعية العامة لـ ECMA الإصدار الأول من ECMA-262 في يونيو 1997. ومنذ ذلك الحين، نُشرت عدة إصدارات من معيار اللغة. كان اسم "ECMAScript" حلاً وسطاً بين المنظمات المشاركة في توحيد معايير اللغة، وخاصة نتسكيب ومايكروسوفت، اللتين هيمنت خلافاتهما على جلسات وضع المعايير الأولى. علّق إيتش قائلاً: "لطالما كان اسم ECMAScript اسماً تجارياً غير مرغوب فيه، يُشبه اسم مرض جلدي ". [ 16 ] تمّ وضع معايير ECMAScript بشكل رسمي من خلال دلالات تشغيلية، وذلك بفضل العمل الذي أُجري في جامعة ستانفورد وقسم الحوسبة في إمبريال كوليدج لندن لتحليل الأمن وتوحيد المعايير. [ 17 ] كان اختصار "ECMA" يرمز إلى "الرابطة الأوروبية لمصنعي الحواسيب" حتى عام 1994.

تطور

تتولى اللجنة الفنية 39 التابعة لـ ECMA (TC39) مسؤولية صيانة لغة ECMAScript. [ 18 ] تخضع المقترحات الجديدة للغة لعملية مرحلية، حيث تمثل كل مرحلة اكتمال مواصفات المقترح. ويجب التوصل إلى توافق في الآراء داخل اللجنة للمضي قدمًا بالمقترح إلى المرحلة التالية. أما المقترحات التي تصل إلى المرحلة الرابعة، وهي المرحلة النهائية، فسيتم إدراجها في الإصدار التالي من المعيار. [ 19 ] منذ إصدار النسخة السادسة في يونيو 2015، يتم الانتهاء من وضع النسخ الرئيسية الجديدة ونشرها كل شهر يونيو. [ 20 ]

سمات

تتضمن لغة ECMAScript ميزات هيكلية وديناميكية ووظيفية وقائمة على النماذج الأولية . [ 21 ]

أمر حتمي ومنظم

يدعم ECMAScript JavaScript البرمجة الهيكلية على غرار لغة C. سابقًا، كان JavaScript يدعم فقط تحديد نطاق الدوال باستخدام الكلمة المفتاحية `<function>` var، ولكن مع ECMAScript 2015 أُضيفت الكلمتان المفتاحيتان ` <function> let` و` const<block>`، مما سمح لـ JavaScript بدعم كلٍ من تحديد نطاق الكتل وتحديد نطاق الدوال. يدعم JavaScript أيضًا الإدراج التلقائي للفاصلة المنقوطة ، مما يعني أنه يمكن حذف الفاصلة المنقوطة التي تُنهي عادةً العبارة في لغة C في JavaScript. [ 22 ]

كما هو الحال في لغات البرمجة المشابهة للغة C، يتم التحكم في تدفق البرنامجwhile باستخدام عبارات ` for\` doو`\ while` و` if\` و` else\` switch. الدوال ذات كتابة ضعيفة، ويمكنها قبول أي نوع وإرجاع أي قيمة. أما الوسائط غير المُقدمة، فتُعتبر افتراضيًا من النوع `null` undefined.

كتابة ضعيفة

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

متحرك

لغة ECMAScript ذات كتابة ديناميكية. لذا، يرتبط النوع بقيمة وليس بتعبير. تدعم ECMAScript طرقًا متنوعة لاختبار نوع الكائنات، بما في ذلك الكتابة الديناميكية . [ 23 ]

التحويل البرمجي

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

المطابقة

في عام ٢٠١٠، بدأت منظمة إيكما الدولية بتطوير اختبار معياري لمعيار إيكما ٢٦٢ ECMAScript. [ ٢٤ ] يُعدّ Test262 مجموعة اختبارات للتحقق من توافق ECMAScript، ويمكن استخدامه للتحقق من مدى التزام تطبيق جافا سكريبت بمواصفات ECMAScript. تحتوي مجموعة الاختبارات على آلاف الاختبارات الفردية، يختبر كل منها متطلبًا أو أكثر من متطلبات مواصفات ECMAScript. يُعدّ تطوير Test262 مشروعًا تابعًا للجنة الفنية ٣٩ (TC39) التابعة لإيكما. وقد ساهمت المنظمات الأعضاء في TC39 في تطوير إطار الاختبار والاختبارات الفردية لإيكما.

قدمت جوجل ( مجموعة اختبارات سبوتنيك ) ومايكروسوفت مساهمات هامة، حيث ساهمت كلتاهما بآلاف الاختبارات. وتألفت مجموعة اختبارات Test262 من:38014 اختبارًا حتى يناير 2020 [ 25 ] تحظى مواصفات ECMAScript حتى الإصدار ES7 بدعم جيد في متصفحات الويب الرئيسية. يوضح الجدول أدناه معدل التوافق للإصدارات الحالية من البرامج مع أحدث إصدارات ECMAScript.

توافق محرك البرمجة النصية
محرك البرمجة النصيةطلب (طلبات) مرجعيةالمطابقة [ 26 ]
ES5 [ 27 ]ES6 (2015) [ 28 ]ES2016+ [ 29 ]ES.Next [ 30 ] [ 31 ]
قرد العنكبوتفايرفوكس 120100%98%98%5%
محرك V8جوجل كروم 117، مايكروسوفت إيدج 113، أوبرا 98100%98%98%5%
جافا سكريبت كوررحلة سفاري 1799%100%98%11%

انظر أيضاً

ملحوظات

  1. في الماضي، تم استخدامه أيضًا كمعيار لـ JScript ( Internet Explorer ) و ActionScript ( Adobe Flash ).

مراجع

  1. ^ ستيفانوف ، ستويان (2010). أنماط جافا سكريبت . شركة O'Reilly Media، Inc.، ص.  5. رقم ISBN 9781449396947أُرشف من المصدر الأصلي بتاريخ 10 يونيو 2016. تم الاطلاع عليه بتاريخ 12 يناير 2016. لغة البرمجة الأساسية جافا سكريبت [...] مبنية على معيار ECMAScript ، أو ES اختصارًا.
  2. ويرفس-بروك، ألين؛ إيتش، بريندان (2020-05-02). "جافا سكريبت: أول 20 عامًا" . وقائع مؤتمر ACM حول لغات البرمجة . 4 (HOPL): 1-189 . doi : 10.1145/3386327 . S2CID 219603695 . 
  3. "نظرة عامة على تقنيات جافا سكريبت - جافا سكريبت | MDN" . وثائق MDN على الويب . 27 أكتوبر 2025. تم الاطلاع عليه في 25 أبريل 2026 .
  4. وندر، سي. " Node.js — ECMAScript 2015 (ES6) وما بعدها" . Node.js.
  5. "دينو ينضم إلى جهود وضع معايير جافا سكريبت" . 14 ديسمبر 2021.
  6. https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a كعكة
  7. "TC39" . إيكما الدولية . تم الاطلاع عليه بتاريخ 25 أبريل 2026 .
  8. "TC39 - تحديد جافا سكريبت " . tc39.es.
  9. غو، شو يو (14 فبراير 2022). "مواصفات لغة ECMAScript 2022" . tc39.es. مؤرشف من الأصل بتاريخ 8 مايو 2020. تم الاطلاع عليه بتاريخ 14 فبراير 2022 .
  10. "مواصفات واجهة برمجة تطبيقات التدويل ECMAScript 2027" . tc39.es. 17 أبريل 2026. مؤرشف من الأصل في 24 أبريل 2026. تم الاطلاع عليه في 26 أبريل 2026 .
  11. "ECMA-404" . إيكما الدولية . تم الاطلاع عليه بتاريخ 25 أبريل 2026 .
  12. "مواصفات تنسيق خريطة المصدر" . tc39.es. 14 مارس 2026. مؤرشف من الأصل في 24 أبريل 2026. تم الاطلاع عليه في 26 أبريل 2026 .
  13. كريل، بول (23 يونيو 2008). "مبتكر جافا سكريبت يتأمل الماضي والمستقبل" . infoworld.com . إنفوورلد. مؤرشف من الأصل في 20 سبتمبر 2014. تم الاطلاع عليه في 31 أكتوبر 2013 .
  14. «نتسكيب وسن تعلنان عن جافا سكريبت، لغة البرمجة النصية المفتوحة والمتعددة المنصات لشبكات المؤسسات والإنترنت» . Netscape.com . نتسكيب. 4 ديسمبر 1995. مؤرشف من الأصل في 6 يونيو 2002. تم الاطلاع عليه في 4 نوفمبر 2019 .
  15. بيان صحفي (15 نوفمبر 1996). "قادة الصناعة يدعمون توحيد معايير جافا سكريبت الخاصة بشركة نتسكيب في اجتماع هيئة المعايير" . Netscape.com . نتسكيب. مؤرشف من الأصل بتاريخ 3 ديسمبر 1998. تم الاطلاع عليه بتاريخ 31 أكتوبر 2013 .
  16. إيتش، بريندان (2006-10-03). "هل سيكون هناك لاحقة ملف مقترحة لـ es4؟" . mozilla.org . Mail.mozilla.org. مؤرشف من الأصل في 2020-06-21 . تم الاسترجاع في 2021-05-05 .
  17. مافيس، سيرجيو؛ ميتشل، جون سي؛ تالي، أنكور (2020-01-03). "دلالات تشغيلية للغة جافا سكريبت" (ملف PDF) . stanford.edu . رابطة آلات الحوسبة . مؤرشف (PDF) من الأصل في 2020-01-03 . تم الاسترجاع في 2020-01-03 .
  18. "TC39" ، اللجان الفنية ، إيكما الدولية ، تاريخ الاطلاع : 11 أغسطس 2024
  19. "عملية اللجنة الفنية 39" ، اللجنة الفنية 39 ، إيكما الدولية ، تاريخ الاطلاع : 11 أغسطس 2024
  20. "ECMAScript وTC39 وتاريخ جافا سكريبت" ، ui.dev ، تاريخ الاطلاع : 11 أغسطس 2024
  21. "حول" . ECMAScript . تم الاسترجاع في 17-12-2009 .{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  22. فلانغان، ديفيد (17 أغسطس 2006). جافا سكريبت: الدليل الشامل ( الطبعة الخامسة). أورايلي. ص 16. ISBN   978-0-596-10199-2.
  23. "أنواع البيانات وهياكل البيانات في جافا سكريبت - جافا سكريبت | MDN" . Developer.mozilla.org . 16 فبراير 2017. مؤرشف من الأصل في 14 مارس 2017. تم الاطلاع عليه في 24 فبراير 2017 .
  24. "لغة ECMAScript – اختبار 262" . Test262.ecmascript.org. مؤرشف من الأصل بتاريخ 14 مايو 2011. تم الاطلاع عليه بتاريخ 31 أكتوبر 2013 .
  25. "tc39/test262" . جيت هاب . ٢٤ يناير ٢٠٢٠. مؤرشف من الأصل في ١ أكتوبر ٢٠١٩. تم الاطلاع عليه في ٢٩ يناير ٢٠٢٠ .
  26. يُعدّ ES5 المعيار الأساسي لهذه المجموعة من الاختبارات. ويعكس معدل التوافق للإصدارات الأخرى دعم الميزات الجديدة فقط، وليس درجة شاملة.
  27. "جدول توافق ECMAScript 5" . compat-table.github.io . 14 أبريل 2024. مؤرشف من الأصل بتاريخ 14 يناير 2024. تم الاطلاع عليه بتاريخ 14 أبريل 2024 .
  28. "جدول توافق ECMAScript 6" . compat-table.github.io . 14-04-2024. مؤرشف من الأصل بتاريخ 04-04-2024 . تم الاطلاع عليه بتاريخ 14-04-2024 .
  29. "جدول توافق ECMAScript 2016+" . compat-table.github.io . 14 أبريل 2024. مؤرشف من الأصل بتاريخ 14 يناير 2024. تم الاطلاع عليه بتاريخ 14 أبريل 2024 .
  30. "جدول توافق ECMAScript Next" . compat-table.github.io . 14 أبريل 2024. مؤرشف من الأصل بتاريخ 14 يناير 2024. تم الاطلاع عليه بتاريخ 14 أبريل 2024 .
  31. النتيجة المركبة التي تشمل الميزات الجديدة من ES7 وحتى مسودات الإصدار التالي