لم تعد JavaScript هي اللغة الوحيدة التي يمكن تشغيلها محليًا في المتصفحات. تم تعيين WebAssembly لإحداث ثورة في طريقة ترميزك للويب ، مما يسمح بنقل التطبيقات الأصلية إلى المتصفح بأداء شبه أصلي.
ما هو WebAssembly بالضبط؟
JavaScript هي لغة مفسرة بالكامل. عند الاتصال بموقع ويب ، يرسلون رمز JavaScript لتقوم بتنفيذه. عادةً ما يتم تصغيرها (تتم إزالة المسافات البيضاء وفواصل الأسطر لتوفير مساحة) ، ولكن يمكنك فتح أدوات مطوري Chrome وقراءة شفرة المصدر مباشرةً.في حين أن JavaScript سريع جدًا في الوقت الحاضر ، لا يزال يتعين تفسيره بواسطة محرك JS ، والذي قد يستغرق بعض الوقت لتحليله وإضافة الكثير من النفقات العامة. بالإضافة إلى ذلك ، جافا سكريبت ليست فعالة تمامًا منذ البداية.
WebAssembly ، غالبًا ما يتم اختصاره باسم Wasm ، ليس حقًا "لغة" ستكتبها يدويًا. إنه تنسيق تعليمات ثنائية مصمم ليكون أسرع من جافا سكريبت وقريب جدًا من اللغات المجمعة. لا تزال لغة مفسرة ، لكنها مصممة لتفسر بواسطة الآلات وليس البشر.
نظرًا لتصميم Wasm من الألف إلى الياء ، فقد تم تصميمه مع وضع الأداء في الاعتبار. إنه يجرد النماذج الأولية المعقدة من JS ، ويقدم بدائل مناسبة. يحتوي JS على عدد تعويمات للأرقام فقط - كل عملية رياضية في JS تتم باستخدام عوامات ، على الرغم من أن الرياضيات العائمة أبطأ بكثير وغير ضرورية في معظم الحالات. يوفر Wasm العناصر الأولية لـ ints ، ويوفر وصولاً إلى الذاكرة على مستوى البايت. يحتوي على تمثيل نصي يسمى WebAssembly Text (
wat) ، والتي يمكنك استخدامها للترميز مباشرة. ستقوم دائمًا بتجميعها في تنسيقها الثنائي لاستخدامها على الويب. تحت الغطاء ، يعمل Wasm على جهاز افتراضي قائم على المكدس ، والذي يترجم التعليمات إلى رمز فعلي يعمل على جهازك.
نظرًا لأنه مجرد تنسيق تعليمي ، فإن سحر Wasm هو أنه يمكن استخدامه كهدف تجميع محمول للغات أخرى ، دون التضحية بالسرعة كما لو كنت تفعل مع التحويل. يتضمن ذلك لغات مثل C ++ و Rust ، والتي يمكن تشغيلها الآن على الويب عند تجميعها في Wasm.

إذا تم تفجير عقلك للتو ، فهذا ليس نظريًا - إنه يعمل في الواقع عمليًا. كان AutoDesk قادرًا على نقل AutoCAD ، وهو قاعدة بيانات C ++ عمرها 30 عامًا ، إلى تطبيق ويب قائم على WebAssembly ، في غضون بضعة أشهر ، بسهولة نسبية. تُعد التطبيقات الأصلية التي يتم نقلها إلى الويب حالة استخدام رئيسية لـ Wasm ، وسنبدأ في رؤية المزيد من التطبيقات التي تتبع هذا النهج بينما يدفع Wasm ما هو ممكن في المتصفح.
إذا كنت تريد عرضًا توضيحيًا رائعًا لقوة Wasm ، فمن المحتمل أن يكون لديك بالفعل - يعمل Google Earth في Wasm ، مما يعرض نماذج ثلاثية الأبعاد معقدة بمستويات LoD سلسة ويتم تحميلها أثناء الطيران حول الكوكب ، كل ذلك بشكل مثالي سلس 60 إطارًا في الثانية. هذا ببساطة غير ممكن مع JavaScript.
إذا كنت ترغب في بدء العمل مع Wasm ، فيمكنك التوجه إلى ملعب WebAssembly عبر الإنترنت لتجربته.
هل سيستبدل Wasm JavaScript؟
لا. لا تزال JavaScript لغة رائعة ، ومع تجاوز استخدام NPM جميع مديري حزم اللغات الأخرى ، لن تختفي في أي وقت قريبًا.
لا تزال محركات JavaScript الحديثة مثل V8 سريعة إلى حد ما ، وعلى الرغم من أنها لن تسمح بنفس النوع من الأداء الأصلي الذي يجلبه Wasm ، إلا أنه لا يزال مقبولاً لمعظم تطبيقات الويب الأساسية والبرامج النصية البسيطة التي لا تحتاج إلى القيام بذلك طحن البيانات الهائل. بشكل أساسي ، لن تستخدم Wasm للبرمجة النصية الأساسية على موقع الويب الخاص بك.تشغيل تنبيه عندما يضغط المستخدم على زر ، على سبيل المثال ، يتم تنفيذه بسهولة بواسطة JS ، ولا يحتاج إلى أن يكون أداءً كافيًا لتشغيل مليون مرة في الثانية ، وبالتأكيد لا يلزم كتابته في C.
JS يمكن الوصول إليه بشكل أكبر ، كما ثبت من نجاح أطر عمل JS من جانب العميل مثل React. لا تزال تطبيقات الويب التي تم إنشاؤها باستخدام React سريعة جدًا ، ومع تحسين العرض الجيد يمكن تشغيله بسرعة 60 إطارًا في الثانية دون مشاكل في معظم الهواتف الذكية.
ومع ذلك ، عندما تسرع وتريد تشغيل تطبيق سطح مكتب في متصفح ، فإن Wasm سيصبح التنسيق المفضل. مع ذلك ، لا تزال JavaScript مطلوبًا حتى لاستدعاء طرق Wasm ، وما زلت ستستخدمها في Wasm codeebase.
واسم على سطح المكتب
هذا يبدو غير متوقع بعض الشيء في البداية ، لكن تشغيل Wasm على الخادم أكثر منطقية مما تعتقد. تعمل WASI ، أو WebAssembly System Interface ، على توحيد كيفية تفاعل Wasm مع النظام ، وتوفر بيئة معيارية لـ WebAssembly للقيام بكل سحره خارج المستعرض ، سواء على سطح المكتب أو في بيئة الخادم.باستخدام WASI ، يمكن للمطورين كتابة نفس التطبيق الأصلي والويب ، دون اللجوء إلى تشغيل المزيد من مثيلات Chrome مع Electron.
بمعنى ما ، هذا يحل محل الكثير مما ينجزه Docker. حتى أن مؤسس Docker ، Solomon Hykes ، قال ذلك. يمكن ترجمة التعليمات البرمجية المكتوبة بأي لغة (مما يجعل هذا الأمر مختلفًا عن. NET / JVM) إلى Wasm ، ويمكن تشغيلها على أي خادم باستخدام WASI. إنه يستخرج الكود بعيدًا عن الجهاز (لا مزيد من التجميع لوحدة معالجة مركزية أو نظام تشغيل معين) ، ويتطلب ببساطة تجميع WASI وتثبيته على الجهاز الذي يعمل عليه. على الرغم من أن Docker لن يختفي أيضًا ، فقد يكون قادرًا في المستقبل على تشغيل حاويات Linux و Windows و WASI جنبًا إلى جنب.
هذا مشابه للوعد الذي قدمته Java - ستقوم بيئة وقت التشغيل بتشغيل نفس الكود على مضيف Windows أو مضيف Linux. ومع ذلك ، فإن نقطة بيع Wasm هي أنك لست مضطرًا إلى البرمجة في Java ، ولديك الحرية في اختيار لغات أكثر أداءً مثل C ++ و Rust.