جدال همیشگی Android و iOS – دردسرهای تیم ها و کارفرماها
جدال همیشگی Android و iOS – دردسرهای تیم ها و کارفرماها
دردسر های تیم ها
- کمبود منابع انسانی: معمولا در ایران، توسعه دهنده حرفه ای iOS بسیار به سختی پیدا میشه، هرچند که پیدا کردن توسعه دهنده حرفه ای Android رو هم سخت میدونم.
- کمبود منابع مالی: تیم تشکیل دادن برای هر دو پلتفرم یعنی هزینه 2-3 برابر نیروی انسانی، هچمنین پروژه های iOS بسیار کمتر از Android هستن.
دردسرهای کارفرماها
- زمان طولانی تر تولید: کارفرما مجبوره صبر بیشتری داشته باشه تا بتونه هم اپلیکیشن رو برای Android هم برای iOS تو دستانش لمس کنه.
- هزینه بیشتر تولید: کارفرما باید جداگانه برای هر دو پلتفرم Android و iOS به پیمانکار دستمزد پرداخت کنه که گاها دستمزد پلتفرم iOS ضریبی چند برابر از Android است.
- کیفیت متفاوت: نتیجه کار تیم Android معمولا با نتیجه کار تیم iOS متفاوت است (یکی بهتر یا بدتر از دیگری عمل میکنه).
محبوب ترین راه حل های موجود
این جا دو دسته راه حل لیست میشن، اونایی که زبان برنامه نویسی رو یکپارچه کردن و اونایی که علاوه بر زبان برنامه نویسی، لوازم برنامه نویسی و کتابخانه ها رو هم یکپارچه کردن.
استفاده از Xamarin
این فریم ورک بسیار معروفه، شرکتش توسط Microsoft خریداری شده و بسیار حمایت میشه، این فریم ورک با یکپارچه کردن زبان برنامه نویسی به C Sharp (C#) توسعه برای اندروید و آی او اس رو بسیار راحت تر کرد.
با اینکه زبان برنامه نویسی یکی شده، اما هنوز هم باید برای هر پلتفرم از امکانات مخصوص به خودش استفاده کرد، در واقع ما به آرمان 100% یکپارچگی نمیرسیم و این آرمان در حد 30% باقی میمونه.
این ها بعدا Xamarin Forms رو معرفی کردن، که آرمانی که صحبت شد رو محقق میکنه، اما این راه حل مثل مورد بعدی، از سرعت خوبی در اجرا برخوردار نیست و امکانات کافی برای همه نوع اپلیکیشنی رو در اختیار قرار نمیده (به احتمال قوی دست کد نویس رو میذاره تو پوس گردو).
استفاده از WebView و تکنولوژی های وب (HTML, JS, CSS, …)
فریم ورک های معروفی مثل PhoneGap و Apache Cordova و Ionic برای همین کار ایجاد شدند.
ضعف اساسی این شیوه، سرعت پایین اجراشه، به نحوی که توقف و اختلال در اجرای انیمیشن ها مشهوده و حس و حال یک اپلیکیشن NATIVE رو نداره.
استفاده از React Native
وقتی که ReactJS معرفی شد و خیلی ها ازش استفاده کردن، انتظار نمیرفت که کمپانی Facebook چند وقت بعد فریم ورک React Native رو معرفی کنه، ابزاری (شما بخوانید فریم ورک) که کمک میکنه تا نزدیک 90% یکپارچگی در کد نویسی برای اندروید و آی او اس بوجود بیاد.
من ازش برای چند تا اپلیکیشن موبایل استفاده کردم، خیلی خوب و روونه، مگر گوشیتون شلوغ یا قدیمی باشه، یا کتابخانه ای که ازش استفاده میکنین توسط یک کدنویس ناشی نوشته شده باشه.
بله، این فریم ورک، خیلی به جامعه متن باز (Opensource Community) وابستس، یعنی معمولا کتابخانه های اساسی، مثل Navigation توسط کد نویس های خارج از شرکت Facebook نوشته شده و خیلی این کدنویس ها به زیر و بم کار آشنایی ندارن و احتمال زیاد خروجی کارشون سرعت و کیفیت پایینی داره.
بله درست خوندین، توی React Native صحیح و درست کد نوشتن، به نحوی که به سرعت لطمه نزنه، کار خیلی سختیه، ممکنه بد اقبال باشین و اپلیکیشن به صورت دیزلی روی گوشی مشتری اجرا بشه.
یک نقطه قوت که نقطه ضعف هم هست، استفاده از زبان Javascript برای این فریم ورک هست.
نقطه قوتش اونجاس که این زبون خیلی سادس، خیلی هم قدرتمنده، افراد زیادی هم بلدنش و شما با پیدا کردن نیروی کاری خیلی با مشکل مواجه نمیشین.
اما نقطه ضعفش اینه که به درد اپلیکیشن های بزرگ و پیچیده نمیخوره، چون سیستم نوع متغیرهاش Dynamic هست، این باعث میشه سرعت کدنویسی بالاتر بره، اما سرعت تست و رفع اشکال بیاد پایین تر.
برای همین خیلیا اومدن از زبان Typescript استفاده کردن براش که تقریبا نوعه متغیرهاش Static هست، اینم تحقیق بکنید خیلی خوبه.
فریم ورک React Native با هدف ارائه خروجی گرافیکی (انیمیشن) 60 فریم بر ثانیه تولید شده که کاملا نتونسته به این هدفش برسه.
در مورد Dynamic Type و Static Type تحقیقی داشته باشین خیلی خوبه.
استفاده از Flutter
پایانی برای همه ی راه حل ها، فلاتر قول میده که بهتر از بقیه 60 فریم بر ثانیه، خروجی گرافیکی داشته باشه، و قول میده که 100% کدهای Android و iOS رو یکپارچه میکنه، همچنین، حس و حال هر اپلیکیشن تو پلتفرم خودش، حس و حال همون پلتفرم رو داره.
فلاتر رو Google ساخته، بوی مهندسی عالی و خالص ازش میاد.
زبان برنامه نویسی فلاتر زبان Dart هست، زبانی که توسط Google ایجاد شده و سال ها روش کار کرده و پختش کرده، ازش نترسین، شباهت خیلی زیادی به Java و C Sharp و بعضی جاها Javascript داره.
با فلاتر میشه خیلی سریع کد نوشت و نتیجه رو دید
با فلاتر میشه طرح ها و انیمیشن های بسیار زیبایی رو درست کرد
سرعت نمایش انیمیشن ها در فلاتر باورنکردنیه!
جالبه بدونید که شرکت گوگل سیستم عامل جدیدی برای موبایل ها تولید کرده به نام Fuchsia این که چقدر برتری داره و چقدر خوبه و آینده دستشه بمانه برای بعد، نکته مهم اینه که فریم ورک برنامه نویسی برای این سیستم عامل، فلاتره!
جالب تر این که، فلاتر داره برای وب و دسکتاپ میاد! بله! دیگه فقط با دونستن فلاتر و زبان دارت میتونین یک وبسایت راه اندازی کنین یا یک اپلیکیشن بر سیستم عامل های ویندوز، لینوکس، یا مک بنویسین!
بازپینگ: چگونه به یک برنامه نویس خوب تبدیل بشیم - قسمت اول - علی اشتهاری پور
بازپینگ: یادگیری برنامه نویسی موبایل با نگاهی به بازار کار - علی اشتهاری پور
بازپینگ: تشخیص اشیاء با فلاتر و تنسورفلو لایت - علی اشتهاری پور
بازپینگ: کار با اپلیکیشن اپتیچی - علی اشتهاری پور