داستان از این قراره که ما توی این پست نمیخوایم فلاتر رو آموزش بدیم و بگیم چه طوری باید با فلاتر برنامه نویسی کرد . میخوایم یه کمی در مورد اینکه Flutter چی هست گپ بزنیم ، یه کمی از این شاخه به اون شاخه بپریم و در آخر هم یه نتیجه گیری شیک و مجلسی داشته باشیم ( و در ضمن ما کاری با تلفظ لهجه بریتیش یا آمریکن این لغت Flutter نداریم و کاری نداریم فلاتر درست هست یا فلادر یا فلوتر یا فلودر ! ما چیزی رو میگیم که سر زبون ها افتاده . مثه واژه لاکچری که از بیخ و بن غلط هست و اصلش لاکشری هست . ولی ما که نمیایم به یه دختر خانم خوشگل که صاف تو چشم آدم زل میزنه و میگه این پالتویی که خریدم خیلی لاکچری هست ، بگیم که هاها! لاکچری غلطه و غیره ! به ما چه اصن !! )  

از قدیم و ندیم ، واسه نوشتن برنامه اندروید ، دو راه بوده : یه راه Native که راه اصلی هست و میاد از زبان های تخصصی مربوط به خود اندروید استفاده میکنه ( مثه جاوا ) و برنامه های Native حسابی هم با سخت افزار گوشی ها جور در میاد که یه مزیت بزرگ هست . و راه دوم و فرعی تر ، استفاده از برنامه های Hybrid بوده ، که از زبان های برنامه نویسی دیگه استفاده میکنه و یه جورایی اونارو Convert میکنه واسه اندروید . مثلا با Html و Css و JavaScript یا حتی سی پلاس پلاس هم میشه برنامه Hybrid ساخت واسه اندروید . این راه دوم و فرعی یه عیب بزرگ داره ، با یه مزیت بزرگ . عیب بزرگش این هست که هر چقدر پروژه و اپ شما پیشرفته تر باشه ، سرعت اجرای برنامه میاد پایین تر . دلیلش هم معلومه ، اندروید رو با Html چه کار ؟! شاید واسه برنامه های سبک بشه با Hybrid کار کرد ، ولی واسه پروژه های سنگین ، سخت ضایع میشید و اوضاع خوشگلی نمیشه . مزیت بزرگش هم اینه که قابلیت چند سکویی داره . یعنی موقع خروجی گرفتن میشه هم خروجی اندروید گرفت و هم آی او اس واسه اپل که خیلی دهن پر کن هست .

توی چند سال پیش ، واسه ساختن برنامه های Hybrid میتونستیم از PhoneGap استفاده کنیم که میومد کدهای Html  و Css رو میگرفت و خروجی اندروید و آی او اس رو میداد . که این فون گپ به مرور زمان محبوبیت و کارایی خودش رو از دست داد ، دلیل اون هم چیزی نبود به جز React Native

حالا این React Native چی هست ؟ کلمه کلیدی توی این ماجرا React هست ، که برگرفته شده از جاوا اسکریپت هست . اما صبر کن ! گفتیم جاوا اسکریپت مربوط میشد به اون راه فرعی ، پس چیطو شد که الان فون گپ رو از دور خارج کرده ؟ جواب اینه : شما وقتی جاوا اسکریپت رو یاد میگیرید ، بعدش باید برید سراغ اکما اسکریپت ، بعدش باید برید سراغ React Js و بعدش React Native . یعنی برنامه نویسی اندروید با React Native ، جاوا اسکریپت خام نیست ، یه سری کتابخونه ها بهش اضافه شده که اونو خیلی قدرتمند میکنه ( ولی بازم فرزند جاوا اسکریپت هست ) ولی این React Native اصن از کجا اومد ؟ React Native توسط فیسبوک معرفی و گسترش داده شد ، و هدفش این بود که در عین حال که واسه اندروید و ios بشه خروجی گرفت ، از سرعت اجرای برنامه هم چیزی کم نشه . به عبارت دیگه فیسبوک اومد اون راه دوم و فرعی رو بهینه سازی کرد ، جوری هم بهینه سازی کرد که واقعا از راه اصلی چیزی کم نداره . خلاصه فیسبوک از این پروژه ری اکت نیتیو پشتیبانی کرد و ادامه داد ، تا جایی که محصول بزرگی مثه اینستاگرام رو ، با React Native برنامه نویسی کرد . و وقتی که گوگل این قدرتمند نمایی فیسبوک و React Native رو دید ، واسه اینکه از قافله عقب نمونه ، اومد و Flutter رو معرفی کرد . 

همینجای کار بهتون بگم که برنامه نویسی و کلا کار با Flutter ، توی ویندوز ، فقط و فقط واسه سیستم های ۶۴ بیت جواب میده و شما با سیستم های ۳۲ بیت اصلا نمیتونید فلاتر رو نصب کنید

همونجوری که گفتم ، React Native بر اساس جاوا اسکریپت بنا شده ، پس زبون مادرش جاوا اسکریپت هست . ولی زبان اصلی Flutter چی هست ؟ فلاتر از زبان برنامه نویسی Dart استفاده میکنه ( نه اون دارتی که هی پرتاب میکنید و همش میزنید به در و دیوار ) دارت یه زبان برنامه نویسی هست مثه سایر زبان های برنامه نویسی دیگه . این یه تکه کد هست که با دارت نوشته شده :

 

میتونید واسه آشنایی بیشتر با Dart ، به وبسایت رسمیش مراجعه کنید : 

آشنایی با دارت

وقتی که گوگل Flutter رو معرفی کرد و حسابی هم تبلیغ کرد روش ، سوال اساسی پیش اومد که کدوم بهتره ؟ React Native یا Flutter 

نمیخوام با توضیحات طولانی سرتون رو درد بیارم ، پس خیلی خلاصه و مختصر و مفید ، موارد اساسی رو میگم و مقایسه رو انجام میدیم . 

اولین مورد : رابط کاربری 

رابط کاربری یا همون گرافیک کار ، یا به قول بچه با کلاس ها ، UI . رابط کاربری توی React Natvie یه سر و گردن بالاتر از Flutter هست . چون توی این سال ها اونقدر React Native پیشرفت کرده که مثلا واسه اینکه یه فرم ورود بسازید ، لازم نیست بیاید EditText , Button , TextView رو به صورت جدا جدا بذارید ، میتونید کل فرم ورود رو که از قبل واستون آماده کردن و قابل شخصی سازی هم هست ، بذارید توی پروژه و حالش رو ببرید ، پس شما میتونید با React Native برنامه های با گرافیک بهتری بسازید نسبت به Flutter ( فلاتر واسه اندروید گرافیک خوبی داره ، ولی ضعفش توی ios هست که از حوصله این بحث خارجه ) 

دومین مورد : زمان برنامه نویسی و توسعه

اگه بخوایم یه برنامه واسه مدیریت یه مدرسه بنویسیم ، با React Native میتونیم زمان خیلی خیلی کم تری رو صرف برنامه نویسی کنیم ، نسبت به Flutter . دلیلش هم اینه که جامعه بزرگی که از React Native حمایت میکنه ، اومده و کدها رو یه جورایی بسته بندی کرده و دست برنامه نویس رو باز گذاشته که ازشون استفاده کنه . در مقابل ، فلاتر هنوز اول کار هست و تا بیایم با کدهای دارت آشنا بشیم مدت زمان بیشتری رو باید صرف کنیم . پس توی مورد دوم هم ، برنده کسی نیست جز React Native

سومین مورد : اجرای برنامه

منظورم از اجرای برنامه ، سرعت و قدرت اجرای برنامه هست . اینجاست که گوگل قدرت خودش رو نشون میده . چرا ؟ خیلی ساده هست ، چون اندروید اصن مال گوگل هست . گوگل زیر و بنای اندروید رو کامل میشناسه ، پس اومده زبان برنامه نویسی دارت رو انتخاب کرده که خیلی بهتر از جاوا اسکریپت روی سخت افزار سوار میشه . وقتی برنامه ای رو که با فلاتر نوشته شده اجرا میکنید ، اونقدر روان اجرا میشه که انگاری مائده ماهی داره واستون یه رقص سفارشی انجام میده ! پس برنده توی سومین مورد ، Flutter هست 

چهارمین مورد : ثبات

باگ ها ، همیشه وجود داشتن . و توی چه زبان هایی بیشتر از همه باگ وجود داره ؟ زبان های تازه وارد ، که فلاتر هم تازه وارد هست دیگه . پس تا بیاد Flutter ثبات پیدا کنه و باگ هاش رو برطرف کنه ، یه مدت زمانی طول میکشه . در حالی که React Native این مراحل رو گذرونده و کاملا به یه مرحله Stability رسیده ، در حالی که فلاتر تازه از ورژن ۲ خودش رونمایی کرده . پس ثبات React Native خیلی بهتر از فلاتر هست

پنجمین مورد : ارباب رجوع 

بوی پول میاد ! تا وقتی مشتری نباشه ، بهتره کار و کاسبی هم در کار نباشه ! شرکت ها و افرادی که دنبال برنامه نویس React Native هستن ، خیلی خیلی خیلی بیشتر از شرکت هایی هست که دنبال برنامه نویس Flutter میگردن ( که توی ایران بعید میدونم شرکتی باشه که دنبال برنامه نویس Flutter باشه ) پس برنده توی پنجمین مورد ، باز هم React Native هست . 

شاید ذکر این مورد هم خالی از لطف نباشه که فلاتر خیلی راحت تر قابل راه اندازی هست . شما کافیه فایل SDK فلاتر رو دانلود کنید و با نصب پلاگین توی اندروید استودیو یا IntelliJ IDEA برنامه نویسی فلاتر رو شروع کنید . ولی داستان React Native یه کمی پیچیده تر هست 

خـــوب ، با در نظر گرفتن موارد بالا ، و با در نظر گرفتن اینکه توی کشور ایران زندگی میکنیم ، من بهتون قول میدم که اگه همین الان شروع کنید به یاد گرفتن جاوا اسکریپت و بعدش اکما اسکریپت که نسخه پیشرفته تر جاوا اسکریپت هست و بعدش هم React رو یاد بگیرید ، حداقل تا ۵ سال آینده خودتون رو تضمین کردید . ولی فلاتر خریداری توی ایران نداره ، حداقل تا چند سال دیگه . فلاتر یه جورایی مربوط به آینده هست . پس بهتره با React Native پول دربارید و با Flutter از آینده عقب نیفتید ! پس فکر کنم کسی که به React Native مسلطه ، حال و روزش مثه این یارو باشه : 

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

برنامه نویسی اندروید با فلاتر

مجتبی صابری


همه عشقم برنامه نویسی هست | t.me/kotlin9


پیمایش نوشته


پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *