Front-End & Back-End Developer https://www.linkedin.com/in/soheila-tarighi-4bb56a172/
تفاوت نود جی اس و جاوا اسکریپت
- در این مقاله سعی دارم که به تفاوت نودجی اس و جاوااسکریپت بپردازم. شاید بسیاری بگویند نودجی اس همان جاوااسکریپت است که قابلیت اجرا در سمت سرور را هم دارد. اما این تمام ماجرا نیست !
جاوااسکریپت یک زبان برنامه نویسی است و تمام ویژگی هایی که یک زبان باید داشته باشد را دارا است. در حالی که نودجی اس (NodeJS) یک محیط برای اجرای کدهای جاوااسکریپت است که دارای مفسر هم می باشد. ذکر این نکته مهم است که نود جی اس ، انجین v8 گوگل را درون خود دارد که مجموعه ای از کدهای جاوااسکریپت و c++ است .
جاوااسکریپت به عنوان یک زبان در هر مرورگری و هر انجینی قابلیت اجرا دارد . پکیج های مختلفی برای جاوااسکریپت نوشته شده است مانند jQuery . نودجی اس هم پکیج هایی را دارد که با سیستم عامل در ارتباط هستند . مانند crypto یا os . به کمک نود جی اس میتوان بسیاری از دسترسی هایی که به کمک خط فرمان های سیستم عامل را داریم انجام دهیم .
نود جی اس ( single-thread یا multi-thread ؟)
نود جی اس به صورت معموا در یک ترد اجرا می شود . برای مثال کدهای جاوااسکریپت در اپلیکیشن سمت فرانت یا بک اند در یک ترد اجرا میشوند . event-loop هم در همان ترد اجرا می شود . اما پکیج هایی وجود دارند که در چندین ترد اجرا میشوند . اگر تکه کد زیر را در نودجی اس اجرا کنیم مشاهده میکنیم که زمان اجرای 4 تابع اول نزدیک به هم است .
اگر تابع را 5 بار را پشت سر هم صدا کنیم زمان اجرای تابع آخر اختلاف فاحشی با زمان اجرا توابع قبلی دارد. علت این است که نودجی اس درون خود از یک کتابخانه به نام libuvاستفاده می کند . این کتابخانه وظایفی نظیر اجرای برنامه های همروند (concurrent) ، غیر همزمان (asynchron) ، مدیریت تسک های مرتبط با سیستم عامل و ... را دارد.
در هنگام اجرای کد بالا، کتابخانه مذکور یک استخر نخ (thread pool) را می سازد . این استخرنخ بر حسب این که بر روی چه سیستم عاملی پیاده شده است ، به صورت پیشفرض به تعداد سی پی یوهای سیستم است. ( اگر دقیق تر بخواهم بگویم اگر پردازنده شما از تکنولوژی hyper-threading استفاده می کند و dual-core است ، به تعداد ۲ برابر هسته های پردازنده شما است. برای من ۲ هسته و در هسته ۲ نخ یا همان thread وجود دارد، پس ۴ پردازش همزمان خواهم داشت) .
نتیجه گیری :
نود جی اس یک محیط مانند مرورگر است که کدهای جاوا اسکریپت میتوانند در آن اجرا شوند با این تفاوت که توانایی بالایی در دسترسی به منابع سیستم عامل را دارد و از c++هم پشتیبانی می کند .
اما جاوااسکریپت یک زبان است که می تواند هم در مرورگر و هم در محیطی مانند نودجی اس اجرا شود. جاوااسکریپت به تنهایی تک نخی (single-thead)است اما می توان کدهایی نوشت (که با استفاده از کتابخانه های کمکی ) به صورت چند نخی هم اجرا شوند.
مطلبی دیگر از این انتشارات
آموزش ساخت ربات فرمان صوتی بر پایه هوش مصنوعی با Nodejs
مطلبی دیگر از این انتشارات
برنامه نویسی با nodejs/جلسه هشتم/ Node.js Events
مطلبی دیگر از این انتشارات
دستورات مختلف در node.js