نوشتن اداین برای Node با ++c


#1

از دوستان کسی تجربه نوشتن اداین برای Node با ++c داشته؟
برای بعضی کاربردهای خاص محاسباتی روش جالبیه


#2

من تجربشو ندارم اما نباید خیلی کار سختی باشه بخصوص با داکیومنت خوبی که وجود داره.

https://nodejs.org/api/addons.html


#3

هالا چرا Node برای کار های محاسباتی ؟


#4

متشکرم که راهنمایی کردین این ها رو من دیده بودم تقریبا ولی کلا تجربه داشتن یه چیز دیکس ، مثلا اینکه چه حجم دیتایی رو باهاش کارکرده باشی ، یا چی باهاش پیاده سازی کنی .


#5

نه خود Node که نه سرعتش برای کارهای محاسباتی نسبت به ++c خیلی کمتره ، داستان نوشتن بک اند با c++ هست که میشه توش مولتی ترد کارکرد ، بهینه کد نوشت و …


#6

این فقط نظر من هست اما راه های خیلی بهتری هم هست. Cpp هم به صورت پیشفرت امکاناتی رو برای thread safety فراهم نمی کنه


#7

اگر منظور تجربه cpp هست میتونم اگر سوالی دارید راهنمایی کنم اگر خودتون بیشتر از من cpp کار نکرده باشید، اما کلا همونطور که سمیر اشاره کرد cpp نمیتونه گزینه خوبی باشه و ضعف های زیادی داره، اگر بیشتر در مورد نوع کار توضیح بدین شاید پاسخ ها دقیقتر باشه


#8

بله خوب cpp عملا هیچ چیز آماده و روتین برای اینکار نداره و باید همه چیز نوشته بشه ،چند فریم ورک هست برای کار وی با cpp مثل wt , qt و میشه دستی سوکت پرورگرمینگ کرد و پروتکل http رو پیاده کرد
فرض کنین قراره با یک بانک اطلاعاتی با روزی تقریبا ۴-۵ میلیون تراکنش ، قراره یکسری فیچر های رو از بین اینها مثلا با decision tree انتخاب کنین .
خوشحال میشم از تجربه شما استفاده کنم


#9

تقریبا از هرزبان کامپایل شونده استفاده کنی برای این منظور به راحتی جواب میده و نیازی به کد کردن در سطح c نیست
Scala Go Clojure Java Rust Erlang همه به راحتی ارتقا پذیر هستند مهم‌تراز زبان شیوه architecture کل سیستم هستش به عقیده من


#10

نود جی اس برای اپلیکیشن مالی و تراکنش حجیم؟؟ من جای شما بودم تجدید نظر میکردم …


#11

متشکرم نظر دادین
نه هدف من Node نیست بیشتر استفاده از Cpp هست که در بک اند نوشته بشه و استفاده بشه البته با WebAssembly می شه cpp رو استفاده کرد


#12

درسته … اما تعداد ریکوئست هاتون چطور؟؟ ریکوئست بالا برای نود که جلوی اون اسکریپت cpp یا هر زبانی قرار داره . .مشکل ایجاد خواهد کرد … به نوعی ریکوئست های اضافی تون … وقتی میخاد وارد سایر ترد ها بشه … بخاطر الگوی non-blocking … در کمال تعجب … block خواهد شد … چون نود روی ۱ ترد میتونه فعالیت کنه …


#13

یه مشکل دیگه برای نود . طراحی بد event-loopاش هست … کافیه یه ایونت یا تسک … fail بشه … سیستم تون استاپ خواهد داد …

اگه بیزینس تون حساسه … از یه چیزی استفاده کنید ک قابل “پیش بینی” و “کنترل” هست …


#14

من کلا از Node خوشم نمیاد. ولی منظور از single thread بودنش این نیست که واقعا همه چی تو یه ترد اجرا می شه. کد شما روی یک ترد پردازش می شه و همه عملیاتی که به صورت async هستند روی ترد پول های مجزا توسط خود Node اجرا می شن و این واقعیت از دید کاربر پنهان می شه. اگر تر ترد اصلی خودتون عمدا بلاک کنید. همه چی متوقف می شه اما این در مورد وب سرور و اینها درست نیست. اونها تا زمانی که تو ترد پولهای نود منابع باشه بلاک نمی کنن. برای event-loop و خطا هم باید بگم که راه کار داره که جلوی این مشکل گرفته بشه.

در کل بنظر من Node یه ابزار هست که مورد استفاده خودش رو داره و مطمئا همون جور که شما فرمودید این use case جرء اونها نیست.


#15

می تونین بیشتر در مورد کاری که می خواین انجام بدبد توضیح بدید ؟


#16

دقیقا همینطوره . در واقع روی ترد اصلی پردازش صورت میگیره .

بله اون اون پول ها مشکل کانکارنسی رو بشدت حل میکنن … پایتون هم با این الگو اومد asyncio رو اضافه کرد و هم چند فریم ورک به این صورت براش بوجود اومده … که کانکارنسی خیلی خوبی داره … و روی همون سینگل ترد … بصورت اسینک . .ریکوئست های خیلی زیادی هندل میکنه …


#17

برای خطاهای event-loop …
من یه مدت زیادی راجبشون تحقیق میکردم((البته هیچوقت به سرم نزده از نود استفاده کنم یا بصورت حرفه ای کار کنم باهاش برای پروداکت هام :smile: ))
ولی ابزار براش خیلی کمه … برای جلوگیریش … فقط یکی دو تا کمپانی بزرگ میشناسم ک دارن استفادش میکنن رو بیزینسشون … یکی علی بابا … ک تو مصاحبه شون گفته بودن … ما یک سری قسمت هارو از نو نوشتیم … مخزن مجزا داریم برای پکیج هامون … و یه مانیتورینگ قوی خودمون توسعه دادیم … یکیم پی پال … ک تو یه قسمتش (فک کنم بعنوان فرانت) استفادش میکنه …


#18

با سلام
متشکرم بابت توجهتون

ببینین یک سییتم نوشته شده که با Asp.Net و#C هست ، ولی با توجه به حجم داده زیادی که داره برای پردازش و یکسری گزارشات قراره که بازنویسی بشه الان دنبال یک روش برای هندل کردن این مشکل هستیم ، ترجیح استفاده از Cpp برای بک اند هست ولی پیشنهاد هایی دیگه مثل python و django هم قابل بررسی .
حجم داده ورودی زیاد هست


#19

کمپانی های زیادی ازش استفاده می کنن. اما عموا ازش درست استفاده می کنن. یعنی تو یه قسمتی که Node برای اونکار ساخته شده ازستفاده می کنند و بس. کتابخونه براش خیلی خیلی زیاد هست که خود این موضوع تبدیل شده به یه نکنه منفی براش. کیفیت عمومی بسته ها پایین هست و برای یه کار ساده ۱۰ جور بسته هست که بین اون ها کاربر سر در گم می شه.

در نهایت من از Node خوشم نمیاد ولی فکر می کنم مورد استفاده خودش رو داره.


#20

حجم داده ها تون چقدر هست ؟