من می خواهم برنامه نویس شوم - قسمت چهارم

سلام، تا قسمت سوم از این سری آموزشی با خیلی اصطلاحات آشنا شدین و در فضای لازم برای انتخاب یک زبان برای شروع ماجراجویی تازه در زندگی قرار گرفته اید.در این قسمت در کنار شما هستم تا بتوانید انتخاب خوبی با توجه به علایق خود داشته باشید.بعد از انتخاب زبان محبوب خود، باید دست به کار شوید و از طریق بوت کمپ ها یا منابع آموزشی رایگان و غیر رایگان اینترنتی مانند سایت های آموزشی و یا دانلود ویدئو یا کتاب آموزشی در خصوص زبان انتخابی شروع کنید. بعد از این مقاله لحظه ای درنگ جایز نیست. اگر زبان انگلیسی شما خوب است از سایت های دانلود و سایت git.ir می توانید انواع ویدئو آموزشی به زبان انگلیسی را دریافت کنید. کتب انگلیسی هم هست که البته پیشنهاد میکنم با ویدئو شروع کنید. چرا که کتب مطالب را به تفصیل بیان می کنند که خوبی آن این است که اصولی و درست یادمیگیرید و بالاخره بهتر است به آن رجوع کنید ولی بدی آن این است که اگر در ابتدای راه باشید شاید حوصله شما را سر ببرد تا بخواهید یک کار کوچک انجام دهید. در خصوص منابع فارسی هم الان دیگر سایت های زیادی هستند که با یک جستجوی ساده آن ها پیدا خواهید کرد.در خصوص این سری آموزشی نهایتا با دو یا سه مقاله بیشتر جهت اشاره به برخی اصطلاحات دیگر که احتمالا در ابتدای راه با آنها برخورد خواهید کرد در خدمت شما خواهم بود، اما بعد از این مقالات، تنها با خواندن مقالات برنامه نویس نخواهید شدمتاسفانه برخلاف استمرار و تاکید بر نوشتن حتی ساده ترین کدها برخی گمان می کنند این مطلب ساده بود، تنها کافیست آن را بخوانم، این حقیقت را از زبان همه برنامه نویس ها به شما می گویم تا زمانی که کد نویسی را شروع نکنید و تا زمانی که تمرین نکنید حتی ساده ترین برنامه ها که در ابتدا با آن برخورد می کنید مانند جمع زدن دو عدد، فکر بلند پروازانه نوشتن بزرگترین و کاملترین نرم افزار اتوماسیون اداری بومی کشور یا کار در شرکتی مانند گوگل تحت عنوان برنامه نویس را از سرتان بیرون کنید. بله شما در سخت ترین مرحله از شروع زبان برنامه نویسی هستید. نوشتن کدهایی که شاید بنظر هیچ کارایی نخواهند داشت و دوست دارید هرچه سریع تر از این مرحله عبور کنید. گذر از این مرحله که بعدها به آن می خندید کار افراد مثبت اندیشی مانند شماست. کسانی که ثابت قدم هستند و همیشه در هر کاری بهترین هستند. بعد از آشنایی با زبان ها، زبان مورد علاقه خود را انتخاب کنید، یادگیری آن زبان را شروع کنید، نرم افزارهای مورد نیاز را نصب کنید و از پرسیدن نترسید... قصدمان این است که معرفی اجمالی از زبان های برنامه نویسی مختلف داشته باشیم تا بتوانید زبان مورد علاقه خود را انتخاب کنید. توضیحاتی شامل میزان سختی یادگیری، دستمزد احتمالی و توضیحاتی مختصر راجع به خود زبان. در دنیای کامپیوتر بیش از ۶۰۰ زبان برنامه نویسی مختلف بوجود آمده است که ما در اینجا به لیستی شامل ۱۰ زبان محبوب و پر استفاده در سال های اخیر اکتفا خواهیم کرد. انتخاب بین ۱۰ زبان هم مشکل است. البته شاید شما دوست داشته باشید به سه زبان مسلط شوید که حتما می توانید اما بهتر است تا زمانی که در یکی از آنها مهارت کافی را بدست نیاورده اید وارد زبان دیگری نشوید و در تصمیم خود مصمم باشید (مگر برای انتخاب خود نیاز داشته باشید امتحان کنید). مقالات متعددی را قبل از شروع به نوشتن این مقاله مطالعه کردم تا بتوانم بهترین شروع را بجای نوشتن نام زبان و تعاریفی در مقابل آن داشته باشم. دو سوال اساسی که در شروع آموزش در ذهن همه افراد است راجع به اینکه من توسعه دهنده چه نوع برنامه ای باشم بهتر است؟ کدام زبان برای آن کار از همه بهتر است؟ اعتراف می کنم این دو سوال بسیار سخت است و پاسخ مستقیمی ندارد و به عوامل بسیاری بستگی دارد. اما به طور خلاصه سعی می کنم پاسخی اجمالی در خصوص بازار ایران به شما بدهم البته نیاز به پرسش از افراد بیشتری نیز دارید، به علاوه اینکه حتما راجع به زبان ها توضیحات اجمالی را مطالعه کنید. در ایران توسعه برنامه های تحت دسکتاپ طرفداران زیادی ندارد بازار محدود و عدم حمایت از حق کپی و عدم وجود فرهنگ آن به دلیل عادت استفاده از برنامه های کپی با کیفیت اروپایی از عوامل آن است. همچنین توسعه و شخصی سازی سیستم عامل برای استفاده در سخت افزارهای خاص نیز همینطور. سیستم های امبد تنها در مصارف نظامی استقبال شده و به صورت محدود در برخی تولید کنندگان محصولات اینترنت اشیاء (معمولا تکنولوژی سخت افزار و نرم افزار هر دو وارد می شود).اما بصورت کلی می توان از زبانی که برای توسعه برنامه های تحت وب است برای توسعه برنامه تحت سیستم عامل هم استفاده کرد. به غیر از زبان های استثنایی. هرچند صرف اینکه بتوان با یک زبان برنامه تحت وب نوشت تنها عامل انتخاب آن زبان نخواهد بود. هزینه تامین نیرو برای نگهداری و توسعه آن. میزان پاسخگویی با توجه به حجم درخواست ها نیز موثر است و ابزارهایی که برای توسعه در آن زبان وجود دارد.علت انتشار قسمت سوم همین انگیزه موجود در ایران برای برنامه های تحت وب و برنامه های موبایل (اندروید و ای او اس) است که طرفداران بیشتری دارد (برنامه های موبایل نیز اکثرا به تنهایی روی موبایل کار نمیکند و باید به سروری برای ارسال و دریافت اطلاعات با توجه به هدف برنامه وصل شود). در نتیجه شما در این رده موقعیت شغلی بیشتری خواهید داشت و البته رقیبان بیشتری هم همچنین که بسته به کیفیت کار و سطح دانش در شرکت های خصوصی و بسته به میزان رابطه شما با یکی از مدیران در برخی شرکت های دولتی کار مناسب را پیدا خواهید کرد (البته شرکت های دولتی گذری برای رسیدن به سمت مدیریت بدون تلاش است و تا آن زمان حقوق مناسبی نخواهید داشت) و اما در دنیا توسعه دهندگان C و ++C بیشترین حقوق را دارند و البته کار آنها بسیار سخت تر و نیاز به دانش و تجربه بیشتری دارند، بعد از آن شاید به جرأت بتوان زبان جاوا را قرار داد سپس زبان های PHP, Python, Ruby و بعد از آن #C و جاوااسکریپت و Objective-C و باقی زبان های پر طرفدار، دسته بندی ارائه شده دقیق نیست بلکه تنها زبان های بسیار پر طرفدار را از جهت میزان سختی یادگیری و بیشترین درآمد ترتیب کرده است. بهتر است از خود بپرسیم قرار از چه کاری انجام دهیم. با کمک مقاله ای در سایت Udemy و کمی تغییرات سعی می کنیم موضوع را روشن بیان کنیم.من میخواهم توسعه دهنده سایت باشم، و اپلیکیشن های تحت وب بنویسمشما به یادگیری زبان SQL که برای کار بر روی پایگاه داده است (محل ذخیره اطلاعات برنامه شما) نیاز خواهید داشت. بعلاوه زبان JavaScript که توضیح داده خواهد شد. و حداقل با یکی از زبان های Java, python, ruby, php و یا #C می توانید بصورت پروژه ای یا تحت عنوان برنامه نویس در شرکت های مختلف کار کنید. می توانید به توسعه نرم افزارهای تحت وب نظیر برنامه های سازمانی (مثلا حضور و غیاب) و ... یا توسعه وب سایت ها مشغول شوید. در این حیطه کاری البته دو دسته کلی نیز وجود دارد: Back-end Developer: به توسعه دهندگانی گویند که مهارت و تجربه کافی در زمینه توسعه برنامه اصلی دارند و با زبان های اشاره شده فوق کار می کنند. و Front-end Developer: به کسانی گویند که دانش بسیار خوب از وب، فعلا تنها زبان JavaScript و هم Html, Css این افراد وظیفه پیاده سازی طراحی ظاهری صورت گرفته توسط طراحان (به صورت معدود افرادی نیز هستند که گرافیک نیز میدانند و کار طراحی را نیز خود انجام می دهند - که توصیه نمی شود). معمولا رابطه خوب و صمیمانه ای بین این گروه و طراحان رابط کاربری باید وجود داشته باشد. یک بحث سخیف بین برخی گروه ها بک اند. فرانت اند. طراحان رابط کاربری و طراحان گرافیک ممکن است به وجود بیاید که یک گروه حس برتری نسبت به گروه دیگر پیدا کند. مانند این است که دست شما به پای شما بگوید من می توانم این بدن را راه ببرم پس وجود تو بی دلیل است و من به تو برتری دارم. در کل اگر مدیریت بخشی با شماست و حتی پذیرفتن سلیقه دیگران برای شما سخت است بهتر است اجازه دهید هر کسی کار خود را انجام دهد. اگر احساس می کنید بهتر از آن ها هستید شما نیاز به متخصص ندارید. یا خودتان انجام دهید یا برای این کار در آگهی استخدام شرکت عنوان شغلی را از طراح و گرافیست یا طراح رابط کاربری یا مدیر محصول و ... به کارگر ساده تغییر دهید.من می خواهم توسعه دهنده بازی های کامپیوتری باشمبازی های کامپیوتری شامل بازی های کوچک تحت وب، برنامه های موبایل و بازی های تحت دسکتاپ هستند لذا زبان هایی که با آن ها می توان کار کرد شامل: C, C++, Java, Objective-C, JavaScript, Html5 و #C است. در زمان گذشته از ActionScript هم استفاده می شد که اکنون منسوخ شده است. البته ما به همین بخش که مربوط به برنامه نویسی است بسنده می کنیم.بازی های رایانه ای فضای بسیار گسترده ای دارد. با توجه به نوع بازی. معماری آن و مدل درآمدی و ... شغل های متفاوت و متنوعی دارد.من می خواهم توسعه دهنده برنامه های موبایل باشمهمانطور که در ابتدا گفته شد باید یا با زبان Java یا Kotlin و یا Objective-C کار کنید البته زبان جدید Swift نیز برای توسعه برنامه برای اپل به این جمع ملحق شده.همچنین با استفاده از زبان JavaScript می توان برنامه های بسیار ساده ای نیز نوشت و به طریقی برای هر دو سیستم عامل از این برنامه خروجی گرفت اصطلاحا برنامه های نوشته شده با جاوااسکریپت را هیبریدی می نامند از تکنولوژی های این روش می توان از cordova نام برد.یک روش دیگر نچندان مرسوم نیز وجود دارد که با استفاده از زبان #C کد خود را می نویسید و این کد به زبان Java و یا Objective-C تبدیل می شود (با استفاده از xamarin) و سپس می توان خروجی لازم برنامه ها را گرفت که این روش فقط برای کسانی توصیه می شود که توسعه دهندگانی هستند که این زبان ها را می دانند و نرم افزارهای ساده ای نیاز دارندشما تنها با داشتن روش اول می توانید ادعا کنید که توسعه دهنده برنامه های موبایل هستید. نوشتن برنامه با روش اول را اصطلاحا نوشتن برنامه های Native می گویند. من می خواهم توسعه دهنده نرم افزار باشمدر حالت کلی برنامه های تحت دسکتاپ را خیلی ساده نرم افزار می نامیم. برای توسعه نرم افزار حتما به زبان SQL نیاز خواهید داشت. و می توانید حداقل یکی از زبان های C, C++, C#, Java و یا Python را برای این کار انتخاب کنید. حال به سراغ توضیح مختصر راجع به زبان هایی می رویم که در این مقاله به آن ها اشاره شده است زبان C:به شخصه اولین زبانی که برای یادگیری برنامه نویسی انتخاب کردم C بود و مثل همه زبان ها اولین کاری که در شروع آموزش با آن برخورد خواهید کرد چاپ جمله «سلام دنیا!» یا جمع دو عدد است. به جرأت می توان گفت برای شروع یادگیری برنامه نویسی، زبان C می تواند بسیار مفید باشد. این زبان قابلیت کار با سخت افزار را نیز دارد و زبان پایه ای است که زبان های مدرن دیگر از جمله C++, Java, C#, JavaScript, و Perl از آن بوجود آمده اند. این زبان در سال ۱۹۷۲ (۱۳۵۰ شمسی) متولد شده است. زبان ++C:با وجود اینکه زبان C از لحاظ کارایی بسیار عالی است اما احساس نیاز به وجود شی گرایی برای کارهای بزرگتر زبان ++C را پایه گذاری کرد. این زبان در سال ۱۹۸۳ (۱۳۶۱ شمسی) بوجود آمد. زبان سی پلاس پلاس یک زبان بسیار عالی برای خلق برنامه های بسیار عالی است از جمله نرم افزارهایی که با این زبان توسعه داده شده می توان به Google Chrome, Mozilla Firefox, Winamp و همچنین سری Adobe مانند فوتوشاپ اشاره کرد. همچنین بسیاری از بازی های تحت دسکتاپ و سیستم عامل ویندوز با استفاده از زبان ++C نوشته شده اند. یادگیری این زبان سخت است و زمان و صبر بیشتری نسبت به زبان های دیگر نیاز دارد اما به همان نسبت کارهای بزرگتری می توان با آن انجام داد و از نظر موقعیت شغلی نیز میانگین بیشترین حقوق را نسبت به زبان های دیگر دارد. زبان Java و Kotlin:زبان جاوا در شرکت سان مایکروسیستم و در سال ۱۹۹۰ بوجود آمد و در حقیقت اولین زبانی است که ذاتا شی گراست. و با شعار «یک بار بنویس، همه جا اجرا کن (WORA)» به وجود آمد. فقط کافی است یک بار برنامه نوشته شده با جاوا را اجرا کنید و فارغ از نوع سیستم عامل و سخت افزار در صورتی که jvm یا ماشین مجازی جاوا در سیستمی نصب باشد کد کامپایل شده شما بدون مشکل اجرا خواهد شد. البته تمام زبان ها در گذر زمان با ارائه پکیج ها یا نرم افزارهای مختلف سعی در رفع این مشکل کرده اند و به نوعی موفق هم بوده اند. اما حضور jvm در جاوا به آن برتری داده است. کد یک بار بیشتر نیاز به کامپایل ندارد و علاوه بر آن فرقی نمی کند که سیستم عاملی که کد در آن اجرا می شود ۳۲ بیت خواهد بود یا ۶۴ بیت و ... و بهینگی از نظر کارایی باعث شده تا جاوا برای نوشتن نرم افزارهای بسیار بزرگ بیشترین استفاده را داشته باشد. بعد از خرید شرکت سان توسط اوراکل و پس از مدتی مجددا شاهد درخشش جاوا بوده ایم و قابلیت هایی که در نسخه ۸ ارائه شده گویای پیشرفت آن است. هر چند در فاصله خرید جاوا توسط شرکت اوراکل و انتشار نسخه های 7 و 8 در طول 8 سال باعث شکل گیری زبان هایی مانند اسکالا و کاتلین برای ارائه زبانی قوی تر و بهتر شد و اکنون زبان کاتلین مورد استقبال قرار گرفته و گوگل آن را زبان اصلی برای توسعه اندروید معرفی کرده (قبل از این کار جاوا به عنوان زبان اصلی شناخته می شد.)زبان کاتلین نیز از JVM استفاده می کند.زبان جاوا برای نوشتن هر نوع نرم افزاری که توضیح داده شد مناسب است از بازی گرفته تا نرم افزارهای تحت وب. از ماشین لباسشویی گرفته تا شاتل فضایی. زبان #C:این زبان در سال ۲۰۰۰ توسط مایکروسافت ارائه شد و از نظر دستوری بسیار شبیه جاوا است و اگر در زبان جاوا مهارت دارید به سادگی می توانید این زبان را نیز فرا بگیرید. شعار سی شارپ این بود که زبان به نیرومندی سی پلاس پلاس و قابلیت های جاوا را تجربه خواهید کرد. با این زبان می توان برنامه های تحت وب، برنامه های تحت سیستم عامل ویندوز و برنامه های تحت سیستم عامل موبایل ویندوز فون توسعه داد.زبان Objective C: این زبان توسط اپل ارائه شده. این زبان نیز مانند سی پلاس پلاس به منظور ایجاد قابلیت شی گرایی در زبان قدرتمند C و در همان سال ارائه شده. گرچه این زبان به منظور توسعه نرم افزارهای مناسب برای سیستم عامل های مخصوص شرکت اپل توسعه داده شد. با قابلیت های این زبان می توانید نرم افزارهای تحت سیستم عامل های کامپیوتر و گوشی های شرکت اپل توسعه دهید. البته اگر به دنبال توسعه نرم افزارهای تحت این سیستم عامل ها هستید صبر کنید زبان دیگری نیز وجود دارد. <h4>زبان PHPیکی از پر استفاده ترین زبان های برنامه نویسی برای توسعه نرم افزارهای تحت وب، کد شما سمت سرور قرار می گیرد و خروجی به صورت HTML به مرورگر کلاینت باز می گردد. از آنجا که این زبان متن باز است و استفاده و توسعه آن برای همه آزاد است هم شاهد نرم افزارهای مختلف رایگان و البته تجاری بسیار و هم ماژول های بسیاری برای آن هستید. کمپانی Zend که در توسعه php نقش مهمی دارد جهت افزایش بهینگی php تلاش بسیاری کرده، facebook نیز یک ماشین مجازی برای php نوشته است (که البته کارایی آن ۱۰۰ درصد نیست) همچنین در php ورژن ۷ شاهد افزایش فوق العاده سرعت پردازش و توان پاسخ به درخواست های بیشتر هستیم. و در نسخه 8 قابلیت های دیگری نیز به آن اضافه شده که کار با آن را لذت بخش تر می کند.یادگیری این زبان نسبت به جاوا و خانواده سی راحت تر است. همچنین اسکریپت های رایگان بسیاری برای مقاصد مختلف در این زبان وجود دارد مانند جوملا، وردپرس، دروپال و ... که می توانید از آن ها استفاده کنید. زبان Python:یادگیری این زبان از php نیز راحت تر است اما کارایی بسیار بالایی دارد. این زبان در گذشته زیاد مورد استقبال قرار نگرفته بود اما بهتر است بدانید زبان سازمانی شرکت گوگل پایتون است و همچنین نرم افزار محبوب اینستاگرام نیز با این زبان توسعه داده شده. مانند php برای python نیز فریم ورک هایی برای توسعه نرم افزارهای تحت وب بوجود آمده.زبان پایتون یک زبان دانشگاهی و قوی است که برای بسیار کارها مانند پردازش تصویر و هوش مصنوعی و یادگیری ماشین نمی توان با آن رقابت کرد. هرچه راجع به این زبان مطالعه کنید بیشتر شیفته آن خواهید شد.زبان Ruby:مانند زبان پایتون ساده است اما تمرکز آن برنامه های تحت وب بوده است. نام این زبان همواره در کنار فریم ورک مخصوص توسعه برنامه های تحت وب آن یعنی Ruby on rails برده می شود. و پرژه های زیادی با این فریم ورک خواهید یافت.زبان Swift:این زبان به تازگی در سال ۲۰۱۴ توسط اپل ارائه شده و سعی در استفاده از بهترین قابلیت های C و Objective-C در کنار سادگی داشته است. یادگیری آن ساده و برای توسعه نرم افزارهای تحت سیستم عامل های شرکت اپل استفاده می شود.زبان SQL: این زبان زبان توسعه نرم افزار نیست. بلکه زبان Query (یا اصطلاحا پرس و جو - برای ثبت داده یا جست جوی یک داده) است. این زبان برای ایجاد و مدیریت پایگاه های داده است و از دستورات بسیار ساده ایجاد یک جدول و ثبت یک داده یا فراخوانی آن و دستورات بسیار پیچیده برای تهیه یک گزارش از یک پایگاه داده بسیار بزرگ با داده بسیار زیاد را شامل می شود. بسته به نوع نرم افزاری که در حال توسعه آن هستید ممکن است نیاز به دانش کسی پیدا کنید که چندین سال در زمینه پایگاه های داده تجربه دارد. در هر صورت بسیار کم پیش میاید که شما را فقط برای دانشتان در زمینه SQL بخواهند و این زبان به تنهایی کارایی ندارد مگر در موارد خاص. پایگاه داده های بزرگ با حجم تراکنش بسیار بالا.زبان جاوااسکریپت:این زبان به دلیل کاهش لود بالا بر روی سرور برای برخی کارهای قابل انجام در سمت کلاینت مورد توجه قرار گرفت، ابتدا این زبان سمت کلاینت بشمار می رفت و تنها برنامه ها یا دستورات تقریبا ساده ای را شامل می شد که همراه کد html در مرورگر کلاینت اجرا میشد. مثلا نمایش یک ساعت یا خاصیت جابه جایی باکس ها با استفاده از ماوس در مرورگر، نمایش یک گالری عکس و ... اما اکنون برنامه های تحت وب در قسمت بک اند نیز به کمک پروژه node.js با این زبان برنامه های سمت سرور هم توسعه داده می شود. همچنین فریم ورک هایی نیز به این منظور توسعه داده شده علاوه بر این این زبان در جاهای دیگری مانند پایگاه داده های جدید مانند MongoDB نیز قابل مشاهده است. https://virgool.io/CodeLovers/%D9%85%D9%86-%D9%85%DB%8C-%D8%AE%D9%88%D8%A7%D9%87%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%B4%D9%88%D9%85-%D9%82%D8%B3%D9%85%D8%AA-%D9%BE%D9%86%D8%AC%D9%85-rthcol8ut0sq موفق باشید.