چرا JavaScript زبان برنامهنویسی آینده است؟
۲۲ مهر ۱۳۹۹
درواقع بیشتر افراد توسعه وب را با زبانهای نشانهگذاری HTML و CSS شروع میکنند و JavaScript یکی از اولین زبانهای برنامهنویسی است که یاد میگیرند زیرا این زبان بهخوبی با HTML و CSS ترکیب شده و توانایی شما را برای کار با این زبانها افزایش میدهد. شما زبانهای برنامهنویسی مختلفی از جمله Java، Swift، C++، Dart را پیش روی خود خواهید داشت و میتوانید از آنها برای توسعه برنامههایتان استفاده کنید اما هیچکدام به اندازه زبان JavaScript منعطف نیستند، البته شاید این مورد برای افراد مبتدی جالب بهنظر نرسد زیرا قابلیتهایی در اختیار دارند که بیش از قابلیتهای مورد نیازشان برای انجام یک کار ساده است و باعث سردرگمی آنها میشود.
امروزه زبان JavaScript به دلیل عملکرد و فراگیر بودنش یکی از قدرتمندترین زبانهای کره زمین است. حتی بعضی افراد معتقدند که این زبان میتواند در زمینه یادگیری ماشین و تجزیه و تحلیل دادهها وارد میدان شود و به خوبی با زبان پایتون رقابت کند. یک مثال بارز را میتوان Tensorflow.js دانست.
اما این موارد در مدتها قبل صادق نبودند زیرا این زبان را در عملکرد ضعیف میدانستند و بسیاری از افراد از عملکردهای واقعی آن غافل بودند، این زبان در 10 سال گذشته توانسته که نظر توسعهدهندگان را تغییر دهد زیرا از همیشه عملکرد قویتری نشان داده و برای ماندگاری بلندمدت تلاش میکند.
V8، موتوری که به JavaScript قدرت میبخشد
درواقع V8 را میتوان یک موتور مفسر (interpreter) کدهای JavaScript دانست. یک موتور JavaScript میتواند به عنوان یک مفسر استاندارد یا کامپایلر JIT (Just-In-Time) که کدهای JavaScript را به bytecode کامپایل میکند، پیادهسازی شود.
حال V8 یک موتور JIT برای JavaScript و WebAssembly است که به صورت متنباز با زبان C++
توسط Google توسعه داده شده و از آن در Chrome، Node.js و موارد اینچنینی استفاده میشود. V8 میتواند کدهای JavaScript را بهینه و به کدهای ماشین برای پردازنده تبدیل کند یا به صورت مستقل یا embed شده در برنامههای C++
، اجرا و استفاده شود.
برخی از وظایف V8 عبارتند از:
- Garbage Collection
- کامپایل کدهای JavaScript به کدهای ماشین
- Inline caching
- فشردهسازی Pointer
- بهینهسازی
درحقیقت فشردهسازی Pointer یک تکنیک بسیار جدید است که باعث بهینهسازی حافظه میشود درحالیکه هیچ تاثیری بر روی عملکرد برنامه ندارد، اگر یک گیک هستید میتوانید برای اطلاعات بیشتر به وبلاگ رسمی V8 مراجعه کرده و با قابلیتهای دیگر V8 آشنا شوید.
اکوسیستم و جامعه کاربری بالغ
زبان JavaScript یکی از بالغترین اکوسیستمهایی را که یک زبان برنامهنویسی میتواند داشته باشد، در اختیار دارد. جامعه کاربری آن بسیار گسترده و موانع ورود به آن بسیار کم است.
شما میتوانید یک مرورگر را که در ۱۰۰% کامپیوترهای امروزی موجود است، باز کرده و سپس وارد بخش Console شوید، حال یک موتور JavaScript در اختیار دارید که منتظر اجرای کدهای شما است. این سادگی هرگز با پیچیدگیهای موجود در سایر زبانهای برنامهنویسی قابل مقایسه نیست.
اگر جامعه کاربری گسترده نیاز شما را برطرف نمیکند، باید بگویم که سیستمهای مدیریت پکیجی مانند npm و yarn را در زبان JavaScript در اختیار خواهید داشت. همه چیز از ایجاد stringهای تصادفی گرفته تا مدیریت streamها و بافرها در JavaScript را میتوانید در سیستم مدیریت پکیج npm پیدا کنید. یک جمله بسیار مشهور در میان توسعهدهندگان JavaScript وجود دارد:
هر چیزی که میتوانید با JavaScript پیادهسازی کنید، از قبل با JavaScript پیادهسازی شده است.
خنده دار است اما باور کنید که به همین شکل است.
اگر یک مبتدی هستید، احتمال اینکه با مشکلی روبرو شوید که هیچکس قبلا با آن روبرو نشده باشد، بسیار کم است زیرا قبلا تمام سوالها در رابطه با اشتباههای احتمالی که ممکن است در کدهای JavaScript رخ دهد در سایتهایی مانند Stack Overflow پرسیده و بایگانی شدهاند.
فریمورکها و کتابخانههایی مانند React، Angular و Vue، راه را برای ساخت برنامههای آینده هموار میکنند. این اجازه میدهد تا توسعهدهندگان بدون نگرانی در رابطه با عملکرد کدها، برنامههای با کیفیتی را توسعه دهند و فقط به دنبال پیادهسازی ایدههایشان باشند.
فراگیری
شما میتوانید از JavaScript در:
- فرانتاند (مرورگرها)
- بکاند (Node، Deno)
- Android و iOS (React Native، NativeScript و ..)
- دسکتاپ (Electron)
- هیبریدی (Ionic)
استفاده کنید، اما چگونه اینها امکانپذیر شده است؟ موتورهای JavaScript مانند V8 توسط زبانهای C
و C++
توسعه داده شدهاند و به این صورت میتوانیم از آنها نیز در سیستمهای embedded استفاده کنیم. برای سیستمعاملهای دیگر مانند Android و iOS بدلیل اینکه همیشه مرورگرها وجود دارند، میتوانیم کدهای JavaScript یا حتی برنامههای Native که توسط React Native ساخته میشوند را توسط موتورهای JavaScript اجرا کنیم.
ارتقا و ایجاد ویژگیهای جدید
استانداردهای JavaScript توسط جامعهای به نام ECMA-262 TC39 رهبری میشود. هر ساله استانداردهای جدیدی از ECMAScript منتشر میشود برای مثال میتوانید به ویژگیهای جدید ECMAScript2020 مراجعه کنید. حتی شما به عنوان یک توسعهدهنده میتوانید درخواست کنید که ویژگی جدیدی به این زبان اضافه شود. مثلا برخی از ویژگیهایی که ممکن است در آینده زبان JavaScript به آنها دسترسی داشته باشیم را میتوانید در تصویر زیر مشاهده کنید:
سرعت و مقیاسپذیری
درست است که سرعت هیچکدام از زبانهای مفسری به پای زبانهای C/C++
یا Rust نمیرسد اما JavaScript به اندازه کافی سریع است زیرا اجرای کدهای شما توسط موتور V8، مانیتور و بهینه میشود.
به خصوص زمانی که این زبان را با سایر رقبای خود مانند Python مقایسه کنید، متوجه سرعت بالای این زبان خواهید شد، همچنین این عملکرد و استفاده بهینه از حافظه با پیشرفتهای V8 بیشتر هم خواهد شد.
JavaScript یا اگر بخواهیم دقیقتر بگوییم Node.js با استفاده از TypeScript بسیار مقیاسپذیر است. بسیاری از افراد، معماری اجرای تک نخی (single thread) در Node.js را مورد انتقاد قرار میدهند اما واقعیت این است که اهمیت زیادی ندارد.
البته نحوه افزایش مقیاس برنامههای Node با دیگر برنامههای چند نخی (multi thread) یکسان نیست. Node در لغت به معنای یک گره در یک فرایند درختی است و میتوانید با اجرای چندین instance از برنامه فعلی و مدیریت cluster، مقیاس یک برنامه Node.js را افزایش دهید. JavaScript با استفاده از مدل برنامهنویسی asynchronous به threadها برای افزایش مقیاس خود احتیاجی ندارد و فرایندهای Node.js بهگونهای طراحی شدهاند تا از تمام قدرت پردازنده استفاده کنند.
منبع: https://www.freecodecamp.org/news/future-of-javascript