فکرهای درهم یک مرد

:دی

Hello "Reactive" World

جمعه, ۲۶ مهر ۱۳۹۸، ۰۴:۰۹ ب.ظ

به نام او

بخش رایانه ایش:

یه قراردادی هست که هر کی می خواد برنامه نویسی را شروع کنه اولین برنامه ای که می نویسه چاپ کردن "سلام دنیا" باشه.

چیز های جدیدی دیدم آخرا. بعد درس تکنولوژی که به نظرم خیلی مشکلات داشت(الان می فهمم که بهم شهود نداده) و البته چیزهای زیادی هم یاد داد با نسخه های مختلف سرولت های جاوا آشنا شدم. و البته java nio. خلاصه ی دومی اینه که ما در حالت عادی که روی شبکه حرف می زنیم یا فایل می خونیم (IO) به صورت Blocking عمل می کنیم یعنی برنامه(ترد) قفل می کنه تا خوندن یا نوشتن تموم شه(این برنامه ها هستن یه دکمه را میزنی گیر می کنه دیگه جواب نمی ده از اون ها). اما این توی دنیای امروز به کار نمیاد در نتیجه 
java new IO
اومد که 
non-blocking IO
اه. و کارش دقیقا همینه که ترد را قفل نکنه. و نسخه های جدید سرولت هم از این پشتیبانی می کنند. جاوا از
thread per connection
رفت به 
thread per request
(یعنی به جای این که بین من و تو یه اتصالی باشه و با هم حرف بزنیم می تونیم چند تا اتصال داشته باشیم که روی هر کدوم یه موضوع جداگانه را بحث کنیم) و بعد هم نسخه ی ۳  از servlet اومد که از Asynchronous پروسس کردن ریکوئست ها پشتیبانی می کرد(یعنی یکی یک درخواست داد مجبور نباشیم بلافاصلخ جواب بدیم. همون سی نکردن خودمون(البته الان این در ذهن دارم ممکنه واقعیت متفاوت باشه)) و در نسخه ی ۳.۱ هم از nio پشتیبانی شد.(یعنی یکی درخواست داد برو ببین توی آلبوم خونه فلان عکس هست یا نه و تو به مامانت می گی بره آلبوم را بیاره توی زمانی که مامانت داره می ره اون را بیاره مجبور نیستی وایسی می تونی کارهای دیگه کنی در واقع برای ریسوس های بیرونی معطلی دیگه نداریم) بعد نسخه ی ۴ هم که دیگه رفت سمت http2 که خودش یعنی 
a binary protocol with multiplexing & pipelining (several streams in one tcp connection) and server push(for browsers only and just for css and ...) and header compresseion
این ها این جا باشه.

از اون ور دنیای kafka و رفقا هست (دوست داشتم akka را هم بگم ولی نمی دونم چی هست اصلا) به هر صورت
دنیای این ها هم متفاوته. این ها می گم بیایید از event-driven هم عبور  کنیم و همه چیز را یه پیام ببینیم. در نتیجه بعدش می گن خب هر کاری داری یه پیامش کن بندازش تو صف یکی میاد جوابت را می ده. اونم جوابت را میاد میندازه تو یه صفه دیگه احتمالاsmiley.
البته مثل اینکه جواب را هم می ده. مثلا وقتی به کافکا درخواست می دی ریسپانس هم میده.

 

دو تا چیز به ذهنم می رسه. یکی اینکه توان محاسبه ارزشمند تر(گران تر) از توان حافظه (ذخیره سازی) است. یعنی من نباید به هیچ عنوان توان پردازشی را هدر بدم و منتظر چیز دیگری بزارم. به جاش توان حافظه را هدر می دم و پیام ها را ذخیره می کنم و بعدا می رم پردازش می کنم.

از طرف دیگه مثل زمانی که concurency داریم و نه parralel  پوروسسینگ ما نمی خوایم به یکی بیش از حد ارزش قائل شیم. بلکه به هرکی به اندازه ش خودش(priority) خب پس نباید هیچ وقت معطل کار کسی شیم که دوسش نداریم به اون اندازه.

 

یه بیانیه ای هم پیدا کردم Reactive Manifesto

 

بخش انسانیش: 

دارم فکر می کنم که ایا می شه این مفاهیم را گسترش داد به دنیای شخصیت ها؟ مثلا شخصیت یکی با نسخه ۲.۵ سرولت باشه یکی ۳(می شه این را ترجمه کرد که خودش ریاکتیوه ولی اطرافیانش نیستن) و یکی ۳.۱ و یکی هم ۴(اینم خودش داستان داره: بتونی پیش بینی کنی نیاز بقیه را و زودتر بهشون برسونی حتی توی سلام و علیک اولمون هم پروتکول های که برای حرف های جدیمون داریم رعایت کنیم(برای افزایش سرعت فشرده کنیم) با یه نفر همزمان درباره ی چندین موضوع حرف بزنیم)
بعد از اون هم بگیم که گذر زمان فشار اجتماعی میاره برای تغییر این مدل ها به نسخه های جدید تر؟


مثلا یکی با شخصیت ۲.۵ کسیه که می تونه بره یه کاری را بگیره و انجامش بده. یکی با شخصیت ۳ کسی که بره ان تا کار بگیره هر کاری که گیر یکی شد سرش صبر کنه و پیگیری کنه تا تموم شه. کسی با شخصیت ۳.۱ باید ان تا کار بگیره هر کاری هم اگه ارتباط با دیگران را خواست خودش شخصا پای طرف وای نمی ایسته تا جواب بده. همیشه گوش بزنگه کار جدیده و سریع جواب اولیه می ده به ادم(که ممکنه جوابش این باشه برو فردا بیا). کسی با شخصیت ۴ قبل اینکه بهش بگی چه کاری داری یه سری چیز جنرال بهت می ده که کمتر نیاز داشته باشی بهش درخواست بدی بعد هم زمان در چند موضوع مختلف باهات زنجیر ذهنی داره و سرعت آماده شدنش هم زیاده. سریعتر لود می شه به قول خودمون.

 

این ها را قبلا نوشته بودم و منتشر نکرده بودم بقیه اش را امروز می نویسم:

با مصطفی حرف می زدم پیرامون این موضوع. یه بحثی که شد بحث تمرکز بود. اینکه آدم ها کی می‌توانند تمرکز کنند. اگه بخواییم بریم به سمت reactive شدن تمرکز به شدت کاهش پیدا می کنه. شاید بشه ورودی افراد را کافکا گذاشت. یعنی کسی نتونه من را اینتراپت کنه و م بتونم روی موضوع‌م تمرکز کنم. خب اگه من نیاز داشتم به یکی دیگه و اوم همین کار را کرد من چی کنم؟ یعنی من دیگه نمی تونم روی موضوع قبلی فکر کنم. و اگه بخوام هم موضوع را عوض کنم تمرکز از بی میره. حتی ممکنه همه ی کار های من گیر بقیه شه و من هم که نمی تونم کسی را اینتراپت کنم و تماما هوا شم.(مثل او پروسسی که روی یه رایانه ای سال های سال منتظر سی پی یو موند و آخر هم بهش ندادن)

 

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

قوانینش براساس واقعیت های صفری که یک واحد آدم می تونه به راحتی تاییدشون کنه و نتایجشون رو ببینه

خب من از این برداشت می کنم که آدم ها کم کم سطحی نگر تر می شن. یعنی اگه تو بیای ده صفحه اثبات خدا بدی بعد ۱۰ صفحه اثبات وجود دین بعد اسلام بعد بگی حالا بیا و دولا راست شو طرف نمیاد دولا راست شه چرا چون در ضاهر بلافاصله نمی تونم نتیجه را ببینه.

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

 

حالا این ها در کنار هم چی می گن: می گن که دنیا سرعتش زیاد شده(= نسخه‌های سرولت روی شخصیت آدم ها زیاد شده) نیاز به رفتار های 

reactive

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

نهایتا جا برای تمرکز کم شده چون هنوز مدلی که بشه تمام قسمت هاش non-blocking باشه و همچنان کار کنه و قفل نشه در اجتماع به وجود نیومده(= برای همچین کاری شاید باید یه مدیریتی باشه که بتونه جوری برنامه ریزی که کارها و نیازمندیهای افراد را که زمان نیازمندی‌ها طوری باشه که کسی قفل نشه. شاید) و این باعث میشه عمقی که افراد می تونند و یا دوست دارند به فکرشون بدن کم شه. در نهایت ما سطحی نگر تر و سطحی نگر تر می شیم و اینستا و توییتر مدار تر و موجودی مثل دین می میره چون نیاز به فکر داره. نیاز به عمق داره و ...

 

یه چیز دیگه که باید اضافه کنم بحث دینامیک جوامع ه. که ادامه ی همون کامنتم زیر پست حسین‌ه که حالش نیست. در واقع باید بیشتر هم بهش فکر کنم

  • حسین مهدوی پور

نظرات  (۳)

  • حسین مهدوی پور
  • امید وارم که حسین این را بخونه و نظر بده
    :دی

     

    زیبا بود.

    الان که ریموت کار می کنیم یه کانالی تو اسلک شرکت اضافه شده که مشکلات کار ریموت مطرح میشه و اکثر مشکلا از این جنسن که چون آدما نمی تونن بلاکینگ باشن تمرکزشون از بین میره و نمی تونن هیچ کاری انجام بدن.

    ببین درباره اون جمله ای که من گفتم منظورم عمق گزاره نبود. ببین مثلن من اگه بهت بگم اون دینا وجود داره و یه غولی هست روی خورشید که وقتی آدما می میرن میرن پیش اون یا هم که بگم دسته p مساوی دسته np است. تو این رو نمی تونی به راحتی اثبات یا رد کنی مگر این که واقعن بمیری :) منظورم این ها بود. اگه حتی هزار صفحه طول بکشه اثباتش اما بازم در زمان متناهی شدنی باشه به نظرم واقعیتیه که انسان می تونه بهش تکیه کنه.

    این که بازی ها باعث میشن آدما زودانتظار بشن حس میکنم شاید خیلی درست نباشه. بستگی داره چی بازی بکنی :) اما خب من حس می کنم این که یه نفر یه گزاره ای بهش داده بشه رو قبول نکنه اتفاقن داره عمیق تر فکر می کنه و این که جامعه به راحتی دین یا هر موجودی رو قبول نکنه نشون میده عمیق تر شده. نتیجه گیری ات رو خوب نفهمیدم اما.

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

    من این دغدغه سطحی شدن رو هم دارم اما اونجا منظورم نبود.

    اوهوم آره باید بررسی کرد. تا حدیش فک می کنم برای اینه که هنوز انسان خیلی باهوش نشده. چرا یه سری یهودی داریم که آمریکایی که اکثر پناهنده ها و مردم بقیه کشورها دوست دارن برن رو ول می کنن و میرن یه جای دیگه ای رو به زور میگیرن که فکر می کنن سرزمین موعوده! این خود غیرمنطقی و احمقانه بودنیه که مذهب به آدم ها اجازه میده باشن.

    حالا بازی مثه استارتاپ هم نیس خیلی اما موافقم البته کتاب هم همونطوره:)

    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی