ما الفرق بين JavaScript و ECMAScript؟

لقد جربت googling "الفرق بين JavaScript و ECMAScript".

انتهى بي الأمر إلى الخوض في بحر من النتائج الغامضة والمتضاربة على ما يبدو:

"ECMAScript هو معيار."

"جافا سكريبت هو معيار."

"ECMAScript هو أحد المواصفات."

"جافا سكريبت هو تطبيق لمعيار ECMAScript."

"ECMAScript هو معيار JavaScript."

"ECMAScript هي لغة."

"JavaScript هي لهجة من ECMAScript."

"ECMAScript هو JavaScript."

كبح جماح الرغبة في البكاء ، خففت وقررت الالتزام ببعض الأبحاث المؤلمة والمثمرة.

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

حتى تضخ.

مسرد JavaScript / ECMAScript

فيما يلي قائمة بالتعاريف المصممة مع التركيز على الاتساق والوضوح. التعريفات ليست كاملة بنسبة 100٪. تم إنشاؤها بطريقة توفر فهمًا عالي المستوى للاتصال والعلاقة بين JavaScript و ECMAScript.

بدون مزيد من اللغط ، لنبدأ.

Ecma الدولية

منظمة تضع معايير للتقنيات.

لتوضيح مثال على "قياسي" (على الرغم من أنه لم يتم إنشاؤه بواسطة Ecma) ، فكر في جميع لوحات المفاتيح التي استخدمتها على الإطلاق. هل كانت الغالبية العظمى تحتوي على أحرف بالترتيب نفسه ، وشريط مسافة ، ومفتاح Enter ، ومفاتيح أسهم ، مع عرض الأرقام في صف في الأعلى؟ وذلك لأن معظم الشركات المصنعة للوحة المفاتيح تعتمد تصميم لوحة المفاتيح على معيار تخطيط QWERTY.

ECMA-262

هذا هو المعيار المنشور من قبل Ecma International. يحتوي على مواصفات لغة البرمجة النصية للأغراض العامة.

ECMA-262 هو معيار مثل QWERTY ، ولكن بدلاً من تمثيل مواصفات تخطيط لوحة المفاتيح ، فإنه يمثل مواصفات لغة برمجة نصية تسمى ECMAScript.

فكر في ECMA-262 كرقم مرجعي لـ ECMAScript.

لغة برمجة

لغة برمجة مصممة خصيصًا للعمل على كيان أو نظام موجود

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

ECMAScript

المواصفات المحددة في ECMA-262 لإنشاء لغة برمجة نصية للأغراض العامة.

مرادف: مواصفات ECMAScript

بينما ECMA-262 هو اسم المعيار ، فإنه يمثل مواصفات لغة البرمجة ECMAScript.

يوفر ECMAScript القواعد والتفاصيل والإرشادات التي يجب على لغة البرمجة النصية مراعاتها حتى يتم اعتبارها متوافقة مع ECMAScript.

جافا سكريبت

لغة نصية للأغراض العامة تتوافق مع مواصفات ECMAScript.

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

عندما يطلق الناس على JavaScript "لهجة من لغة ECMAScript" ، فإنهم يقصدونها بنفس المعنى عندما يتحدثون عن اللهجات الإنجليزية أو الفرنسية أو الصينية. تستمد اللهجة معظم قاموسها وتركيبها من لغتها الأم ، لكنها تنحرف بما يكفي لتستحق التميز.

تنفذ JavaScript في الغالب مواصفات ECMAScript كما هو موضح في ECMA-262 ، ولكن توجد بعض الاختلافات. توضح Mozilla ميزات لغة JavaScript غير ECMAScript هنا:

محرك JavaScript

برنامج أو مترجم فوري يفهم وينفذ كود JavaScript.

المرادفات : مترجم JavaScript ، وتنفيذ JavaScript

توجد محركات JavaScript بشكل شائع في متصفحات الويب ، بما في ذلك V8 في Chrome و SpiderMonkey في Firefox و Chakra في Edge. كل محرك يشبه وحدة اللغة لتطبيقه ، مما يسمح له بدعم مجموعة فرعية معينة من لغة JavaScript.

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

يساعد هذا القياس في شرح بعض الأشياء حول المتصفحات:

الاختلافات في أداء المتصفح

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

الاختلافات في دعم المتصفح

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

فيما يتعلق بدعم المستعرض ، يتحدث الناس عادةً عن "توافق ECMAScript" بدلاً من "توافق JavaScript" ، على الرغم من أن محركات JavaScript تحلل وتنفذ… حسنًا ، JavaScript. قد يكون هذا محيرًا بعض الشيء ، ولكن هناك تفسير.

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

لذلك ، يميل المطورون إلى طرح أسئلة مثل ، "ما هو إصدار ECMAScript الذي يدعمه هذا المتصفح؟" أو "ما هي ميزات ECMAScript التي يدعمها هذا المتصفح؟" إنهم يريدون معرفة ما إذا كانت Google و Mozilla و Microsoft قد تمكنوا من تحديث محركات JavaScript لمتصفحاتهم - على سبيل المثال V8 و SpiderMonkey و Chakra ، على التوالي - مع الميزات الموضحة في أحدث ECMAScript.

يعد جدول توافق ECMAScript موردًا جيدًا للإجابة على هذه الأسئلة.

إذا ظهر إصدار جديد من ECMAScript ، فإن محركات JavaScript لا تدمج التحديث بأكمله دفعة واحدة. أنها تدمج ميزات ECMAScript الجديدة بشكل تدريجي ، كما هو موضح في هذا المقتطف من تغيير JavaScript في Firefox:

وقت تشغيل JavaScript

البيئة التي يتم فيها تشغيل تعليمات JavaScript البرمجية ويتم تفسيرها بواسطة محرك JavaScript. يوفر وقت التشغيل الكائنات المضيفة التي يمكن لـ JavaScript العمل عليها والعمل معها.

المرادفات : البيئة المضيفة

وقت تشغيل JavaScript هو "الكيان أو النظام الحالي" المذكور في تعريف لغة البرمجة النصية. تمر التعليمات البرمجية عبر محرك JavaScript ، وبمجرد تحليلها وفهمها ، يقوم كيان أو نظام بتنفيذ الإجراءات المفسرة. كلبيمشي شخصتشغيل ، تقفز شخصية لعبة فيديو (أو في حالة الصورة أعلاه ، حطام).

تجعل التطبيقات نفسها متاحة لبرمجة JavaScript النصية من خلال توفير "كائنات مضيفة" في وقت التشغيل. بالنسبة إلى جانب العميل ، سيكون وقت تشغيل JavaScript هو مستعرض الويب ، حيث يتم توفير الكائنات المضيفة مثل windows ومستندات HTML للمعالجة.

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

نقطة مثيرة للاهتمام: يمكن أن تشترك أوقات تشغيل JavaScript المختلفة في نفس محرك JavaScript. V8 ، على سبيل المثال ، هو محرك JavaScript المستخدم في كل من Google Chrome و Node.js - وهما بيئتان مختلفتان تمامًا.

ECMAScript 6

إنها الإصدار السادس من معيار ECMA-262 ، وتتميز بالتغييرات والتحسينات الرئيسية لمواصفات ECMAScript.

المرادفات : ES6 و ES2015 و ECMAScript 2015

غيرت هذه النسخة من ECMAScript اسمها من ES6 إلى ES2015 لأنه في عام 2015 قررت Ecma International التحول إلى الإصدارات السنوية من ECMAScript. وفقًا لذلك ، بدأت Ecma International أيضًا في تسمية الإصدارات الجديدة من مواصفات ECMAScript بناءً على السنة التي تم إصدارها فيها. باختصار ، ES6 و ES2015 هما اسمان مختلفان لنفس الشيء.

بابل

محول يمكنه تحويل كود ES6 إلى كود ES5.

يمكن للمطورين استخدام الميزات الجديدة اللامعة التي تأتي مع ES6 ، ولكن قد يهتمون بالتوافق عبر المستعرضات لتطبيقات الويب الخاصة بهم. في وقت كتابة هذه المقالة ، لا يدعم كل من Edge و Internet Explorer الميزات من مواصفات ES6 بشكل كامل.

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

معلومة أخرى مثيرة للاهتمام

أتمنى أن تكون قد وجدت هذه المعلومات حول JavaScript و ECMAScript مفيدة. قبل أن نختتم الأمور هنا ، أود مشاركة معلومة أخرى تحتاج إلى توضيح لمطوري الويب الوليدين مثلي.

دجاج أو بيضة

جزء محير من التاريخ هو أن JavaScript تم إنشاؤه في عام 1996. ثم تم تقديمه إلى Ecma International في عام 1997 للتوحيد القياسي ، مما أدى إلى ECMAScript. في الوقت نفسه ، نظرًا لأن JavaScript متوافق مع مواصفات ECMAScript ، فإن JavaScript هو مثال على تنفيذ ECMAScript.

هذا يتركنا مع هذه الحقيقة الممتعة: يعتمد ECMAScript على JavaScript ، ويستند JavaScript على ECMAScript.

أنا أعلم.

يبدو تمامًا مثل مجاز السفر عبر الزمن لكون الناس أبًا لهم - متزعزع قليلاً ، لكن من الممتع التفكير فيه.

كل الاشياء الجيدة

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

لا تتردد في ترك أي أسئلة أو تعليقات أو اقتراحات أو مخاوف أدناه.

شكرا جزيلا على القراءة لك!