برنامه نویسی موبایل و مسیری که برای آن باید طی کنید

در یک دهه اخیر با توجه به رشد روز افزون ارائه تلفن های همراه هوشمند و سیستم عاملهای کاراتر از گذشته، نمودار گرایش به سمت برنامه نویسی موبایل یا به اصطلاح توسعه اپ موبایل به صورت نمایی در حال رشد بوده است. این عامل منجر به توجه شرکتهای توسعه نرم افزار برای ارائه پلتفرمهایی جهت هرچه راحتتر شدن برنامه نویسی موبایل و از طرفی تولید برنامه هایی قابل اجرا بر روی چند سیستم عامل موبایل ترغیب کرده است که انتخاب های زیادی را پیش روی برنامه نویسان برای توسعه اپلیکیشن های موبایل گذاشته است.در این مقاله قصد داریم ضمن معرفی سیستم عامل های موبایل موجود در بازار و بستر های توسعه نرم افزار هریک، مسیر یادگیری برنامه نویسی موبایل در هریک را از نگاه خود به خوانندگان معرفی کنیم.چه سیستم عامل هایی هم اکنون به عنوان سیستم عامل موبایل شناخته میشوند؟پاسخ این است که بیش از دهها سیستم عامل برای استفاده در تلقن های همراه تا کنون ارائه شده است، که فقط تعداد محدودی از آنها توانسته اند درصد قابل توجهی از بازار را در طول زمان به خود اختصاص دهند. لیست زیر برخی از این سیستم عامل ها را نشان میدهد:AndroidChrome OSSailfish OSTizenKaiOSFuchsiaLiteOSPureOSUbuntu TouchPlasma mobilePostmarketOSLuneOSiOSiPadOSBlackBerry 10Cyanogen OSFirefox OSMeeGo/Maemo/MoblinwebOSBlackBerry OSSymbianBadaPalm OSWindows MobileWindows PhoneWindows 10 Mobileهمینطور که میبینید تعداد این سیستم عامل ها، بسیار زیاد است و جالبتر اینکه برای همه این سیستم عاملها اپ های متعدد نوشته شده است و یا در حال نوشتن هست. البته برخی از آنها به معنای واقعی کلمه منسوخ شده اند و برخی به ندرت استفاده میشوند. ولی از این نظر جای نگرانی نیست، چون فقط سه سیستم عامل بازار کنونی را به خود اختصاص داده اند و شما مجبور نیستید برای برنامه نویسی موبایل بین گزینه های مختلف انتخاب کنید این سه سیستم عامل شامل :AndroidIOSKiOSمیشوند. که بیشتر مخاطبین با سومین سیستم یا KiOS آشنایی کمی دارند، ولی واقعیت این است که سومین جایگاه استفاده از سیستم عامل ها در بازار، با بیش از ۱۰۰ میلیون تلفن همراه نیمه هوشمند یا featured phoneدر اختیار این سیستم عامل هست که در واقع یک نسخه از سیستم عامل Firefox OS هست که بر اساس لینوکس ساخته شده و برنامه های نوشته شده برای این سیستم به صورت Web Base ارائه میشوند.چه زبانهای برنامه نویسی برای نوشتن اپلیکیشن های موبایل استفاده میشوند؟اگر نگاهی به گذشته بیندازید میبینید که در سیستم عامل های مختلف با توجه به کیت توسعه ارائه شده توسط شزکتهای سازنده، زبانهای برنامه نویسی متعددی برای این امر استفاده شده است. این زبانها شامل موارد زیر میشوند:۱- زبان جاوا۲- زبان ++C۳- زبان #C۴- زبان Objective C۵- زبان Swift۶-زبان Kotlin۷- زبان JavaScriptدر این میان زبانهای جاوا و Objective C شاید بیشترین اپلیکیشن ها را در سطوح مختلف برای دو سیستم عامل اندروید و IOS ایجاد کرده اند. همچنین میتوان گفت در دهه ۲۰۰۰ تا ۲۰۱۰ میلادی جاوا و ++C برای نوشتن برنامه های موبایل چه روی سیستم عامل های هوشمند مانند Symbian و چه سیستم جاوا استفاده میشده اند. به صورت خلاصه زبان جاوا و پلتفرم JDK یکی از پر استفاده ترین بسترها در این عرصه بوده اند.اما در چند سال اخیر صاحبان این سیستم عاملها مسیر توسعه برنامه های موبایل را تغییر داده اند، به نحوی که با توسعه بستر های جدید و حتی اختراع زبانهای جدید یا همخوان کردن زبانهای موجود، سعی کرده اند توسعه اپ را به مسیری پیشرفته و منطبق بر نیاز برنامه نویسان جوانتر سوق دهند.(تمامی دوره آموزش اشاره شده در بالا در وب سایت کدفرند تدریس شده اند)به عنوان مثال شرکت google صاحب امتیاز سیستم عامل android در کنار زبان جاوا زبان ساده تر و به اصطلاح به روزتری مانند Kotlin را ارائه داده است و همچنین برای نوشتن برنامه هایی قابل اجرا روی چند سیستم عامل (Cross Platform)، پلتفرم Flutter و زبان Dart را ارائه داده است و شرکت Apple زبان برناه نویسی Swift را به عنوان زبان اصلی توسعه برنامه های قابل اجرا روی IOS ارائه داده است. اینها را بگذارید در کنار پلتفرمهایی که از قدرت وب برای توسعه اپ های Hybrid استفاده میکنند مانند Phone Gap,IONIC,React Native و … و وب چیزی نیست جز در کنار هم قرار گرفتن JavaScript+HTML+CSS.در نتیجه ۴ زبان مهم که میتوانند در آینده به زبانهای اصلی توسعه اپ موبایل استفاده شوند شامل :KotlinSwiftDartJavaScriptمیشوند. نکته دیگری که باید به آن توجه داشت این است که شرکت Microsoft با ارئه Xamarin به عنوان یک پلتفرم توسعه اپلیکیشن های تحت موبایل و دسک تاپ برای همه سیستم عامل ها، گام بزرگی را در این راه برداشته است و زبان برنامه نویسی رسمی مایکروسافت یعنی #C یکی دیگر از انتخابهای برنامه نویسان موبایل خواهد بود. بخصوص اینکه با ارائه Net Core. در سال ۲۰۱۶ برنامه نویسان #C را به محیطهای دیگری مانند linux کشانده و جذابیت آن را بالاتر برده است. دنیای برنامه نویسی موبایل به اینجا ختم نمیشود.ساخت بازیهای کامپبوتری چه برای PC و چه موبایل بخش بزرگی از سهم بازار توسعه نرم افزار را دراختیار دارد و در این حوزه بدون شک زبان ++C به عنوان زبان اصلی موتورهایی مانند Unreal و کتابخانه هایی مانند SFML و زبان #C به عنوان زبان اصلی موتور Unity پیشتاز مورد انتخاب توسعه دهندگان هستند. همچنین زبان ++C در بستر Qt سالها برای توسعه اپلیکیشن هایی با قدرت و سرعت بالا برای سیستم عاملهایی مانند android,Meamo,Meago,IOS,Symbian مورد استفاده قرار گرفته است و هم اکنون هم در این حوزه حرف اول را میزند.پیشنهاد شگفت انگیز کدفرند،دسترسی به تمامی دوره های آموزشی کدفرند تنها با ۹۹ هزار تومانچه پلتفرمها و کتابخانه هایی برای توسعه اپلیکیشن های موبایل وجود دارد؟برخی از پرکاربرد ترین بسترهای توسعه الیکیشن های موبایل شامل موارد زیر میشود:Google Android Studio Java&KotlinMicrosoft Xamarin #cApple XCode SwiftGoogle Flutter DartIONIC JS&HTML&CSSPhoneGap JS&HTML&CSSFireBase JS&HTML&CSSFacebook React Native JS&HTML&CSSApache Cordova JS&HTML&CSSJQuery Mobile JS&HTML&CSSQt C++ & QMLUnity C# or JSUnreal C++ pythonSFMLاپلیکیشن های نوشته شده در چه دسته هایی قرار میگیرند؟اگر میخواهید برای موبای برنامه بنویسید باید ابتدا بدانید که چه چیزی میخواهید و برنامه شما چه نوع برنامه ای است. میتوان بر اساس اینکه چه نوع اپلیکیشنی نوشته میشود بستر و زبان مناسب را انتخاب کرد. از دیدگاه من تمامی اپ های موجود را میتوان در یکی از دسته های زیر قرار داد:اپلیکیشن های محتوا محور (مانند اپ هایی که برای لود اطلاعات از وب سایتها مورد استفاده قرار میگیرد)اپلیکیشن های اکشن محور (اپلیکیشنهایی کاربردی مانند برنامه های تعیین قرار یا تقویم و … که در آن UI و UX اولویت اصلی را دارند)اپلیکیشن های ارتباط محور (سیستم های پیامرسان و شبکه های اجتماعی و … که در آن بزرگی سیستم و مهندسی ارتباطات مقدم بر UI و UX میباشند)اپلیکیشن های پردازش محور (بازیهای ویدئویی و اپ های صنعتی و مورد استفاده در کاربردهایی مانند IOT که درآن استفاده از CPU و GPU و ارتباط با سخت افزار اولویت بالا را دارد)نکته : ممکن است اپلیکیشنی ترکیبی از چند نوع بالا باشد.آیا میتوانم بدون دانش برنامه نویسی و از صفر وارد برنامه نویسی موبایل شوم؟پاسخ این سئوال ساده است. اگر شما میخواهید برای بستر خاصی برنامه نویسی کنید ابتدا باید خود آن بستر را بشناسید. همچنین شما باید توانایی برنامه نویسی داشته باشید. یعنی باید بتوانید در یک زبان برنامه نویسی مسائل را به زبان کامپیوتر بنویسید. به عنوان مثال شما میخواهید برای سیستم عامل اندروید یک اپ بنویسید که ارتباط دو طرفه ای را فراهم میکند. در اینجا لازم است که شما بدانید در سیستم اندروید این ارتباط به چه شکلی انجام میشود و این یعنی شناخت سیستم عامل. همچنین برای نوشتن چنین برنامه ای باید توان نوشتن برنامه های ارتباطی (شبکه) و دانش استفاده از پروتکل های ارتباطی (HTTP و …) را داشته باشید. حتما پاسخ خود را گرفته اید.بازار کار کدام دسته از اپهای مورد ذکر بیشتر است؟میتوان گفت دسته اول و دوم یعنی اپ های محتوا محور و اکشن محور بخش بزرگتری از بازار را د ر اختبار دارند. چرا که دو دسته بعدی در استفاده های محدودی و بیشتر در شرکتهای بزرگ و در صنعت مورد استفاده قرار میگیرند.چه مسیری را طی کنم تا تبدیل به یک برنامه نویس موبایل شوم؟از مجموع نوشته های بالا میتوان مسیرهای زیر را استنتاج کرد:برای توسعه اپلیکیشن های محتوا محور :در این سطح انتخابهای زیادی و جود دارد. اگر شما برنامه نویس وب هستید و با پلتفرمهای Front End مانند React و یا Angular آشنا هستید برای ساخت این اپلیکیشن ها راه کوتاهی دارید و کافی است با انتخاب یکی از پلتفرمهای زیر اپ خود را توسعه دهید:– IONIC با زبان TypeScript و با استفاده از HTML و CSS– PhoneGap با استفاده از زبان Javascript به همراه HTML و CSS– Cordova با استفاده از زبان Javascript به همراه HTML و CSS– پلتفرم Firefox برای توسعه اپ برای KiOS با زبان JavaScritبنابراین در این سطح بسیار بهتر است که از ترکیب توسعه وب استفاده کنید که شامل دانش کافی در باره JavaScript و HTML و CSS و احتمالا TypeScript میباشد. پلتفرمهای Hybrid و آنلاین بهترین انتخاب در این سطح میباشند.البته در همین پلتفرمها برای ایجاد اپهای مورد استفاده در Android و IOS باید از SDK آنها استفاده کنید.برای توسعه اپلیکیشن های اکشن محور:هر چند در این سطح هم استفاده از پلتفرمهای Web Base و پک JS&HTML&CSS توصیه میشود. ولی از دیدگاه من بهترین بستر ها برای این سطح از اپهای موبایل که بخش بزرگی از بازار را به خود اختصاص میدهند و UI و UX در آن از اهمیت بالایی برخوردارد است. سه پلتفرم بسیار مناسب زیر هستند:– React Native با قدرت زبان JavaScript,CSSو HTML– Flutter با قدرت زبان برنامه نویسی Dart– Xamarin با قدرت گرفتن از زبان #Cبرای توسعه اپ های ارتباطی محور و بزرگ:تفاوت این سطح با سطح قبلی در بزرگی و میزان پردازش شبکه در آن میباشد لذا در این سطح Scaling و سطح مهندسی نرم افزار مقدم بر UIو UX میباشد. از این جهت میتوان بسترهای زیر را مورد انتخاب قرار داد:– Xamarin و زبان #C اگر میخواهید برای سیستم عامل های مختلف یک کد بنویسید– Android Studio با استفاده از زبانهای Java و یا Kotlin اگر میخواهید فقط برای بستر android اپ توسعه دهید– زبان برنامه نویسی Swift در بستر XCode اگر میخواهید برای بستر های مربوط به شرکت Apple برنامه نویسی کنیدبرای توسعه اپهای پردازش محور و صنعتی :در این سطح مدیریت حافظه, ارتباط با سخت افزار و استفاده از قدرت GPU و CPU اهمیت بسیار بالایی دارد. لذا باید سعی شود از پلتفرمهای مخصوص یک سیستم عامل استفاده شود و به سمت پلتفرمهای Cross نروید. این انتخابهای شامل موارد زیر میشوند:– Qt و زبان ++C با استقاده از NDK برای توسعه برنامه های قدرتمند و صنعتی تحت اندروید.– Android Studio با استفاده اززبان JAVA برا ی نوشتن اپهای قدرتمند تحت سیستم عامل اندروید– XCode با زبان Swift یا Objective C برای توسعه اپهای قدرتمند تحت IOS– موتور Unreal با استفاده از زبان ++C برای توسعه بازیهای سه بعدی موبایل– موتور Unity با استفاده از زبان #C برای ساخت بازیهای دو و سه بعدی برای هردو سیستم عامل Android و IOSنتیجه و کلام آخر:در پایان میتوان به این نتیجه رسید که برای تبدیل شدن به یک برنامه نویس موبایل ابتدا باید یک برنامه نویس و آشنا به سیستم های کامپیوتری باشید و اگر نیستید باید آموزشهای لازم برای این کار را ببینید. در مرحله بعد با توجه به سیستم عامل مورد انتخاب یا نوع اپلیکیشن مورد نظر (که توضیح داده شد) و مهارتهای قبلی در زبانهای مختلف باید مسیر خود را انتخاب کنید. https://codefriend.ir/2020/07/26/برنامه-نویسی-موبایل-و-مسیری-که-برای-آن-ب/