معنى مترجم أو مترجم في جافا سكريبت

لا يمكن لأجهزة الكمبيوتر تشغيل التعليمات البرمجية التي تكتبها بالفعل جافا سكريبت (أو أي لغة أخرى في هذا الشأن). يمكن لأجهزة الكمبيوتر تشغيل رمز الجهاز فقط. يتم تعريف رمز الجهاز الذي يمكن لجهاز كمبيوتر معين تشغيله داخل المعالج الذي سيقوم بتشغيل تلك الأوامر ويمكن أن يكون مختلفًا لمعالجات مختلفة.

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

يجب تجميع لغات التجميع أو تفسيرها

في وقت مبكر جدا أدركت أنه أسهل في الكتابة اللغات كانت هناك حاجة إليها وأن الكمبيوتر نفسه يمكن استخدامه لترجمة تلك التعليمات إلى التعليمات البرمجية للجهاز التي يمكن أن يفهمها الكمبيوتر بالفعل. كان هناك نهجان يمكن اتباعهما مع هذه الترجمة وتم اختيار كلا البدلين (سيتم استخدام أحدهما أو الآخر اعتمادًا على اللغة المستخدمة ومكان تشغيله).

instagram viewer

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

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

متغيران في الترجمة والتفسير

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

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

هل يتم ترجمة جافا سكريبت أو تفسيره؟

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

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

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

أمثلة للحصول على جافا سكريبت لتشغيل أسرع

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

ستكون هناك أيضًا حالات توفر فيها JavaScript طرقًا متعددة لتقديم الطلب نفسه. في تلك الحالات ، قد تكون إحدى طرق الوصول إلى المعلومات أكثر تحديدًا من الأخرى. على سبيل المثال ، document.getElementsByTagName ('table') [0] .tBodies and document.getElementsByTagName ('table') [0] .getElementsByTagName ('tbody') استرجاع نفس nodelist من علامات tbody في الجدول الأول في صفحة الويب ولكن أول هذه هو أمر محدد لاسترداد علامات tbody حيث يحدد الثاني أننا نقوم باسترداد علامات tbody في معلمة ويمكن استبدال قيم أخرى لاسترداد أخرى العلامات. في معظم المتصفحات ، سيتم تشغيل المتغير الأقصر والأكثر تحديدًا للرمز بشكل أسرع (في بعض الحالات أسرع بكثير) من المتغير الثاني ، لذا فمن المنطقي استخدام الإصدار الأقصر والأكثر تحديدًا الإصدار. كما أنه يسهل قراءة التعليمات البرمجية والحفاظ عليها.

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