شر نوشته ی یک developer

۲ مطلب با موضوع «فلسفه برنامه نویسی» ثبت شده است

آموزش RxJava  قسمت 0

آموزش RxJava قسمت 0

یک هیستوری کوتاه از ReactiveX , RxJava

برنامه نویسی درباره حل مسائل و مشکلاته, و وقتی شیء گرایی اومد ,آنالیز و حل یک مشکل رو خیلی آسون کرد و ما هنوز ازش استفاده میکنم.

ولی به مرور زمان کسب و کار ها و برنامه ها پیچیده تر شدند و وقتی سال 2010 رسید, برنامه نویسا به این نتیجه رسیدند که شیء گرایی فقط بخشی از مشکلات رو حل میکنه.

مشکل اینجا بود که در برنامه های پیشرفته تر تعاملات بین شیء ها هم بیشتر و برنامه نویسی سخت تر میشد.

بعد Functional Programming اومد تا جای خالی رو پر کنi و متمم شیء گرایی باشه. ولی کافی نبود

 

یک رویکرد تابع گرای رخداد محور شروع به جلب توجه کرد. چند تا فریمورک واکنشگرا هم ساخته شدند مثل AKKa و  Sodium.

 

اما در مایکروسافت یک برنامه نویس به اسم Erik Meijer یک فریموورک واکنش گرا برای دات نت ساخت که  بهش Reactive Extensions  میگفتند.

و طی چند سال اخیر برای چند زبان و فریموورک ساخته شد. مثل JavaScript, Python, C++, Swift,  and Java

توی 2014 نسخه reactiveX جاوا نوشته شد, RxJava 1, بعدا هم توی 2016 نسخه دوم منتشر شد.

و تا الان همه ی زبان ها و فریموورک ها تحت jvm پشتیبانی شده. RxScala , RxGroovy, RxKotlin,RxAndroid,RxJava-JDBC,RxJavaFX 

 

RxJava بیشتر از یک کتابخانه است و بخش از اکوسیستم واکنشی است و بطور کلی یک رویکرد برنامه نویسی رو ارائه میده.

ایده اصلی ReactiveX اینه "events are data and data are events" یعنی رخداد ها دیتا هستند و دیتا رخداد ها.

 

بینش واکنشی

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

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

 

مسئله دیگه اینه که همه ـی ای رخداد ها غیر هم زمان هستند , و به هم تاثیر دارند.

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

یک دونده و یک ماشین رو دو جریان جدا از دیتا درنظر میگیریم ممکنه که این دو با هم واکنش داشته باشند.

 

برای نوشتن برنامه های واکنشی توی جاوا میتونیم از callback ها و ابزار ها concurrency استفاده کنیم ولی

با RxJava خیلی راحت تره و مظمئن تر.

 

دوباره به جهان نگاه کنیم . خیلی چیز ها هستند که استاتیک هستند مثل کتاب یا یک سی دی آهنگ , ولی از دیدگاه دیگه ای یک کتاب یک دنباله (جریان) از کلماته.

ماشین و دونده هردو حالت و خواص(پراپرتی) های خودشون رو دارند ولی همچنین حرکت هم دارند. کتاب و سی دی هم وقتی که مصرف میشن به حرکت درمیان.

 

با ترکیب کردن رخداد ها و دیتا بهتر میشه که دنیا رو میشه طبیعی تر مدل سازی کرد

 

چرا باید RxJava یاد بگیریم؟

why reactive

اگر میخواهید برنامه های واکنش گرا یا واکنشی یا Reactive بسازید , بهترین راه RxJava

مثال برای اندرویدیها

سیستم عامل اندروید رو در نظر بگیرید

- ورودی های کاربر 

- تراکنش های اینترنتی

- تراکنش های io (ورودی و خروجی فایل) 

- پردازش گر 

این موارد همه Asyncronous یا غیر هم زمان و Blocking یا قلف کننده هستند.

یعنی معلوم نیست که

- کاربر کی کلیدی رو میزنه

- کی اینترنت به درخواست شما جواب میده

- یک فایلی با چه سرعتی لود میشه

- cpu یک مسئله رو در چقدر زمان پردازش میکنه

 

برنامه های اندروید بطور پیشفرض روی یک Thread به اسم MainThread اجرا میشن. و هر کدوم از موارد بالا ممکنه باعث بشه تا مین ترد بلاک بشه و به اصلاحی UI فریز بشه.

و اگر شما عملیاتی که ممکنه میت ترد رو بلاک کنه در مین ترد اجرا کنید خود فریموورک به شما گیر خواهد داااد.

راه حل هایی برای دور زدن این قضیه هست. مثل AsyncTask  که عملیات شما رو توی یک ترد دیگه انجام میده و عملیات شما رو Asynconous یا غیر هم زمان انجام میده.

ولی همونطور که اول گفتیم در برنامه های پیچیده , کار سخت تر میشه مثلن و مسائلی مثل Callback Hell پیش میاد.

callback hell

RxJava همه ی این کار ها رو بصورت غیر هم زمان انجام میده به راحتی. RxJava فواید دیگه ای هم داره زیاد دیگه ای هم داره که میگم در آینده

 

 

کی و کجا از RxJava استفاده کنیم؟

همیشه و همه جا. به همه چیر با رویکرد واکنشی نگاه کنید. تنها راه استادی در برنامه نویسی واکنشی اینه که برنامه ها رو از صفر واکنشی بسازید.

به همه چیر به دید Observable نگاه کنید. همیشه برنامه اتون با کلمات data , event Flow مدل کنید. وقتی اینکارو کردید میبینید که برنامه نویسی واکنشی همه چیز برای ارائه داره و "کیفیت برنامه های شما به طور چشم گیری افزایش می یابد"

 

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

۰ نظر موافقین ۰ مخالفین ۰

دوازده اشتباه رایجی که برنامه نویسان توی دوران کاری شون میکنن

1.نداشتن هدف واضح

 

اگه هدفی توی سر نداشته باشی هر جا که باد بره تو هم میری :/ as a mater of fackt

 

اگر میخواهید در شغل برنامه نویسی موفق باشید, باید بدانید که دقیقن کجا میخواهید بروید.

 

داشتن یک ذهنیت مبهم از کاری که در یک فاصله زمانی میخواهید انجام دهید, کافی نیست. در عوض شما باید اهداف محکمی داشته باشید;تا در هر نقطه از راه جهت شما مشخص باشد.

 

خیلی از برنامه نویسان و متخصصان , بعد از ده ها سال شغل و مسئولیت سابق خود شون رو دارند, بعله ده سال !!!

 

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

 

خب چکارش میشه کرد؟ 
امروز,همین الان,وقت بزارید و فکر کنید در مورد شغل ایده آل تون و تصمیم بگیرید که اهداف نزدیک تون چی هستند.

 

یعنی ببینید مقصد اصلی تون کجاست و الان کدوم وری باید برید؟؟؟

وقتی به هدف نزدیکتون رسیدین , هدف نزدیک بعدی رو انتخاب کنید.

 

و هدف اصلی رو همیشه به یاد داشته باشید. مصلن روی یه کاغذ بنویسید بزنید به دیوار تا  همیشه بدونید که به کجا دارید میرید.

 

و اشتباهی که حتی از هدف نداشتن هم رایج تره , تعویض سریع هدفه.

خب بدیهیه که کسی که هر هفته از یک شاخه به اون شاخه بپره نتیجه ای هم نمیگیره.

 

 

2. مهارت های نرم یا غیر تکنیکی

اگر میخواهید برنامه نویس بهتری باشید , باید خلاقیت , سرعت عمل , سلامت جسمی و بقیه موارد مشابه رو هم داشته باشید و بهشون توجه کنید.

 

پس در کنار تقویت مهارت کد نویسی به روش های تقویت مهارت های نرم هم توجه کنید.

 

 

3.قاطی جامعه نبودن

بودن در جامعه کمک میکنه تا حس تنهایی نکنید و حس کنید که به جایی تعلق دارید.

بعلاوه میتونید رابطه های جدیدی پیدا کنید و از اطراف ایده بگیرید.

 

اگه عضو یک اجتماع برنامه نویسی نیستید, پیشنهاد میکنم که حتمن عوض (عضو) بشید.

 

عضو چیزی بزرگتر از خودت بودن , راهیه برای رشد.

 

بودن در یک جامعه برنامه نویسی فایده های زیادی داره :|

 

تو خارج که کد کمپ میزنن ولی ازین سوسول بازیا ما نداریم !!!
شما میتونید برید به کلاس های آموزشی.

 

یا اگر حضوری راحت نیستید مجازی که زیاده :/

 

 

4.تخصصی کار نکردن

عمیق کار کنید. چون تخصص داشتن توی یک زمینه خیلی فایده داره :|

 

شما هم شنیدید که همه کاره هیچ کاره اس. بد برداشت نکنید این که اطلاعات پایه در مورد همه چی داشته باشید, لازمه.

اول در یک حوضه مشخص متخصص بشید و بعد میتونید در حوضه ی بعدی کار کنید.

 

چون میگن توی برکه ماهی بزرگه باشی بهتره تا توی دریا ماهی کوچیکه.

بعد ازین که توی برکه ی خودتون بزرگ شدید میتونید برید جاهای بزرگ تر و غمیق تر شنا کنید.

 

5.سرمایه گذاری نکردن روی برند شخصی 

در طول زندگی خیلی چیزا میان و میرن. شما ممکنه شغلتون رو چند بار عوض کنید, ممکنه پولدار بشین یا ورشکسته, ممکنه چاق بشین یا لاغر ولی یک چیز هست که تغییر نمیکنه...

اسم شما.

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

 

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

 

اگه شما اسم و رسم خوبی داشته باشید میتونید همه چیزو با یک علامت دست عوض کنید.

 

خب فروش محصولات و سرویس ها که طبیعی بنظر میرسه, ولی تاحالا فکر کردید به ارزش فروش خودتون؟(به عنوان برنامه نویس :/  ).

 

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

 

یک  راهش تولید محتوایی که برای بقیه مفید باشه.


 

6.کار نکردن روی پروژه های جانبی

کار کردن روی پروژه های جانبی خیلی مفیییده :|

 

اکثر افرادی که شاغل هستند گله میکنند که فرصت نداریم تا روی دیگر تکنولوژی ها کار کنیم.

 

شما با کار کردن روی پروژه های جانبی میتونید به ترز فجیعی مهارت های برنامه نویسی خودتون رو تقویت کنید و کنارش یه اضافه درآمد هم میتونید داشته باشید.

 

همه ی برنامه نویسانی که پروژه جانبی کار میکردن (یا زیر آبی میرفتن تو شرکت) در نهایت اون پروژه جانبی تبدیل به کار تمام وقت شون شد.

 

فواید دیگه ای هم هست که اینجا نامبرده نمشن 

 

7.برنامه ای برای خودآموزی نداشتن

 

داشتن برنامه منظم برای یادگیری و آپدیت اطلاعات خییییلی مفیده :| 

چون یکی از فاکتور های موفقیته و نداشتن اینچنین برنامه ای اشتباهه

 

این جور آدمی نه تنها خودشو رشد میده بلکه آدمهای اطرافش رو هم رشد میده.

میتونید برنامه ریزی کنید که هر ماه یک کتاب بخونید و هر سال 12 تا کتاب خوندید :/

یا هر روز نیم ساعت مطالعه کنید , و بعد از یکی دو سال خیییلییی تغییر میکنید.

 

عمل کنید

شااااااید مطالب این پست بنظرتون مفید بود ولی چه فایده اگه تغییری در شما ایجاد نکنه؟
پس بجای خوندن و پر کردن مغزتون , عمل کنید , همین امروز
 

۰ نظر موافقین ۰ مخالفین ۰