سرکی به دنیای برنامه نویسی (موبایل)

سلام =)امیدوارم که حالتون خوب باشه و سالم و سلامت باشید! انچه در ادامه میخوانید متن پادکستی هست که از اینجا ? میتونید گوش بدید و اگر هم تو کانال تلگرام ما عضو بشید باعث دلگرمیه ماس و این هم سایت ماست که توش آدرس شبکه های اجتماعی دیگه ما هست.در نهایت هم اگر سوالی داشتید میتونید توی این گروه بپرسید. اگه بلد باشیم جواب میدیم. https://castbox.fm/episode/سرکی-به-دنیای-برنامه-نویسی-(موبایل)-id2716424-id355842170?utm_source=website&utm_medium=dlink&utm_campaign=web_share&utm_content=%D8%B3%D8%B1%DA%A9%DB%8C%20%D8%A8%D9%87%20%D8%AF%D9%86%DB%8C%D8%A7%DB%8C%20%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%20%D9%86%D9%88%DB%8C%D8%B3%DB%8C%20(%D9%85%D9%88%D8%A8%D8%A7%DB%8C%D9%84)-CastBox_FM سلام.حالتون چطوره؟اینجا که اینترن پلاس پلاسه.توی اینترن پلاس پلاس ما سعی می‌کنیم تجربه های شخصی خودمون رو با منابع علمی قاطی کنیم و چیزایی بهتون بگیم که توی راه برنامه نویس بهتری شدن کمکتون کنه و سردرگمی شمارو کم کنه.با یه قسمت دیگه از سرکی به دنیای برنامه نویسی اومدیم که در مورد برنامه نویسی موبایل صحبت کنیم.کلا اپیزود هایی که با اسم سرکی به دنیای برنامه نویسی منتشر میشن یه رشته ی برنامه نویسی رو معرفی میکنیم و نقشه راهش رو نشون میدیم.من علی ام و اگه دوست دارید در مورد برنامه نویسی موبایل بدونید شما رو به خوندن ادامه ی این متن دعوت میکنم.خوب بریم سراغ اصل داستان.سال هاست که ما توی دنیای موبایل جنگ داریم سر پلتفرم ها و سیستم عامل ها.مثلا سیمبیان بود ویندوز فون و ویندوز موبایل بود.بلک بری برای خودش یه سیستم عامل داشت.یکم قبل تر از اینا یسری گوشی های جاوایی بودن. و خیلی های دیگهولی الان تقریبا دیگه میشه گفت که توی این جنگ سیستم عامل ها همه کشته شدن و فقط اندروید و ios زنده موندن. واصولا وقتی الان بحث از برنامه نویسی موبایل میشه همه ذهنشون میره سمت برنامه نویسی اندروید و ios.در وهله ی اول میریم سراغ راه های پیشنهادی خود گوگل و اپل برای برنامه نوشتن برای این سیستم عامل های دوست داشتنی و در ادامه میریم سراغ کراس پلتفرم ها و راه هایی غیر از راه های استاندارد هستن که مزایای خودشون رو دارن که با هم برسی میکنیم.برنامه نویسی اندروید (به صورت native)اول میریم سراغ اندروید که بالای ۸۰ درصد از سهم بازار رو دارهگوگل یه IDE رایگان داره (اگه نمیدونید IDE چیه ینی قسمت های قبلی سفر به اعماق کامپیوتر رو گوش نکردید)داشتم میگفتم.گوگل یه IDE رایگان در اختیار برنامه نویس های اندروید قرار داده که بهش میگن اندروید استودیو و توش میشه به زبان جاوا یا کاتلین برای سیستم عامل اندروید برنامه نوشت و تست کرد و آنالیز کرد و خروجی گرفت و خلاصه هر چیزی که یه برنامه نویس اندروید نیاز داره توی این IDE هست.راه استاندارد توسعه برنامه اندرویدی از نظر گوگل اینه. البته قبلا فقط جاوا به عنوان زبان برنامه نویسی اندروید بود ولی الان چند سالی میشه که زبون کاتلین معرفی شده و مستقیما از طرف گوگل توصیه میشه که به جای جاوا از این زبون جدید استفاده بشه چون زبون مدرنیه و کد نوشتن توش راحت تر و تر تمیز تر و کم باگ تر و در مجموع بهتره.یه نکته ی بی ربط به اپیزود: معمولا زبون هرچی جدیدتر باشه کد نوشتن باهاش راحت تر و تر تمیز تر و کم باگ تره.چرا؟چون زبون های جدید رو با توجه به مشکلاتی که زبون های قدیمی داشتن طراحی میکنن و syntax اونا رو جوری طراحی میکنن که خطا های رایجی که معمولا ادما میکنن توش سخت تر بشه و از طرفی از استایل های کد نوشتن مدرن تر هم بهره میبرن که حاصلش میشه کد های کم تر و تر تمیز تر و خوانا تر.برگردیم سر بحث اصلی.پس چی شد؟شما اگر بخواهید از راه استاندارد برنامه اندروید بنویسید تشریف میبرید اندروید استودیو رو دانلود میکنید.زبان جاوا یا کاتلین رو یاد میگیرید.کلی چیز هم نیازه که در مورد سیستم عامل اندروید و api هاش و چرخه ی حیاتش و… بدونیددر مورد api هم توی اپیزود های بعدی سفر به اعماق کامپیوتر صحبت میکنیم فقط همین قدر بگم که مثلا توی موبایل شما وقتی میخواید یه تیکه کدی بنویسید که گوشی ویبره بزنه یا نوتیفیکیشن بده یا لوکیشن رو بگیره یا با میکروفون یا بلندگو کار کنه یا اینکه برنامه های دیگه رو باز کنه و خیییییییلی چیزای دیگه باید از اندروید بخواهید که اون کارو براتون بکنه.و این ها چیزایی نیست که شما تو برنامه نویسی جاوا یا کاتلین یاد بگیرید و مربوط به خوده خوده سیستم عامل اندروید و قابلیت هایی که حین اجرا در اختیار برنامه ها قرار میده.کهتوی ورژن های مختلف اندروید یچیزایی تغییر میکنه و قابلیت های جدید اضافه میشه.و در نهایت شمام بعد از اینکه کدتون رو نوشتید از اندروید استودیو خروجی apk میگیرید و میتونید اون فایل رو تو وب سایت خودتون یا کافه بازار و گوگل پلی و… بزارید برای دانلود.ملت هم دانلود میکنن و نصب میکنن و لذت میبرن.حالا بریم سراغ مشکلاتی که ممکنه بهش بر بخورید.۱. نصب اندروید استودیو و sdk ها به خاطر تحریم های ظالمانه ی گوگل کار سختی هست.ولی خوب کلی راه برای دور زدنش هست.۲. برای انتشار برنامه ی خودتون تو گوگل پلی هم ممکنه یکم به مشکل بخورید چون هم تحریم هستیم هم کانال های مالی باز نیست که بخوایم پول بریزیم و اکانت دولوپر گوگل بخریم ولی خوب این هم چیز غیر ممکنه نیست. در نهایت میتونید برنامه ی خودتون رو توی مارکت هایی غیر از پلی استور بزاریدبرنامه نویسی ios (به صورت native)حالا بریم سراغ راهی که اپل برای برنامه نویسی ios پیشنهاد میدهای او اس هم یه IDE داره به اسم xcode که باهاش میشه برنامه ios نوشت.از نظر زبون برنامه نویسی هم قدیما objective c بود ولی چندین ساله که اپل swift ‌رو اپل معرفی کرده که جایگزین objective c هست و همون داستانایی که در مورد جاوا و کاتلین داشتیم رو اینجا هم داریم ینی اپل مستقیما توصیه میکنه که از swift برای برنامه نویسی ios استفاده کنید و بسیار ساده تر و مدرنتر از objective c است.نکته ناراحت کننده اینه که شما این محیط رو فقط میتوانید روی سیستم عامل OSX داشته باشید که سیستم عامل لپ تاپ ها و کامپیوتر های اپل است.پس اگر بخواید برنامه نویسی ios کنید باید یا یه مک بوک یا کامپیوتر اپل بخرید که خوب میدونید که………. گرونه :)اما راه دوم اینه که سیستم عامل OSX رو روی مجازی ساز روی سیستم عاملی که الان دارید بیارید بالا که کار خیلی راحتی نیست و بعد از بالا اورندش هم زیاد بازدهی خوبی نداره ولی خیلیا به راه اول ترجیح میدن که میتونید حدس بزنید چرا.راه سوم اینه که روی سیستم غیر اپلی خودتون بدون مجازی سازی سیستم عامل OSX رو نصب کنید که بهش میگن هکینگتاش. که این روش هم تا جایی که من فهمیدم اصلا آسون نیست و نیاز به دانش فنی داره. و تو شروع کار میتونه شمارو خسته و ناامید کنه از زندگی.اما نکته ی جذاب اینه که این سختی ها باعث شده که تعداد برنامه نویس های ios خیلی کمتر از اندروید باشه و این در حالی هست که اکثر برنامه های موبایلی که نوشته میشن ios هم میخوان و در نتیجه تقاضای ios خیلی هم کم تر از اندروید نیست و در نتیجه ی همه ی این حرف هایی که زدم میشه فهمید که استخدام شدن و کار گرفتن به عنوان برنامه نویس ios راحت تر از اندروید باشهحداقل این چیزیه که تو این سال ها از برنامه نویس های ios زیاد شنیدمتازه درآمد برنامه نویس ios هم به همین دلایلی که گفتم به صورت میانگین بیشتر از اندروید هست. عرضه و تقاضاس دیگه.پس یه دوره بکنیم:۱. شما سیستم عامل مک میخواید که روش xcode نصب باشه.۲. شما باید زبون برنامه نویسی swift رو بلد باشید.۳. شما باید api های ios رو بشناسید و همون قصه هایی که در مورد اندروید گفتم ولی این بار در ios.حالاااااااااااابریم سراغ انتشار اپلیکیشندر حالت عادیحالت عادی ینی حالتی که شما اونور آب های نیلگون خلیج فارس دارید زندگی میکنید.شما باید یه مبلغی رو به اپل پرداخت کنید که اکانت دولوپر اپل داشته باشید که الان که من دارم این پادکست رو ضبط میکنم ۹۹ تا پول رایج مملکت بلاد کفر رو شما باید سالیانه بپردازید که بتونید توی app store بزارید برنامه اتون رو.اما بریم سراغ حالت غیر عادی که توش اپل اپلیکیشن های ایرانی رو حذف کرده و امکان انتشار برنامه های ایرانی تو app store رو نداریم.البته امیدوارم که اون موقعی که شما دارید این پادکست رو گوش میدید این عزیزانی که مارو تحریم میکنن سر عقل اومده باشن.الان تو این حالت غیر عادی شما میتونید اپلیکیشن های خودتون رو توی مارکت های ایرانی منتشر کنید که اینکه چطوری کار میکنن و چه مزیت ها و مشکلات احتمالی میتونن داشته باشن یه پادکست جدا میتونه باشه ولی میتونید برید همین الان شرایطشون رو بخونید ببینید که حرف حسابشون چیه. کراس پلتفرم:اول پلتفرم رو تعریف کنیم:به محیطی که یه برنامه توی اون اجرا میشه میگن پلتفرم که ترجمه فارسیش میشه سکو.بیخیال.سکو؟حالا یه موقع به نوع خاصی از سخت افزار میگن پلتفرم.یه موقع به یه سیستم عامل میگن پلتفرم.یه موقع به مرورگر ها میگن پلتفرم.حتی جاوا چون برنامه هاش روی ماشین مجازی جاوا که توی اپیزود های قبلی در موردش صحبت کردیم اجرا میشه هم میگن پلتفرم جاوا.حالا کراس پلتفرم یا چند سکویی ینی اینکه شما با یک بار کد نویسی با یه زبون برنامه نویسی بتونید اون رو روی چند تا پلتفرم اجرا کنید.این اصطلاح فقط مخصوص موبایل نیست و ما تو برنامه نویسی دسکتاپ هم این اصطلاح رو داریم یا حتی توی بازی سازی که مثلا یعنی این بازی هم رو pc هم رو xbox هم رو playstation اجرا میشه.ولی خوب ما اینجا داریم در مورد برنامه نویسی موبایل صحبت می کنیم منظورم میشه سیستم عامل های موبایل که اندروید و ios بودنحالا این کراس پلتفرم ها چطوری کار میکنن:اینا میان یه محیط اجرا رو روی محیط اجرای اندروید میارن بالاحالا مشابه همین رو روی ios میارن بالاحالا یه کدی که بتونه روی اون پلفرمی که روی هر دو پلتفرم ios و android اجرا شده اجرا بشه در واقع میتونه روی هر دو سیستم عامل اجرا بشه.حالا مشکلش چیه:۱. هر چی این لایه های پلتفرمی که رو هم رو هم میاد بیشتر بشه سرعت اجرا برنامه میاد پایین یعنی اگه ما مستقیم برای پلتفرم سخت افزاری برنامه بنویسیم بیشترین سرعت رو میتونیم تجربه کنیم ولی ما میایم برای پلتفرم هایی که روی سخت افزار نصب شدن برنامه مینویسیم که اون جوری سرعتش کم تره حالا باز روی این پلتفرم ها اگه رو هم رو هم پلتفرم بیاریم بالا سرعت یا فنی تر بخوایم بگیم پرفورمنس میاد پایین.۲. مشکل دوم اینه که انجام کار های مختلف روی سیستم عامل های مختلف راه های مختلفی وجود داره مثلا برای اینکه توی ios یه فایل صوتی رو بخونیم و صداش رو پخش کنیم با حالتی که تو اندروید بخوایم این کار رو بکنیم فرق داره حالا بگذریم از اینکه تو دوتا نسخه اندروید هم ممکنه فرق داشته باشه.حالا باید چی کار کنیم؟دو راه داره:۱. یه لایبری پیدا کنیم که اون کار واحد رو به یه شکل ثابت توی هر دو سیستم عامل انجام بده و توابع اون رو صدا بزنیم۲. خودمون یه لایبری بنویسیم که اون کار ثابت رو به یه شکل توی هر دو سیستم عامل انجام بدهجا داره یادآوری کنم که هیچ کدوم از راه های برنامه نویسی کراس پلتفرم توصیه شده از طرف apple , google نیستن. و این دوتا کمپانی راه های استانداردی که در موردشون صحبت کردیم رو پیشنهاد میکنن ولی خوب چون با یه بار کد نوشتن میشه رو دوتا پلتفرم موبایلی اجرا شه خیلی از شرکت ها و استارت آپ ها به خاطر کاهش دادن هزینه ی تیم برنامه نویسی موبایل میرن سمت این کراس پلتفرم ها و خوب ایده خوبیه به شرطی که برنامه خیلی درگیر api های مختلف سیستم عامل نباشه که دردسر نشه چون اونجوری هزینه ی تولید نرم افزار بیشتر هم میشه. و البته همه چی هزینه نیست و کیفیت هم مهمه که معمولا اون دوتا راه استانداردی که گفتیم کیفیت نرم افزار خروجی بیشتری نسبت به کراس پلتفرم ها دارن.برنامه نویسی کراس پلتفرم رو از کجا شرو کنیم:حالا بریم سراغ اینکه برنامه نویسی کراس پلتفرم رو از کجا باید شروع کنیم.همون طور که گفتیم کراس پلتفرم یه اصطلاحه و پیاده سازی های مختلفی ازش برای زبون های برنامه نویسی مختلف وجود داره.و این کراس پلتفرم ها هم یکی دوتا نیستن که بخوایم در موردشون مثل اون دو تا حالت استاندارد کامل توضیح بدیم. و به نظرم این مفاهیمی که گفتم مهم تر بود از صرفا معرفی کردن چنتا فریمورک.نهایتا ما به چند تا از معروف هاش اشاره میکنیم:react native:اولیش react native هه که محصول فیسبوکه و یکی از خیلی معروف ها تو این زمینه است و جدای اینکه خود فیسبوک برنامه هاش خودش مثل اینستاگرام و واتساپ و… خیلی اپلیکیشن های معروف دیگه ای مثل دیسکورد و اسکایپ و… رو با این نوشتن.زبون اصلیش هم جاوا اسکریپته.flutter:دومین چیزی که میخوایم بهش اشاره کنیم flutter هست که محصول گوگل هست و به شدت داره رشد میکنه و طرفدار هاش روز به روز بیشتر میشن و فقط هم به اندروید و ios خلاصه نمیشه و میتونید چیزایی که با فلاتر میزنید رو روی وب و حتی دسکتاپ هم اجرا کنید.زبون برنامه نویسیش هم دارت هست.xamarin:سومی زامارینه که محصول ماکروسافته و با c# میتونید برنامه android , ios بنویسید که دات نت کار ها که تو ایران هم تعدادشون کم نیست خیلی دوست دارنش.به جز این سه تا, حالا بازم هست مثلا ionic و cordova و QT و خیلیای دیگه که واقعا هر کدوم حرفی برای گفتن دارن(مخصوصا QT).کلا هم به نظر من بحث کراس پلتفرم ها الان داغه و چند سال دیگه در جنگ بین کراس پلتفرم ها یکی یکی کشته میشن و چند تا دونه باقی میمونه که همه از اونا استفاده میکنن. همون اتفاقی که برای سیستم عامل های موبایل افتاد.خوب دیگه به اخر این قسمت رسیدیم و امیدوارم که مسیر راه برنامه نویسی موبایل رو تونسته باشم بهتون نشون بدم.نمیدونم این قسمت رو از کجا دارید گوش میدید ولی ما تو شبکه های اجتماعی مختلفی هستیم و آدرس همه ی اونا رو میتونید توی وبسایت ما به ادرس internplusplus.ir ببینید.خدافظ.