ویرگول
ورودثبت نام
پویا پورارشد
پویا پورارشدعلاقه‌مند به کامپیوتر، توسعه و برنامه‌نویسی
پویا پورارشد
پویا پورارشد
خواندن ۳ دقیقه·۳ ماه پیش

WebAssembly یعنی مرگ جاوا اسکریپت؟

تقریبا هرکسی که با دنیای وب سروکار داره، اسم جاوا اسکریپت رو شنیده. زبانی که تا حدودی قلب تپنده وب حساب میشه. (کلمه تپنده رو خیلی دقت کنید!). اما در چند سال اخیر رقیبی تازهنفس وارد میدان شده: WebAssembly. تکنولوژیای که بسیاری آن را سریعتر، سبکتر و آیندهدارتر از جاوااسکریپت میدونن. اما، آیا واقعا WebAssembly میتونه جاوااسکریپت را از تخت پادشاهی پایین بکشه؟ یا صرفاً قراره دنیا رو توسعه بده، اونم با کمک Js؟»

جاوااسکریپت زبانیه که از وقتی خیلی بچه بودم، زبان محبوب وب کار ها بود (شاید از اینجا فهمیده باشید که خیلی سنی ندارم!). ارتباط خیلی خوب با DOM که اجازه بده استایل ها و کدهای HTML رو تغییر بدی، در حالی که یک زبان کامل باشی و باهاش بتونی الگوریتم های زیادی رو توسعه بدی، بهترین چیز واسه یه برنامه نویس وب بود.(و هست!) اما Webassembly چیه؟

WebAssembly (Wasm)

وباسمبلی همونطور که از اسمش مشخصه، یک زبان اجرایی باینریه که قابل درک توسط مرورگر هاست. یعنی میتونی کد هایی با زبان های نظیر C/C++, Rust, Go بنویسی و مرورگر اون رو اجرا میکنه. اما نکته مسئله کجاست؟ نکته اینجاست که این زبانها اصطلاحا به زبان ماشین (native) نزدیکترن، در نتیجه سریعتر ( و در بعضی موارد خیلی سریعتر!) از Js لود و اجرا میشن.

دقیقا آخرین جمله پاراگراف قبل، ما رو به اینجا میرسونه که پس Js یه مشکلاتی داره، و ما هیچوقت با مشکلات کنار نمیایم. به طور کلی Js:

  • کندتره وقتی نیاز به محاسبات سنگین داری (مثلاً بازی ۳D، پردازش ویدیو، کار با مدلهای AI).

  • همیشه باید توسط مفسر (interpreter) مرورگر تفسیر بشه، پس دچار overhead میشیم!

  • البته که از ذات هم زبان اجرای اینجور چیز ها نیست و بیشتر برای ارتباط با DOM مناسبه، تا پردازش های سنگین

اینجا Wasm وارد میشه تا زندگی ما رو آسون تر کنه. این زبان (یا شاید تکنولوژی) در اجرای برنامههای پر مصرف مثل رندرهای سه بعدی و AI، تا ده برابر سریعتره.

اما آیا Js از میان میره؟ مثل همه پایان های خوش باید بگم نه!

  • اولا که Wasm امکان ارتباط مستقیم با DOM رو نداره و این یعنی نمیتونه به html,css دست بزنه، پس برای بازی با رابط کاربری همچنان Js نیازه.

  • دوما اکثر سایت های امروزی هم نیاز به پروسس های سنگین ندارن، به همین خاطر نیازی نیست سختی نوشتن با زبان هایی مثل C رو به جون خرید، میشه به راحتی با Js نوشته بشن.

  • Js جامعه بزرگتر و قوی ای داره که اجازه نمیدن به این راحتی از میدون خارج شه. (

    React, Vue, Next.js)

تاریخچه کوتاهی از Wasm

وب اسمبلی ایده جدیدی نیست و متعلق به حوالی 2015 هست. در سال 2017 هر 4 مرورگر اصلی (Chrome, Firefox, Safari, Edge) رسما ساپورتش کردن. با اینکه این تکنولوژی متعلق به 8 سال پیشه (از زمان توسعه اصلی) اما الان داره دوباره بولد میشه. به دلایلی مثل اینکه فریمورک های Wasm تازه دارن به مرحله خوبی میرسن. از طرفی حوزه های داغ امروزی مثل AI و بلاکچین باعث شدن احساس نیاز به این تکنولوژی بیشتر شه.

آینده چی میشه؟

امکان همکاری این دو تکنولوژی خیلی بالاست (که البته همین الان هم وجود داره). هنوز هم (و احتمالا خیلی بالا در آینده هم) امکان داشتن یک رابط کاربری خوب بدون Js وجود نداره. از طرفی با Js تنها نمیشه پروسه های سنگین رو اجرایی کرد. به همین خاطر همکاری Js و Wasm محتمله.

در صورتی که Wasm پیشرفت کنه و امکان دسترسی مستقیم به DOM داشته باشه، به نحوی که تمام مسائل مربوط به Ui رو هندل کنه، امکان کمرنگ شدن Js وجود داره. اما فعلا که Js جایگاه خودشو داره.

  • در این مقاله سعی کردم به طور خلاصه فقط مختصری از این تکنولوژی رو توضیح بدم. هدف یک مقاله فنی نبوده و بیشتر به جهت آشنایی نوشته شده. در صورتی که به زمینه کاریتون میخوره و علاقهمند هستید، میتونید این مقالات رو بررسی کنید :

  • The Promise and Pitfalls of WebAssembly: Perspectives from the Industry

  • WebAssembly vs Js>



جاوا اسکریپتwebassemblyبرنامه نویسیhtml
۱
۰
پویا پورارشد
پویا پورارشد
علاقه‌مند به کامپیوتر، توسعه و برنامه‌نویسی
شاید از این پست‌ها خوشتان بیاید