جاوا اسکریپت بی‌حد و مرز
آینده توسعه برنامه‌های کاربردی در دستان جاوااسکریپت است
ماهیت فناوری به‌گونه‎ای است که نمی‎توان آینده آن را به طور دقیق پیش‌بینی کرد و غافلگيری‎های زیادی به همراه دارد. چیزهایی که هرگز قرار نبود برای معروف شدن طراحی شوند ناگهان معروف شدند و در این میان هیچ‌کدام غافلگيركننده‎تر از جاوا اسکریپت نبود که اخیراً در صدر زبان‌های شی‌ء‎گرا قرار گرفته است.

این مطلب یکی از مقالات پرونده ویژه«جاوااسکریپت آینده است» شماره 198 ماهنامه شبکه است. علاقه‌مندان می‌توانند کل این پرونده ویژه را از روی سایت شبکه دانلود کنند.


سرآغاز معروفیت جاوا اسکریپت 

جاوا اسکریپت اولین بار در ماه می‎ 1995 توسط نت‌اسکیپ  به‌عنوان یک زبان اسکریپت‌نویسی تک‌رشته‎ای معرفی شد تا کمک حال مرورگر آن‌ها باشد. معروفیت این زبان اسکریپت‌نویسی طی 5 سال اخیر به‌واسطه چند عامل توسعه کلیدی صورت گرفته است. نمودار شکل 1 داده‎های جمع‌آوری شده توسط ردمونک را نشان می‎دهد که در آن جاوا اسکریپت به نسبت سایر زبان‎های مطرح و برجسته از محبوبیت بیشتری برخوردار بوده است. ابزار بهتر، پشتیبانی و پیشرفت بیشتر در این زبان سبب شد تا به‌آهستگی موقعیت خود را به‌عنوان یک بازیگر شاخص در صنعت توسعه نرم‌افزار مستحکم کند. برای نمونه در نمودار شکل 2 که توسط Githut ایجاد شده است، وضعیت حضور زبان‎های برنامه‎نویسی در پروژه‎های منبع باز را نشان می‎دهد.


شکل 1

وقتی مرورگر و سرور اطلاعات یکسانی را ذخيره می‎کنند، ناخودآگاه مشکل دوباره‌نویسی پیش می‎آید که اغلب ناشی از استفاده از زبان‎های مختلف در سیستم‎های توزیع شده است. تنها راه حل این مشکل این است که در هر دو سمت از کدهای مشترک استفاده کنید. اما چنین امکانی وجود ندارد، زیرا ما آن‌ها را با زبان‎های مختلف نوشته‎ایم و جاوا اسکریپت تنها زبان قابل فهم توسط مرورگر است.

دلایل استفاده از جاوا اسکریپت 

دلیل نخست: 

برای معماری‎های توزیع‌پذیر مناسب‎تر است 
یکی از بزرگ‌ترین مشکلات در زمان نوشتن یک نرم‌افزار، ضرورت نیاز به دوباره‌نویسی آن است. به‌محض اينكه دوباره‌نویسی اتفاق می‎افتد، بلافاصله هزینه‎های توسعه نیز افزایش پیدا می‎کند، زیرا هر تغییری که در نسخه اصلی صورت می‎گیرد باید دو بار انجام شود. متأسفانه با فراگير شدن معمار‎ی‎های توزیع‌پذیر (برای مثال، اپلیکیشن‎های یک‌صفحه‎ای و میکروسرویس‎ها) این دوباره‌نویسی‎ها شایع‎تر شده است و همین باعث پیچیده‎تر شدن و سخت شدن نگهداری اپلیکیشن‎ها می‎شود. برای مثال، اجازه دهید نگاهی به یک اپلیکیشن تک‌صفحه‎ای داشته باشیم. در اینجا شما یک رابطه کلاینت سرور دارید. در سمت کلاینت (همان مرورگر) شما نیاز به ذخیره فهرستی از سیاست‌گذاری‎های امنیتی در برابر برخی از موارد پیش رو دارید. این سیاست‌گذاری‎های امنیتی بسیار حیاتی هستند. آنها ممکن است شامل مواردی باشند که هم قابل پاک شدن و هم به‎روزرسانی هستند. آن‌ها به این دلیل مهم هستند که شما نمی‎خواهید کارهایی که انجام‌ناپذیر هستند توسط کاربران قابل مشاهده باشد. مشکل اینجا است که شما باید این اطلاعات را روی سرور نیز ذخیره كنيد. زیرا اگر شما این سیاست‌گذاری‎ها را روی سرور نیز اعمال نکرده باشید، هر فردی که کمی‎ با دانش فنی آشنا باشد می‎تواند درخواست‎های جعلی به آن ارسال کند. بنابراین، شما در وضعیتی قرار دارید که یک اپلیکیشن مرورگر نوشته شده با جاوا اسکریپت دارید که سمت انتهایی (سرور) آن با چیزی شبیه جاوا نوشته شده است. در شکل 3 نموداری را مشاهده می‎کنید که هم سرور (در بالا) و هم کلاینت (در پایین) اطلاعاتی یکسان را نگهداری می‎کنند. از آنجا که آن‌ها با دو زبان مختلف نوشته شده‎اند، این اطلاعات باید دوباره‌نویسی شوند. به سیاست‌گذاری‎های امنیتی قرمز رنگ در هر دو ناحیه توجه کنید.

 شکل 2

مطلب پیشنهادی

یادگیری جاوااسکریپت برای توسعه‌دهندگان وب از نان شب واجب‌تر است!

وقتی مرورگر و سرور اطلاعات یکسانی را ذخيره می‎کنند، ناخودآگاه مشکل دوباره‌نویسی پیش می‎آید که اغلب ناشی از استفاده از زبان‎های مختلف در سیستم‎های توزیع شده است. تنها راه حل این مشکل این است که در هر دو سمت از کدهای مشترک استفاده کنید. اما چنین امکانی وجود ندارد، زیرا ما آن‌ها را با زبان‎های مختلف نوشته‎ایم و جاوا اسکریپت تنها زبان قابل فهم توسط مرورگر است.


شکل 3

راه نجات: 

جاوا اسکریپت سمت سرور 
اکوسیستم جاوا اسکریپت به‌سرعت در حال رشد است و این سرعت با ظهور یک ابزار میزبانی سمت سرور به‌نام Node.js که تحت موتور Google Chrome v8 اجرا می‎شود، شتاب بیشتری گرفته است. نود به جاوا اسکریپت اجازه می‎دهد تا روی یک وب سرور اجرا شود. چنین قابلیتی نه‌تنها گزینه‎های طراحی و معماری نرم‌افزار را افزایش می‎دهد، بلکه با توجه به ماهیت عملکرد این زبان مشخص شده است که بسیار گسترش‎پذیر است. خیلی از شرکت‎های بزرگ مثل نتفلیکس و وال‎مارت تصمیم گرفتند به‌جای استفاده از گزينه‎های معمول سمت سرور مثل رابی، پی‎اچ‎پی، سی شارپ، جاوا وغیره معماری‎های پایه خود را با نود انجام دهند. با در اختیار داشتن گزینه استفاده از جاوا اسکریپت در هر دو سمت معماری نرم‌افزار شما می‎توانید سیستم‎های توزیع‌پذیری را توسعه دهید که می‎توانند از ماژول‎های مشترک استفاده کنند. در شکل 4 نمودار قبلی گسترده شده است و نشان می‎دهد این سیاست‌گذاری‎ها (قرمز رنگ) حالا در یک مکان واحد تثبیت شده‎اند. استفاده از جاوا اسکریپت سمت سرور همچنین به طراحی میکروسرویس‎ها نیز کمک می‎کند، زیرا همان تکنیک یکسان را می‎توان برای ساخت میکروسرویس‎هایی که از کدهای مشترک استفاده می‎کنند به کار گرفت.


شکل 4

دلیل دوم: 

برای استفاده در سکو‎های مختلف بسیار کارآمد است 
امروزه طرح تحول دیجیتال در بین سکو‎های مختلف به یک موضوع مهم تبدیل شده است. حالا دیگر برنامه‌نویس باید بتواند یک بار کدنویسی و اپلیکیشن خود را در هر محیطی مستقر کند. جاوا اسکریپت به‌آرامی‎ در حال سازگار شدن با خیلی از سکو‎ها است. حتی در سال 2007 جف آتوود در یک پست وبلاگی معروف اعلام کرده بود که جاوا اسکریپت درنهایت به هر اپلیکیشنی که به آن اجازه دهد وارد خواهد شد. او گفته بود: «هر اپلیکیشنی را که بتوان با جاوا اسکریپت نوشت، سرانجام با جاوا اسکریپت نوشته خواهد شد.»
جاوا اسکریپت در حال تبدیل شدن به یک ابزار کامل است و از سه ناحیه عمده مورد علاقه توسعه‌دهندگان یعنی وب، دسکتاپ و موبایل پشتیبانی می‎کند. در ادامه نگاهی اجمالی به تنها چند نمونه از فریم‌ورک‎هایی که از جاوا اسکریپت به‌عنوان یک زبان چندسکویی‎ قدرت می‎گیرند خواهیم داشت. سکو موبایل (IOS و آندرويد) - React Native و NativeScript دو نمونه از فریم‌ورک‎های اصلی هستند که اجازه می‎دهند کدهای جاوا اسکریپت روی موبایل اجرا شود. React توسط فیسبوک برای سکوی موبایل استفاده می‎شد. سکوی دسکتاپ (مک و ویندوز) - NW.js و Electron به توسعه‌دهندگان اجازه می‎دهد تا مجموعه‎ای از ابزارهای مورد نیاز برای اپلیکیشن‎های وب تحت سکوی دسکتاپ را در اختیار داشته باشند.
وب (تمام مرورگرها) - Angular و Meteor مثال‎هایی از فریم‌ورک‎های اپلیکیشن تک‌صفحه‎ای هستند که از جاوا اسکریپت استفاده می‎کنند و به اپلیکیشن‎های تجاری پیچیده اجازه می‎دهد تا داخل مرورگر اجرا شوند. 

دلیل سوم: 

کاملاً گسترش‌پذیر است 
جالب اینجا است که بزرگ‌ترین نقطه ضعف جاوا اسکریپت حالا به یک قدرت چشمگير برای آن تبدیل شده است. تفاوت اصلی بین جاوا اسکریپت با اغلب زبان‎های دیگر مثل Ruby, Java و C# در تک‌رشته‎ای بودن آن است. اگر شما توسعه‌دهنده نباشید، این مسئله چندان اهمیتی برای شما ندارد. به همین دلیل ما سعی می‎کنیم تنها به توضیح مختصری درباره آن بسنده کنیم.
اغلب زبان‎ها قابلیتی دارند که به آن‌ها اجازه می‎دهد تا بیش از یک مورد از خود را اجرا کنند. آن‌ها دستورالعمل‎ها را در یک فهرست بلند از کارهایی که باید انجام شود قرار می‎دهند. سپس در فرآیند پردازشی این دستورالعمل‎ها یک به یک اجرا می‎شوند. به چنین ساختاری فرآیند چندرشته‎ای گفته می‎شود و برنامه‌نویس در هنگام کدنویسی می‎تواند از مزایای این قابلیت استفاده کند. از جمله قابلیت‎های چندرشته بودن می‎توان به نوشتن وب سرورهایی که نیاز به پردازش هم‌زمان تعداد بسیار زیادی کاربر دارند اشاره کرد.
اما چنین امکانی معایب خاص خود را هم دارد: تمام این جابه‌جایی‎ بین پردازش‎ها به‌دلیل نیاز به ورود و خروج مداوم دستورالعمل‎ها و وظایف به حافظه زمان پردازنده را هدر می‎دهد. 

جاوا اسکریپت ذاتاً یک ساختار تک‌رشته‎ای دارد. به این معنا که برنامه‌نویس امکان بهره‌مندی از قابلیت پردازش چندرشته‎ای را از دست می‎دهد و تمام کدهای جاوا اسکریپت در یک رشته اجرا می‎شوند.
از آنجا که چنین ساختاری طراحان سیستم را محدود می‎کند، آن‌ها باید کدها را به‌گونه‎ای بنویسند که فرآیند پردازش را مختل نکند. نام این راهکار معماری non-blocking است. چنین ساختاری کار را برای برنامه‌نویس مشکل‎تر می‎کند، زیرا آن‌ها باید کدهایی را بنویسند که به‌جای دستورات خطی با رویدادها سر و کار دارد. نتیجه کار این گونه خواهد شد که برنامه‌نویس به‌جای محیط‎های چندرشته‎ای که منابع در آن در یک صف پردازش قرار می‎گیرند، کدهایی را می‎نویسد که بلافاصله منابع را آزاد و از مسدود شدن رشته توسط جاوا اسکریپت جلوگیری می‎کند. 
این کار باعث افزایش قابل توجه عملکرد اپلیکیشن‎هایی که پردازش‎های سنگین را اجرا می‎کنند می‌شود و آن را برای محیط وب ایده‎آل می‎کند. این بار نیز چنین شیوه‎ای با معایبی همراه است. به همین دلیل است که جاوا اسکریپت در انجام درخواست‎هایی که نیاز به نگه داشتن پردازنده برای انجام وظایف طولانی مدت دارند خوب نیست. (برای مثال نوشتن داده‎های استریم شده طولانی روی دیسک یا پردازش گرافیک لحظه‎ای از قبیل بازی‎های آنلاین)

ماهیت تک‌رشته‎ای جاوا اسکریپت شیوه‎ای از طراحی نرم‌افزار را فراهم می‎کند که درنهایت باعث افزایش عملکرد و گسترش‌پذیری خیلی از پروژه‎های نرم‌افزاری و خدمات تحت وب خواهد شد. چنین قابلیتی جاوا اسکریپت را به یک ابزار قدرتمند برای استفاده در سازمان‎هایی که به گسترش ترافیک خود با حداقل قیمت را دارند، تبدیل کرده است

نتیجه‎گیری 

در این مقاله ما نگاهی به جاوا اسکریپت و سه قابلیت جالب توجه در آن داشتیم. همین قابلیت‎ها بودند که این زبان برنامه‌نویسی را تا این اندازه معروف و محبوب کرده است. این ویژگی‎ها را می‎توان این گونه خلاصه کرد.
جاوا اسکریپت سمت سرور: می‎توان آن را با استفاده از Node.js روی سرور اجرا کرد و امکان یکپارچه‌سازی اپلیکیشن‎ها را به‌شکل یک کد واحد فراهم ساخت. این کار پیچیده شدن اپلیکیشن‎های بزرگ را کم می‎کند. طراحی و معماری‎های پیچیده با این روش بهتر قابل انجام است، زیرا دیگر مشکل دوباره‌نویسی کدها را نخواهیم داشت.
پشتیبانی ذاتی از چند سکو: با پیشرفت این زبان حالا امکان پشتیبانی از سکو‎های IOS، آندروید و حتی محیط دسکتاپ ویندوز و مک نیز فراهم شده است و حالا برنامه‌نویسان می‎توانند محدودیت‎های سازگاری برنامه‎های خود را کمتر کنند.
گسترش‌پذیری در محیط‎های پرتراکم و سنگین: ماهیت تک‌رشته‎ای جاوا اسکریپت شیوه‎ای از طراحی نرم‌افزار را فراهم می‎کند که درنهایت باعث افزایش عملکرد و گسترش‌پذیری خیلی از پروژه‎های نرم‌افزاری و خدمات تحت وب خواهد شد. چنین قابلیتی جاوا اسکریپت را به یک ابزار قدرتمند برای استفاده در سازمان‎هایی که به گسترش ترافیک خود با حداقل قیمت را دارند، تبدیل کرده است.

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟