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 هم عبور کنیم و همه چیز را یه پیام ببینیم. در نتیجه بعدش می گن خب هر کاری داری یه پیامش کن بندازش تو صف یکی میاد جوابت را می ده. اونم جوابت را میاد میندازه تو یه صفه دیگه احتمالا.
البته مثل اینکه جواب را هم می ده. مثلا وقتی به کافکا درخواست می دی ریسپانس هم میده.
دو تا چیز به ذهنم می رسه. یکی اینکه توان محاسبه ارزشمند تر(گران تر) از توان حافظه (ذخیره سازی) است. یعنی من نباید به هیچ عنوان توان پردازشی را هدر بدم و منتظر چیز دیگری بزارم. به جاش توان حافظه را هدر می دم و پیام ها را ذخیره می کنم و بعدا می رم پردازش می کنم.
از طرف دیگه مثل زمانی که concurency داریم و نه parralel پوروسسینگ ما نمی خوایم به یکی بیش از حد ارزش قائل شیم. بلکه به هرکی به اندازه ش خودش(priority) خب پس نباید هیچ وقت معطل کار کسی شیم که دوسش نداریم به اون اندازه.
یه بیانیه ای هم پیدا کردم Reactive Manifesto.
بخش انسانیش:
دارم فکر می کنم که ایا می شه این مفاهیم را گسترش داد به دنیای شخصیت ها؟ مثلا شخصیت یکی با نسخه ۲.۵ سرولت باشه یکی ۳(می شه این را ترجمه کرد که خودش ریاکتیوه ولی اطرافیانش نیستن) و یکی ۳.۱ و یکی هم ۴(اینم خودش داستان داره: بتونی پیش بینی کنی نیاز بقیه را و زودتر بهشون برسونی حتی توی سلام و علیک اولمون هم پروتکول های که برای حرف های جدیمون داریم رعایت کنیم(برای افزایش سرعت فشرده کنیم) با یه نفر همزمان درباره ی چندین موضوع حرف بزنیم)
بعد از اون هم بگیم که گذر زمان فشار اجتماعی میاره برای تغییر این مدل ها به نسخه های جدید تر؟
مثلا یکی با شخصیت ۲.۵ کسیه که می تونه بره یه کاری را بگیره و انجامش بده. یکی با شخصیت ۳ کسی که بره ان تا کار بگیره هر کاری که گیر یکی شد سرش صبر کنه و پیگیری کنه تا تموم شه. کسی با شخصیت ۳.۱ باید ان تا کار بگیره هر کاری هم اگه ارتباط با دیگران را خواست خودش شخصا پای طرف وای نمی ایسته تا جواب بده. همیشه گوش بزنگه کار جدیده و سریع جواب اولیه می ده به ادم(که ممکنه جوابش این باشه برو فردا بیا). کسی با شخصیت ۴ قبل اینکه بهش بگی چه کاری داری یه سری چیز جنرال بهت می ده که کمتر نیاز داشته باشی بهش درخواست بدی بعد هم زمان در چند موضوع مختلف باهات زنجیر ذهنی داره و سرعت آماده شدنش هم زیاده. سریعتر لود می شه به قول خودمون.
این ها را قبلا نوشته بودم و منتشر نکرده بودم بقیه اش را امروز می نویسم:
با مصطفی حرف می زدم پیرامون این موضوع. یه بحثی که شد بحث تمرکز بود. اینکه آدم ها کی میتوانند تمرکز کنند. اگه بخواییم بریم به سمت reactive شدن تمرکز به شدت کاهش پیدا می کنه. شاید بشه ورودی افراد را کافکا گذاشت. یعنی کسی نتونه من را اینتراپت کنه و م بتونم روی موضوعم تمرکز کنم. خب اگه من نیاز داشتم به یکی دیگه و اوم همین کار را کرد من چی کنم؟ یعنی من دیگه نمی تونم روی موضوع قبلی فکر کنم. و اگه بخوام هم موضوع را عوض کنم تمرکز از بی میره. حتی ممکنه همه ی کار های من گیر بقیه شه و من هم که نمی تونم کسی را اینتراپت کنم و تماما هوا شم.(مثل او پروسسی که روی یه رایانه ای سال های سال منتظر سی پی یو موند و آخر هم بهش ندادن)
چند روز پیش حسین یه مطلبی نوشته بود درباره ی اجتماع ناباوران ته ته ش یه نتیجه داشت که من می خوام این طوری برداشت کنم: آدم ها به مرمر سطحی تر می شوند. یعنی چی؟ حسین می گفت که:
قوانینش براساس واقعیت های صفری که یک واحد آدم می تونه به راحتی تاییدشون کنه و نتایجشون رو ببینه
خب من از این برداشت می کنم که آدم ها کم کم سطحی نگر تر می شن. یعنی اگه تو بیای ده صفحه اثبات خدا بدی بعد ۱۰ صفحه اثبات وجود دین بعد اسلام بعد بگی حالا بیا و دولا راست شو طرف نمیاد دولا راست شه چرا چون در ضاهر بلافاصله نمی تونم نتیجه را ببینه.
یکی از رفقا می گفت که بازی های رایانه ای دوران کودکی این مشکل را ایجاد می کنه که افراد کارهایی را دوست دارن که سریع سودش را ببینند. مثلا تو توی بازی دو تا دکمه می زنی ۱۰ امتیاز می گیری ولی توی واقعیت باید ۱۰ سال درس بخونی تا یه دکتری بگیری.
حالا این ها در کنار هم چی می گن: می گن که دنیا سرعتش زیاد شده(= نسخههای سرولت روی شخصیت آدم ها زیاد شده) نیاز به رفتار های
reactive
تر داریم. فشار اجتماعی برای القای یک شخصیت تیپیکال امروزی پسد(که هر روز امروزش عوض می شه) بالا رفته و حتی سیستماتیک تر شده(حتی شاید بشه گریزی بر سرمایه داری زد این جا).
نهایتا جا برای تمرکز کم شده چون هنوز مدلی که بشه تمام قسمت هاش non-blocking باشه و همچنان کار کنه و قفل نشه در اجتماع به وجود نیومده(= برای همچین کاری شاید باید یه مدیریتی باشه که بتونه جوری برنامه ریزی که کارها و نیازمندیهای افراد را که زمان نیازمندیها طوری باشه که کسی قفل نشه. شاید) و این باعث میشه عمقی که افراد می تونند و یا دوست دارند به فکرشون بدن کم شه. در نهایت ما سطحی نگر تر و سطحی نگر تر می شیم و اینستا و توییتر مدار تر و موجودی مثل دین می میره چون نیاز به فکر داره. نیاز به عمق داره و ...
یه چیز دیگه که باید اضافه کنم بحث دینامیک جوامع ه. که ادامه ی همون کامنتم زیر پست حسینه که حالش نیست. در واقع باید بیشتر هم بهش فکر کنم
- ۹۸/۰۷/۲۶
امید وارم که حسین این را بخونه و نظر بده
:دی