مقایسه Scala و Node.Js برای نوشتن بک اند موبایل

0 رأی
میانگین بازدید روزانه 0.3270 بازدید

برای نوشتن بک اند موبایل که قرار هستش به صورت همزمان به کاربرهای زیادی پاسخ بدهد کدامیک از موارد رو پیشنهاد میدهید ؟

سوال 2 سال قبل در تالار برنامه نویسی توسط crusader (82 امتیاز)
ویرایش 2 سال قبل توسط Saeed Zarinfam

1 جواب

0 رأی
 
بهترین جواب

سوالتون در کل اشتباه چون اسکالا یک زبان برنامه نویسی ولی node.js یک ابزار یا فریم ورک یا محیط زمان اجرا برای جاوااسکریپت.

ولی اگر بخوام سوالتون رو اصلاح کنم می تونیم جاوااسکریپت و node.js رو با اسکالا و یکی از ابزار هاش و محیط های زمان اجراش مثل akka مقایسه کرد. این مقایسه دو قسمت داره یکی مقایسه جاوااسکریپت و اسکالا و دیگری مقایسه akka و node.js، البته اینم بگم که من خودم توسعه دهنده بر روی jvm هستم و تجربه زیادی با جاوااسکریپت و node.js ندارم.

در مورد اول یعنی مقایسه جاوااسکریپت و اسکالا باید بگم که اسکالا یک زبان type safe و استاتیک که باعث میشه خطاهای زمان اجرا کاهش پیدا کنه و دیباگ برنامه راحتتر باشه ولی جاوااسکریپت یک زبان داینامیک که از یک طرف کدنویسی باهاش راحتتره ولی از طرف دیگه امکان وجود خطا و در پی اون پیدا کردن اون بیشتر و سختتره. زمان یادگیری اسکالا خیلی بیشتر از زمان یادگیری جاوااسکریپت. زبان برنامه نویسی اسکالا از مفاهیم functional programming پشتیبانی کامل می کنه ولی جاوااسکریپت پشتیبانی کامل نمی کنه. توسعه دهندگان جاوااسکریپت بسیار بیشتر از توسعه دهندگان اسکالا هستند. طراحی زبان برنامه نویسی اسکالا و API های آن از ایتدا برای برنامه نویسی backend بوده ولی جاوااسکریپت برای برنامه نویسی وب طراحی شده و بعدا با استفاده node.js امکان استفاده از آن در سمت backend فراهم شده.

اما درباره مقایسه akka و node.js باید بگم که از نظر performance چون akka بروری jvm اجرا میشه performance بهتری نسبت به node.js داره. هم akka و هم node.js از مدل event-driven و non-blocking پشتیبانی می کنند و علاوه بر این akka از actor model هم پشتیبانی می کند در حالی که node.js پشتیبانی نمی کند. بصورت پیش فرض node.js یک event loop دارد و single-threaded است ولی akka می تواند چندین thread pool داشته باشد. akka و سایر فریم ورک های بر روی jvm قابلیت برنامه نویسی با سایر زبان های برنامه نویسی را دارند برای مثال هم با جاوا و هم با اسکالا می شود بر روی akka برنامه نویسی کرد ولی فقط با جاوااسکریپت می توان برای node.js برنامه نویسی کرد.

شاید توی مقایسه چیزهایی از قلم افتاده باشم یا اینکه من اطلاع در موردش نداشته باشم ولی در کل این مقایسه ها نظر های شخصی از تجربه های محدود هر فرد و شما باید با مطالعه آنها در نهایت با توجه شرایط پروژه خودتون بهترین تصمیم رو بگیرید که با شرایط پروژه شما سازگاری داشته باشه.

جواب 2 سال قبل توسط Saeed Zarinfam (1,435 امتیاز)
ویرایش 2 سال قبل توسط Saeed Zarinfam
به صورت پیش فرض وقتی در مورد node صحبت می‌شه نباید انتظار داشت که یک سرور همه‌ی درخواست‌های سیستم رو جواب گو باشه(برای درخواست‌های زیاد)، نکته‌ی دیگه که باید اصلاح کنم اصطلاح event loop است نه thread loop. و اینکه nodejs محیط زمان اجراست و نه فریم ورک، به عنوان فریم ورک می‌شه expressjs رو روی node مثال زد. در مورد خطا ها توی جاوااسکریپت و node موافقم که سخته ولی اگر باهاش درست زده بشه خیلی ساده می‌شه دیباگش کرد. برای جلوگیری از سخت بودن دیباگ هم promise bluebird رو پیشنهاد می‌کنم که از callback hell جلوگبری می‌کنه و ساختار کد رو flat می‌کنه. این رو هم باید در نظر گرفت که با promise ها باید درست کد زد چون اگر بد کد زده بشه ممکنه خطا‌ها propagate نشن و آدم نفهمه کجا چه خطایی رخ داده
بله nodejs یک ابزار و محیط اجرا برای همین با akka مقایسش کردم چون akka هم فریمورک نیست.
در مورد event loop هم منظور من thread pool بود که اشتباه تایپی بود که درستش کردم و اینکه قابلیت thread pool به scaleabilty سیستم خیلی کمک میکنه که node نداره.
در نهایت سپاس از نکات خوبی که اشاره کردین.

سوال های مشابه

+1 رأی
0 جواب میانگین بازدید روزانه 0.1250 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.1186 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.24463 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 1.272,684 بازدید
+1 رأی
0 جواب میانگین بازدید روزانه 0.0662 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.35213 بازدید
+1 رأی
0 جواب میانگین بازدید روزانه 0.1398 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.12126 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.0554 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.0776 بازدید
کانال تلگرام جواب یاب
...