0 امتیاز
قبل در برنامه نویسی توسط (97 امتیاز)
ویرایش شده قبل توسط

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

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)
ویرایش شده قبل توسط
 
بهترین پاسخ

سوالتون در کل اشتباه چون اسکالا یک زبان برنامه نویسی ولی 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 برنامه نویسی کرد.

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

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

سوالات مشابه

+1 امتیاز
0 پاسخ 284 بازدید
+1 امتیاز
1 پاسخ 548 بازدید
0 امتیاز
1 پاسخ 682 بازدید
0 امتیاز
1 پاسخ 3.3هزار بازدید
0 امتیاز
1 پاسخ 34.0هزار بازدید
+1 امتیاز
0 پاسخ 413 بازدید
0 امتیاز
0 پاسخ 405 بازدید
0 امتیاز
1 پاسخ 332 بازدید
...