اگر تاکنون سری به لیست برترین و پردرآمدترین شغل های جهان زده باشید، مسلما نام برنامه نویسی را به عنوان یکی از از پول سازترین شغل های جهان در همین لیست تماشا کرده اید. هر یکسری بخش اعظم گزارش ها و تحقیقاتی که در این حوزه انجام شده مربوط به آمریکا و کشورهای اروپایی می باشد، ولی می توان مهم یه خرده تغییرو تحول آنها را به سرزمین خودمان نیز گسترش داد.
در جمهوری اسلامی ایران هنوز یک تحقیق معتبر از میزان درآمد برنامه نویسان و جایگاهی که در آن قرار دارا هستند رخ نگرفته است، البته با انجام تحقیقات محلی و بررسی موقعیت مرز و بوم متوجه می شویم که برنامه نویسی در ایران هم می تواند دوچندان پولساز باشد، به شرطی که در همین عمل حرفه ای شوید.
البته برنامه نویس های پهناور غالبا حیاتی عشق و علاقه قلبی به تکنولوژی و کامپیوتر در مسیر برنامه نویسی قدم می گذارند و به طور معمول پول معیار خیلی مهمی برای آغاز فعالیت نیست. برنامه نویسان زیادی میباشند که عاشقانه عمل خویش را دوست دارا هستند و همین علاقه باعث شده که اکثری از مواقع حتی به طور مجانی فعالیت کنند. اگر نگاهی به گیت هاب بیندازید متوجه خواهید شد که چه تعداد از پروژه ها در همین وبسایت به طور بدونپول در اختیار مردم قرار می گیرند.
چگونه برنامه نویسی را شروع کنیم؟
برای گزینش زبان برنامه نویسی مورد عشق و علاقه ات لازمه ویژگیها و کاربردهای زبانهای برنامه نویسی رو بدونی. می بایست بدونی که میخوای به جهت چه پلتفرمی برنامه بنویسی. اصلا چی میخوای بنویسی! دوست داری چه جور شغلی داشته باشی؟ اون ویژگی چه مزایایی رو در اختیارت قرار میده و…
هر خصوصیت که یک زبان برنامه نویسی مختص داره نباید به دید مزیت یا عیب مطلق اون لهجه برنامه نویسی دیده بشه. نکته با اینه که معیار مهربانی و بدی، تعیین هر گویش برنامه نویسی در جای صحیح خودشه.
برنامه نویسی سطح بالا و برنامه نویسی سطح پایین
اگر به دنبال یادگیری یک لهجه برنامه نویسی باشی به احتمال زیاد اسامی زبانهای “سطح بالا” و “سطح پایین” تا به حالا فراوان به گوشت خورده. می بایست بگم که معنا تراز بالا یا سطح تحت بودن یک گویش مسئله ای نسبیه به این معنی که بسته به لهجه هایی که دارن دارای هم مقایسه میشن یک گویش برنامه نویسی ممکنه مرحله بالا یا این که سطح پایین محسوب بشه.
به همین خاطر که فقط معنی قابل ادراک به جهت کامپیوتر عدد ها صفر و یکه، لهجه ماشین به تیتر صرفا لهجه قابل فهم برای کامپیوتر صرفا از اعداد و ارقام صفر و یک تشکیل شده. ولی کلام زدن دارای کامپیوتر به زبان صفرها و یکها کار خیلی حوصله فرساییه بنابراین زبانهای برنامه نویسی وارد عرصه شدن. گویش برنامه نویسی اسمبلی به تیتر نزدیکترین لهجه به گویش کامپیوتر به وجود اومد و بدین ترتیب از نظر نزدیکی به گویش انسان در پایینترین تراز ممکنه. هرچه میزان نزدیکی به گویش انسان و abstraction یا انتزاع یک گویش برنامه نویسی زیادتر باشه اون گویش مرحله بالاتر و از لهجه خودرو دور تره!
اولین زبانهای مرحله بالا فرترن و کوبول بودن. ممکنه در نگاه نخستین به زبانهای برنامه نویسی مرحله زیر برچسب بد یا این که ضعیف و به زبانهای برنامه نویسی مرحله بالا برچسب خوب یا کار کشته بزنید. ولی می بایست بگم این باور به طور کامل اشتباهه! ضعیف یا قوی بودن یک لهجه تماما بستگی به مورد استعمال شما داره و زبانهای برنامه نویسی مرحله بالا و تراز ذیل مزایا و معایب مختص خودشون رو دارن.
زبانهای دوچندان سطح ذیل میتونن مستقمیا و بدون نیاز به کامپایلر یا این که مفسر اجرا بشن. اهمیت اونها میتونید در اختیار گرفتن کاملی بر روی مموری کامپیوتر داشته باشی. به همین خاطر کارایی زیاد زیاد خوبی دارن. دارای زبانهای تراز تحت میتونی به جهت طاقت فرسا افزارها برنامه بنویسی و یا این که سیستم برهان بسازی. ولی اصلی وجود همگی همین مزایا برنامه تایپ کردن کلیدی اونا دوچندان سخته. به این ترتیب مدت روزگار توسعه و گسترش نرم افزار حساس اونها به شدت ارتقا پیدا میکنه.
بر مغایر زبانهای برنامه نویسی تراز پایین، خوندن، نوشتن و حفظ و بهبود برنامههای نوشته شده به زبانهای برنامه نویسی سطح بالا نظیر جاوا، سی شارپ و PHP بسیار راحته. زبانهای تراز بالا به معماری سخت افزار متعلق نیستن و اهمیت اونها شما به جای سر و کار داشتن اساسی خونههای حافظه، حساس توابع، اشیا و … سر و فعالیت دارید.
انواع پلتفرمهای برنامه نویسی
برای اینکه به مبحث انواع پلتفرمها بپردازیم نیازه که اول بدونیم پلتفورم چیه. پلتفورم در واقع بستریه که یه قابل انعطاف افزار میتونه در اون اجرا بشه. غالبا پلتفورم مهم سیستم استدلال خطا گرفته میشه در حالی که پلتفورم به مجموع دشوار افزار (مثل موبایل، کامپیوترهای دسکتاپ یا لپتاپ، کنسولها و…) و سیستم عاملهای گوناگون (مثل ویندوز 32 بیت یا 64 بیت، مکینتاش، اندروید، IOS و…) و حتی نسخههای اونها (مثل ویندوز 2008 یا مک او اس سیرا) گفته میشه.
با احتساب توضیحات بالا به طور کلی ما میتونیم بر روی سه بستر یا پلتفورم با موبایل، وب و دسکتاپ برنامه بنویسیم. اما من توی همین نوشته با این سه نوع از پلتفورمهای اصلی سر و کار دارم و صد ولی که پلتفورمهای دیگه ای نظیر ساعتهای هوشمند، لوازم خانگی هوشمند و… مهم سیستمهای استدلال و نسخههای متفاوت وجود دارن.
برنامه نویسی موبایل
برنامههای موبایل غالبا به دو گونه برنامههای اندرویدی و برنامههای IOS تقسیم میشن. قطعا حیاتی همین دو سیستم دلیل از قبل آشنا هستی. برای نوشتن اپلیکیشنهای اندروید میتونی از زبانهای برنامه نویسی مثل جاوا، سی شارپ، کاتلین، سی پلاس پلاس و… به کارگیری کنی. ولی توی کشور ایران گویش جاوا به جهت این فعالیت رایج تره.
به علاوه به جهت تایپ کردن اپلیکیشنهای IOS میتونی از گویش هایی مانند swift و objective c استعمال کنی.
برنامه نویسی وب
برنامههای وب به دو مدل برنامههای سمت کاربر (client side) و برنامههای سمت سرور (server side) تقسیم میشن. برنامههای سمت کاربر برنامه هایی هستن که روی مرورگر کاربر اجرا میشن و برنامههای سمت سرور برنامه هایی هستن که بر روی یک کامپیوتر سرور اجرا میشن ونتایج اجرای اون ها، به کامپیوتر اعضا نرم افزار ارسال میشه.
اگر قصد وارد شدن به راستا برنامه نویسی وب رو داری به جهت تعیین لهجه برنامه نویسی اولیه می بایست معلوم کنی اون زبان رو برای سمت کاربر میخوای یا این که به جهت سمت سرور. اما معمولا در موقع آغاز کار برنامه نویسی وب اولی گام ها، چه قصد رفتن به سمت کلاینت رو داشته باشید و چه سمت سرور یادگیری زبانهای html و css هست. زیرا این دو زبان مبنا برنامه نویسی وب محسوب میشن اما فارغ از اونها نیز آغاز یادگیری برنامه نویسی سمت سرور ممکنه.
برای راستا سمت کاربر زبان جاوا اسکریپت رو یاد بگیر. به جهت زمینه سمت سرور به تناسب نیاز و هدف گذاریت میتونی بین زبانهای برنامه نویسی زیادی نظیر PHP، جاوا اسکریپت، روبی و… لهجه برنامه نویسی گزینه علاقه ات رو گزینش کنی.
برنامه نویسی دسکتاپ
برنامه نویسی دسکتاپ بیشتر به برنامه نویسی برای نرم افزارهای ویندوز و مکینتاش (به علاوه لینوکس) اشاره میکنه. میتونی اهمیت به کارگیری از لهجه هایی مثل جاوا، سی شارپ، پایتون و… که اکثر زمان ها کراس پلتفورم هستن برنامه بنویسی.
برنامه نویسی کراس پلتفرم
با برنامه نویسی کراس پلتفورم میتونی به جهت همگی پلتفورمها مثل اندروید، ios، کامپیوترهای ویندوزی و … تنها حیاتی یک توشه کد زدن برنامه بنویسی. برنامه نویسی کراس پلتفورم همینطور اساسی تیتر برنامه نویسی مالتی پلتفورم شناخته میشه. همین جور برنامه نویسی به دو جور اصلی تقسیم میشه:
برنامه نویسی کراس پلتفورم بومی native cross-platform
هر سیستم دلیل موبایلی روی بسته گسترش قابل انعطاف افزاری یا software development kit (SDK) مختص خودش اجرا میشه. هر SDK از لهجه برنامه نویسی خاصی پشتیبانی میکنه. مثلا اپلیکیشنهای IOS بر روی swift و objective c اجرا میشن و اپلیکیشنهای اندروید روی java. اپلیکیشن هایی که مستقیما ذیل همین SDKها اجرا میشن به اپلیکیشنهای ساکن یا این که native دارای شهرت هستن.
اما میشه کاری کرد که یک API یا framework واحد در بین همین SDK و اپلیکیشن به تیتر یک واسط قرار بگیره .به همین ترتیب اجرای اون اپلیکیشن از لهجه برنامه نویسی مستقل میشه! تولید کننده همین API معمولا یک قابل انعطاف افزار IDE یا این که محیط توسعه و گسترش نرم افزار یکپارچه رو در اختیار برنامه نویسها قرار میده تا برنامه نویسها بتونن به راحتی و مهم استفاده از اون IDEها مهم تالیف یک بار کد، برای کلیه پلتفورمهای پشتیبانی شده خروجی بگیرن.
با این طریق همین اپلیکیشنها در غایت از SDK بومی هر پلتفورم برای اجرا شدن استعمال میکنن .یعنی در غایت تفاوت آنچنانی حیاتی برنامههای بومی ندارن. به طور مثال Xamarinو React Native جز همین گونه هستن!
روش برنامه نویسی کراس پتلفورم مزایا و معایب یگانه خودش رو داره:
مزایا آغاز برنامه نویسی کراس پلتفورم
- رابط کاربری تقریبا بومی
- پرفورمنس یا این که عملکرد بالا نسبتاً نزدیک به اپلیکیشنهای بومی
- کاهش هزینههای منابع انسانی و مالی
- توسعه سریع
- امکان به کارگیری از APIهای بومی هر پلتفورم مثل مکان یابی، دسترسی به حافظه و…
معایب آغاز برنامه نویسی کراس پلتفورم
- نیاز به تایید مجدد مارکتهای اپلیکیشن مثل اپ استور به جهت هر بار به روزرسانی
- کاملا مستقر نبودن رابط کاربری بخاطر تفاوتهای رابط کاربری اندروید و IOS
- امنیت پایین
شروع برنامه نویسی کراس پلتفورم ترکیبی hybrid cross-platform
در برنامههای موبایلی بیشتر توشه پردازشی در سمت سرور یا این که بک اند انجام میشه. به این ترتیب بزرگترین بخش همین برنامهها به رابط کاربری یا این که GUI اختصاص داره. بستههای قابل انعطاف افزار یا این که SDKهای اندروید و IOS امکانی به اسم Webview در خودشون دارن که اهمیت به کارگیری از اون یک مرورگر به اپلیکیشن طولانی تر میشه. همین مورد قضیه چه خبر خوشی به جهت ما داره؟
با به کار گیری از webview میتونی به آسانی اهمیت به کارگیری از HTML، CSS و جاوا اسکریپت اپلیکیشنهای گوشی بسازی! به همین برهان به این برنامه ها، برنامههای ترکیبی میگن. اما مشکل این دسته از برنامه نویسی اینه که برای رابطه اهمیت APIهای ساکن مثل مکان یابی و دسترسی به حافظه به یک واسط در میان جاوا اسکریپت و گویش برنامه نویسی بومی احتیاج هست. همین شیوه هم نظیر طریق قبل مزایا و معایب یگانه خودش رو داره:
مزایا
- نوشتن یک توشه کد برای تمامی پلتفرم ها
- کم کردن هزینههای حفظ اپلیکیشن به برهان مشترک بودن کد ها
- دیباگ و اشکال گیری فارغ از احتیاج به شبیه ساز هر پلتفورم
- صرفه جویی در هزینههای منابع انسانی و دوران (به این استدلال برای موقعیتهای مهم مهلت زمانی ناچیز یکی بهترین گزینش هاست!)
- راحتی کدنویسی به جهت برنامه نویسان وب
معایب
- دسترسی محدود به بعضی امکانات پلتفورم
- احتیاج به وجود یک واسط جاوا اسکریپت به native به جهت دسترسی به APIهای بومی
- آسیب پذیری و امنیت پایین
- وجود نداشتن رابط کاربری منقطع و بومی به جهت هر پلتفورم
نتیجه گیری
توی همین مطلب با گونه های زبانهای برنامه نویسی آشنا شدی و فهمیدی چطور برنامه نویسی را شروع کنیم. همینطور متوجه شدی پلتفرم چیه و به جهت برنامه تایپ کردن برای هر پلتفرم به چه زبانهای برنامه نویسی احتیاج داری. حالا نوبت توست که تصمیم بگیری! یادت نره که قطعا کل تلاشت رو بکنی قبل از شروع برنامه نویسی مسیر و چشم انداز روشنی به جهت خودت داشته باشی. تو باید مزایا و معایب هر مسیر رو دارای دید گشوده و بدون تعصب بسنجی.
اگر ایده خاصی داری و دلت میخواد به جهت اجرای اون، برنامه نویسی رو یاد بگیری بازنگری کن که بهترین پلتفرم برای اجرای ایده ات کدومه. اهمیت کدوم پلتفورم از نظر بازاریابی و تجربه کاربری میتونی رابطه بهتر و مستقیمتری اهمیت مشتریها یا کاربر هات داشته باشی؟ چقدر زمان برای اجرای اون داری؟ اگر دوست داری در یک شرکت برنامه نویسی استخدام بشی عشق داری فیلد کاریت در چه سمتی باشه؟ در چه رخ میتونی حقوق بیشتری اخذ کنی؟ در چه شکل میتونی زودتر به سرانجام برسی؟
اینا همه موقعیت مختلفی هستن که ممکنه هر فرد عشق و علاقه مند به وارد شدن به راستا برنامه نویسی لازم داشته باشه بهشون فکر کنه. پس همت کن با دید گشوده و منطقی تصمیم بگیری. تصمیم تو چیه؟ اونو کلیدی ما در میون بذار تا به جهت ادامه مسیر کمکت کنیم!