برنامه نویس فلاتر و علاقه مند به ماشین لرنینگ
فراتر از پلتفرم ها
در این مطلب از منبع زیر استفاده شده است
از دغدغه های کسب و کارهای جدید و یا استارتاپی توسعه کسب و کار در بین کاربران مختلف با دستگاه های متفاوت و سیستم عامل های مختلف است
صاحبان این کسب و کارها دو راه دارند
- چندین بار توسعه نرم افزارشان به ازای هر پلتفرم
- استفاده از ابزار های کراس پلتفرم
در راه اول علاوه بر هزینه بیشتر ? چالش های ویرایش و یا تغییر نسخه های مختلف نرم افزار وجود دارد که به هیچ وجه توصیه نمیشود
پس تنها راه باقی مانده استفاده از ابزارهای کراس پلتفرم (چند سکویی) است که در این مطلب تنها به مقایسه سه ابزار میپردازیم
- Flutter
- React Native
- Ionic
اولین عامل مقایسه را میتوان زبان پایه این ابزارها دانست
- زبان دارت (Dart) پایه فریمورک یا کیت توسعه نرم افزار (SDK) فلاتر است که توسط شرکت گوگل معرفی و عرضه شده است. این زبان کاملا قابل ترجمه(compile) به کد محلی(native code) برای تمامی پلتفرم هاست.
- زبان جاوا اسکریپت(Js) و کتابخانه React پایه فریمورک ریکت نیتیو است. لازم به ذکر است که این زبان و فریمورک توسط شرکت فیسبوک توسعه داده میشود.
- درمورد ایونیک کمی ماجرا فرق دارد این ابزار برپایه js+html+css است که برای توسعه وب استفاده میشود و از نسخه 4 میتوان از کامپوننت های فریمورک ها توسعه فرانت وب برای ظاهر سازی آن استفاده کرد هرچند که شرکتی به بزرگی مانند گوگل یا فیسبوک حامی آن نیست.
دومین عامل سازگاری کد با پلتفرم های مختلف است
1. ایونیک : سازگاری کد با پلتفرم های مختلف عالی
مفهوم "برنامه مبتنی بر وب" تضمین می کند که می توانید به راحتی از کد خود مجددا استفاده کنید - شما در پایان فقط یک برنامه مبتنی بر وب می سازید. کتابخانه ی عالی کامپوننت هایی از اجزای سازگار (که بطور خودکار برای پلتفرمی که برنامه در آن اجرا می شود طراحی شده است) نیز به این موضوع کمک می کند.
2.فلاتر:سازگاری کد با پلتفرم های مختلف عالی (ولی کمتر از ایونیک)
به کمک ساختار ویجت (widget) محور فلاتر سازگاری بالایی با پلتفرم ها دارد بعلاوه اینکه برای ظاهر ios نیز ابزارهایی دارد که باعث افزایش کدنویسی به نسبت ایونیک میشود
3.ریکت نیتیو : سازگاری متوسط (کمی کمتر از متوسط)
با وجود اینکه به کد محلی ترجمه میشود ولی به دلیل وجود کامپوننت های پایه کمتر و اجبار توسعه دهنده به ویرایش زیاد کامپوننت ها سازگاری کمی دارد.
هرچند با وجود کتابخانه هایی کار باآن آسان تر شده است.
سومین عامل مقایسه سرعت یادگیری است
دراین مقایسه همه ابزار ها تقریبا در یک سطح هستند هرچندکه نیاز به کمی تغییرات آن ها را متفاوت ساخته است
چهارمین عامل کامپوننت های آماده است
- ایونیک در هسته خود مجموعه بزرگی از اجزای از پیش ساخته است. کامپایلر /تولچین ای که یک برنامه محلی را به همراه دارد ،با بخشی از پکیج Ionic (از طریق CLI آن ) و به کمک پکیج های دیگری مانند Cordova یا Capacitor مؤلفه های ارائه شده توسط Ionic به طور خودکار با پلت فرم برنامه اجرا می شود و بنابراین ، Ionic ایجاد برنامه های زیبا و بومی را به آب خوردن تبدیل می کند!
- فلاتر به کمک Material-style , Cupertino-style کامپوننت یا ویجت های زیادی برای توسعه دهندگان آماده کرده است تا براحتی بتوانند ظاهر کاربری زیبا طراحیکنند.
- در ریکت نیتیو درصدی از کامپوننت ها طراحی شده اند اما علاوه بر اینکه نیاز به ویرایش دارند تطبیق پذیر نیستند و این دو باعث شده است تا در سطح پایینی باشد
پنجمین عامل اکوسیستم است
به این معنا که یافتن جواب سوالات و یا کتابخانه های مورد نیاز چقدر راحت است
- ایونیک به خاطر جامعه بزرگ جاوا اسکریپت و به کمک جامعه بزرگ انگولار که با ان میتوان ایونیک را توسعه داد بسیار اکوسیستم بزرگی دارد و با استفاده از ابزار npm دسترسی به کتابخانه های زیادی را فراهم کرده است.
- فلاتر همانگونه که از بحث ها در سایت StackOverFlow مشخص است با وجود جوان بودن به طور چشم گیری در حال رشد است و با استفاده از pub دسترسی به کتابخانه های زیادی را فراهم کرده است
- ریکت نیتیو نیز به لطف جاوا اسکریپت جامعه و کتابخانه های بزرگ و زیادی دارد اما نکته منفی این است که شما اغلب باید به اکوسیستم تکیه کنید ، زیرا تنها ویژگی های اصلی در خود React Native گنجانده شده است.
ششمین عامل محبوبیت است
اگر در این مرحله مقدار محبوبیت هر ابزار را در سایت گیتهاب را شاخص در نظر بگیریم
ریکت نیتیو با 80 هزار استار در رتبه اول
فلاتر با 72 هزار استار در رتبه دوم
و ایونیک با 39 هزار استار در رتبه سوم است
هفتمین عامل پرفورمنس یا بازدهی مناسب است
- به دلیل ساختار مبتنی بر وب ایونیک بدترین پرفورمنس و بازدهی را دارد
- فلاتر و ریکت نیتیو با توجه به ترجمه شدن به سطح محلی تفاوت چندانی ندارند ولی نحوه عملکرد ان ها در کاربردها و دستگاه های متفاوت باعث شده که دقیقا یک امتیاز نداشته باشند
هشتمین عامل دسترسی به ویژگی های محلی است
- ایونیک به خاطر ساختار مبتنی بر وبی که دارد به سطح بسیار محدودی از ویژگی ها دسترسی دارد هرچند که به ویژگی های رایجی مثل دوربین دسترسی دارد
- تیم فلاتر در طی یک سال اخیر پکیج های خوبی را برای اتصال به ویژگی های محلی توسعه داده اند با اینهمه شما میتوانید مستقیما به کمک زبان های جاوا و سوییفت به ویژگی ها دسترسی یابید
- برای ریکت نیتیو به لطف محوبیبت بالا نیز پکیج های زیادی موجود است اما نکته منفی اینست که هسته اصلی ممکن است با پکیج ها سازگار نباشد
نهمین عامل کاربرد جهانی است
- ایونیک توسط کسب کارهای کوچک و زود بازده بیشتر استفاده شده است هرچند که دلیلی بر استفاده در اپ های بزرگ نیست
نمونه اپ های پیاده سازی شده با ایونیک
2. بر خلاف به نسبت جوان بودن فلاتر توسط برنامه های بزرگی استفاده شده است.
نمونه اپ های پیاده سازی شده با فلاتر
3. ریکت نیتیو توسط کمپانی های بزرگ تری استفاده شده است هرچند که مهاجرت کمپانی های بزرگی مانند AirBnB ازین ابزار کمی امتیاز ان را کاهش میدهد
نمونه اپ های پیاده سازی شده با ریکت نیتیو
با تمام مقایسه های بالا در آخر باید گفت هر سه این ابزار ها قوی و قدرتمند اند و اینکه شما بعنوان برنامه نویس به سمت کدام میروید کاملا به سلیقه خودتان مربوط است
در اخر نیاز دانستم که نمودار علاقه مندی افراد به این سه ابزار را مبتنی بر جستجوی یک سال اخیر مردم ایالات متحده قرار دهم
این نمودار در لینک زیر قابل دسترسی است
https://stackshare.io/stackups/flutter-vs-ionic-vs-react-native
با تشکر از شما بابت خواندن این مطلب علاقه مندم که نظرات شما را نیز بدانم بخصوص راجب ابزارهایی که در این مطلب بررسی نشد ?✌
مطلبی دیگر از این انتشارات
زبان انگلیسی را با فرندز یاد بگیرید!
مطلبی دیگر از این انتشارات
معرفی شغل برنامه نویسی و بررسی بازار کار آن
مطلبی دیگر از این انتشارات
فرق لینوکس ها توی چیه ؟؟؟