مشکلات concurrency در اسکالا

scala
concurrency

#21

Side effect تاثیری هست که هدف اصلی کانتکس اجاریت نیست و باید مدیریتش کرد. و هر نرم افزاری باهاش در لول های مختلف روربرو هست.


#22

در واژه side effect ما تفاوت نظر داریم


#23

فکر می کنم این بر میگرده به عبارت هایی که تو زبان های مختلف ازش استفاده می شه. و ما از عبارت یکسان اما با مفهوم متفاوتی صحبت میکنیم


#24

بله در هر صورت لذت بردم از خواندن صحبت های شما


#25

همچنین، دوست عزیزم


#26

PHP همه این مشکلات رو از نسخه ۴ حل کرده، سعی کنید از php استفاده کنید
:see_no_evil:


#27

:grin::grin:
من توماج جان یک لحظه اشتباهی اومدم تو بحث هنگ کردم ۵۰۰بار ترنسلیت گوگل گرفتم ببنیم این کلمات دوستام می گند چی هست . دیدم مروگر بسته نمی شه از حجم صحبت ها . خداییش اشتباه اومده بودم توش اصلا به من ربطی نداشت.

ولی به دور از شوخی این چنین بحث هایی بسیار خوبه


#28

کل بحث جالب بود و آموزنده.
مشکل side effect رو متوجه نشدم، اگر برنامه ای اصلا side effect نداشته باشه پس به چه دردی میخوره؟


#29

تو‌ pure fp هدف این نیست که هیچ چیزی تغییر نکنه بلکه جبر و ریاضی تغییر مشخصه و جبر آن خالصه effect
وقتی تغییر می‌خواد صورت بگیره توی boundary و با تایپ مشخص انجام میشه این طوری کنترل شده هست
Side effect اما چه در هسکل چه سکالا تغییریه که referential transparent نیست و اصلا معلوم نیست در تایپ سیستم


#30

فکر کنم من بد خونده بودم بالا رو, حالا شد :wink:


#31

من فکر می کنم اختلاف نظری که وجود داره یخاطر تعریف متفاوتی هست که جامعه ساتاتیک تایپ دوست ( اسم اختراع کردم ) مثل جامعه Haskell و Scala و … از side effect دارن نسبت به تعریفی که جامعه داینامیک تابپ دوست ( :smile:‌ ) از همین مفهوم دارن بر می گرده.

در جوامع استاتیک تایپ دوست که خیلی به اثبات ریاضی و جبر اهمیت می دند و برای اثبات درست بودن برنامه از این مفاهیم استفاده می کنن از تایپ به عنوان عنصر اصلی ریاضیاتشون استفاده می کنن. بنا بر این اگر یک تابع تاثیری خارج از تعریفی که برمبنای عنصر اصلی ( تایپ ) براش تعریف شده داشته باشه عملا side effect داره و این باگ به حساب می اد. حالا این تعریف تابع بر اساس تایپ قواعدی داره که توی جبر مربوط به اون سیستم تایپ بهش اشاره شده. effect ها هم تاثیراتی هستند که توی تایپ سیستم بهشون اشاره شده و بر اساس عنصر اصلی ریاضی این جبر (‌تیاپ) تعریفی براش وجود داره.

اما در مقابل در جوامع داینامیک تایپ دوست که جبر و ریاضی ساده تری دارند. و عنصر اصلی ریاضی تو این جوامع، ارزش هست به جای نوع داده، side effect به هر نوع تاثیری گفته می شه که گذاشته بشه و یا برداشته بشه ( تاثیر پذیری )‌ به طوری که باعث بشه یک فانکشن Deterministic نباشه. به زبان ساده تر این جوامع به فانکشن دقیفا به شکلی نگاه می کنن که تو کتاب دوم دبیرستان اومده. برای مثال f(x) = y. اگر f همیشه برای ورودی x، مقدار y رو برگردونه Deterministic هست و در غیر اینصورت non-deterministic خواهد بود. بنابراین در یک مثال واقعی وقتی یه فانکشن مقدار ورودییش یه url هست و مهتوای اون ادرس رو بر می گردونه دیگه نمیشه به این فانکشن گفت pure چون همیشه برای url مشخص مقدار مشخص بر نخواهد گردوند (‌فارسیم مورد داره :slight_smile: ) ممکن مهتوا فرق کنه یا Exception برگردونه و …
تو داینامیک تابپ سیستم ها این رو می گن ساید افکت اما باگ محسوب نمی شه و چیزی هست که بهش نیاز داریم.

فکر می کنم این دو تعریف باعث اختلاف نظر پیش اومده بودش.


#32

بله کاملا موافق هستم


#33

:smile: :smile:


#34

قبل از شما ابوریحان بیرونی هم تو یکی از کتاب هاش به این موضوع اشاره کرده و گفته نمیشه با فارسی کتاب علمی نوشت :blush:
لطفا از این بحثا همیشه بکنید واقعا استفاده کردیم ممنون از دوستان @samdvr