ما المقصود بـ WebAssembly ، وهل يجب استخدامه؟

جدول المحتويات:

ما المقصود بـ WebAssembly ، وهل يجب استخدامه؟
ما المقصود بـ WebAssembly ، وهل يجب استخدامه؟
Anonim

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

ما هو WebAssembly بالضبط؟

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

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

نظرًا لتصميم Wasm من الألف إلى الياء ، فقد تم تصميمه مع وضع الأداء في الاعتبار. إنه يجرد النماذج الأولية المعقدة من JS ، ويقدم بدائل مناسبة. يحتوي JS على عدد تعويمات للأرقام فقط - كل عملية رياضية في JS تتم باستخدام عوامات ، على الرغم من أن الرياضيات العائمة أبطأ بكثير وغير ضرورية في معظم الحالات. يوفر Wasm العناصر الأولية لـ ints ، ويوفر وصولاً إلى الذاكرة على مستوى البايت. يحتوي على تمثيل نصي يسمى WebAssembly Text (

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

نظرًا لأنه مجرد تنسيق تعليمي ، فإن سحر Wasm هو أنه يمكن استخدامه كهدف تجميع محمول للغات أخرى ، دون التضحية بالسرعة كما لو كنت تفعل مع التحويل. يتضمن ذلك لغات مثل C ++ و Rust ، والتي يمكن تشغيلها الآن على الويب عند تجميعها في Wasm.

يمكن استخدام Wasm كهدف تجميع محمول للغات أخرى
يمكن استخدام 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.

موضوع شعبي