سوییفت یا جاوا

پیش نوشت:
“خواهش میکنم زودتر این درس رو انتشار بدین. زبان سویفت واقعا عالیه، بهتر از اندروید هست.”

کامنت بالا در یکی از سایت های آموزشی منتشر شده بود که جرقه اولیه را برای انتشار این پست مهیا کرد.


سوییفت یاد بگیرم یا جاوا (اندورید)؟
مساله ای که ذهن ها را درگیر می کند!!!!! برای پاسخ به این پرسش در گام اول باید تعصب را کنار گذاشت. یعنی چی؟ یعنی که هر کسی (چیزی) را بهر کاری ساخته اند! چی؟ موبایل، موبایل است دیگر…. بلی؛ موبایل، موبایل است با این حال فلسفه وجودی هر کدام، نحوه برخورد با مسایل موجود، نحوه تعامل کاربران و هزاران فاکتور دیگر در به وجود آمدن هر کدام از این سیستم ها، ادامه مسیرشان و تغییر دیدگاهشان نقش های اساسی را بازی کرده اند. تا جایی که بتوانم سعی می کنم بدون تعصب این پست را به انتها برسانم.

من به عنوان کسی که تجربه بسیار کمی در زمینه برنامه نویسی بخصوص برنامه نویسی موبایل دارد اندکی تایمی است مشغول یادگیری سوئیفت و مشتقات پیرامون آن هستم؛ مدتی را هم برنامه نویس جاوا بودم( یک نیم نگاهی هم به ساختار اندروید انداخته ام). در اینجا قصد دارم این دو زبان برنامه نویسی در حوزه موبایل و مسائل دور تا دور آن را بررسی کنم ( همه اش تجربه شخصی است).

ساختار زبان

اگر مثل من از زبانی مانند جاوا به سوئیف نگاه کنید تا حدودی شوکه خواهید شد. اگر با زبان C و C# آشنا باشید تعجب زیادی نخواهید کرد. گرامر زبان سوئیف اصلا مشابه جاوا نیست، تا حدودی حالت گنگ بودن دارد. پس باید همت کنید و اولین سختی آن را قبول کنید. یکی از دلایل کمپانی اپل برای ایجاد زبان سوئیفت ساختار پیچیده objective-c بود. با کمی گوگل کردن و دیدن سینتکس زبان قبلی ios متوجه این سختی خواهید شد. سوئیفت آمد تا که کارها را راحت تر کند؛ اما بنظر من جاوا بسیار راحت تر و قابل فهم تر است.

محیط توسعه یکپارچه

تنها محیط توسعه کد برای نوشتن اپ آیفونی Xcode است. در حالی که در اندروید شما حداقل دو محیط اکلیپس و اندروید استودیو (واقعا عالیه) را دارید. محیط Xcode یک فضای بدون امکانات است. بنظر می رسد اپل تمایل زیادی برای هزینه کردن رفع ایرادات این محیط ندارد. زمانی که در کد شما خطایی بروز می دهد چند حالت زیر به وجود می آید:
1. به ابتدای خطی که خطا حادث شده است برده می شوید ولی توضیحی بابت علت خطا به شما گزارش داده نمی شود. آیا nil بوده است ( یه چیری تو مایه های همون null خودمون ;) ) یا چیز دیگری.
2. به اولین خط برنامه برده می شوید بدون اینکه بدانید کجا مشکلی پیش آمده است :/ بله…. همین طوری است.
3. به شما اطلاعات گمراه کننده داده می شود. این یکی دیگه نوبرش است :|
4. با احتمال بسیار پایینی به شما اطلاعات صحیح از نوع خطا و آدرس خطا می دهد.

اما در اندروید استودیو که محصول کمپانی Jet Brain و مشابه محصول موفق IntelliJ همان کمپانی است شما با یک bug report بسیار عالی مواجه هستید. زمان دیباگ کردن امکانات بسیار خوبی در اخیتار شما قرار می گیرد و …

جامعه کاربران فعال

اندروید: 2.920.000.000

سوئیفت: 55.400.000

فقط کافی هست دو کلمه بالا را گوگل کنید (برای اینکه نتایج درست تری به دست آید swift language را جستجو کنید). تعداد نتایج یافت شده شما را شوکه خواهد کرد. شاید بگید سوئیف جوان است و سر همین نتایج کمی دارد. objective c چی؟ جدید که نیست؟ 17,600,000 . حالا نحوه حستجو را می بریم سمت stackoverflow :

اندروید: 1,001,040
سوئیفت: 152,893
آبجکتیو سی: 277,468
این اعداد تعداد سوال هایی هست که هر کدام از این کلمات تگ شده اند. به وضوح مشخص است اگر شما دچار مشکلی در برنامه نویسی سمت ios شوید رفع آن معلوم نیست با چه کسی است.
طبق تحقیقات انجام شده در سال 2016 تقریبا 12 میلیون توسعه دهنده در جهان مشغول فعالیت هستند که نیمی از آنها تقریبا برنامه نویس اندروید و 2.8 میلیون نفر برنامه نویس ios هستند (+)

حقوق و مزایا

میزان درآمد برنامه نویس ios در ایران قطعا با اختلاف بسیاری بالاتر از اندروید است ( با هر میزان تجربه). اما این ملاک درستی برای نتیجه گیری کلی نیست. برای همین منظور به لینک های زیر سر بزنید ( خلاصه اش این است: در کانادا و امریکا بعضی جاها اندروید بیشتر حقوق می گیرد، بعضی جاها بر عکس است و اختلاف آنها زیاد چشم گیر نیست)
(+)، (+)، (+)، (+) و (+)

 دیوایس ها

برای برنامه نویسی به زبان شیرین سوئیفت شما نیازمند یک لپ تاپ مک ( فکر ماشین مجازی اصلا به سرتان نزد)، برای تست نیازمند حداقل یک آیفون هستید و هر سال نیازمند بروز کردن سیستم خود هستید. اما در مورد اندروید قضیه کاملا بر عکس است.

آینده

به قطع یقین سازنده هر محصولی خود را رهبر آینده آن حوزه می داند. اما بنظر من ( کاملا شخصی است) با این روندی که اپل و گوگل در توسعه محصولات خود دارند و با توجه به اینکه دهه آینده دهه موبایل و اینترنت اشیا است کمپانی اپل یک شکست بزرگ خواهد خورد. گوگل زبان جدیدی به نام کاتلین ( kotlin) رو کرده است ( البته کمپانی JetBrain آن را توسعه داده است اما رسما برای برنامه نویسی موبایل با پلتفرم اندروید است) که بسیار شبیه زبان سوئیفت است به دنبال جذب برنامه نویسان حوزه ios است.

 

نتیجه گیری:

امیداورم که بی طرفانه نوشته باشم :دی و نتیجه گیری را به خودتان واگذارکرده باشم. اگر نظری دارید خوشحال میشم کامنت بگذارید.

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