منطق فازی (fuzzy logic) چیست؟
دی ۹, ۱۳۹۵کش (Cache) پردازنده چیست؟
دی ۹, ۱۳۹۵هدف این مقاله این است که با مقایسه درآمد، محبوبیت و آینده مربوط به هر کدام از زبان های برنامه نویسی شما را راهنمایی کند تا بتوانید برای پا گذاشتن در این عرصه و شروع برنامه نویسی بهترین تصمیم را گرفته و زبان مورد علاقه خود را انتخاب نمایید.
مقدمه
این نکته که میزان تقاضا برای استعداد های برتر در زمینه علم، فناوری، مهندسی و ریاضی بسیار بالاست و این افراد درآمد خوبی کسب می کنند چیز جدیدی نیست. در ایالات متحده، میزان آگهی های اشتغال آنلاین برای شغل های مرتبط با نرم افزار بین سال های 2007 تا 2012 ، 31% افزایش پیدا کرد که تقریبا 3 برابر سریع تر از سایر آگهی ها است. آمار وزارت کار آمریکا برآورد می کند که مشاغل مربوط به توسعه دهندگان نرم افزار بین سال های 2012 تا 2022 با نرخ 22% افزایش پیدا کند. میانه درآمد برای توسعه دهندگان اپلیکیشن ها در ماه می 2014 برابر 95510 دلار بوده است.
اگر به دنبال این هستید که برنامه نویسی یاد بگیرید، تعداد زیاد زبان های برنامه نویسی ممکن است شما را گیج کند. چه زبانی را باید یاد بگیرید؟ هدف این مقاله این است که با مقایسه درآمد، محبوبیت و آینده مربوط به هر کدام از زبان ها شما را راهنمایی کند.
بررسی اجمالی زبان های برنامه نویسی
قبل از این که وارد مقایسه زبان های برنامه نویسی شویم، بیایید اول زبان هایی که مورد مقایسه قرار خواهند گرفت را بررسی کنیم.
زبان های برنامه نویسی پویا
این باور وجود دارد که یادگیری زبان های پویا برای مبتدی ها راحت تر است زیرا این زبان ها انعطاف پذیر و سرگرم کننده هستند. شما می توانید خیلی سریع یک اپلیکیشن را از صفر و با تعداد خط های کد کم طراحی کنید. هیچ قانون سفت و سختی نیز وجود ندارد که به شما تحمیل کند برنامه را چگونه بنویسید تا مطابق میل شما رفتار کند.
با توجه به این که زبان های پویا، اغلب زبان های خیلی سطح بالا هستند شما زمان کمتری را صرف یادگیری جزئیات می کنید و به جای آن تمرکز اصلی بر روی یادگیری مفاهیم برنامه نویسی است. خود این موضوع یکی دیگر از عواملی است که باعث محبوبیت زبان های پویا میان افراد تازه کار می شود زیرا توانایی ساخت برنامه های متفاوت و دیدن سریع نتایج تلاش هایشان به این افراد انگیزه می دهد.
JavaScript
نباید این زبان را با Java اشتباه گرفت. JavaScript یک زبان سمت کاربر(Client Side) است که برای توسعه سمت کاربر(Front-end development) مورد استفاده قرار می گیرد. JavaScript با همه ی مرورگر ها سازگاری دارد و از آن برای طراحی اپلیکیشن های تعاملی تحت وب استفاده می شود. این کار اغلب توسط کتابخانه هایی مانند jQuery و چارچوب های سمت کاربر مانند AngularJS، Ember.js، React و … انجام می شود.
امروزه می توان با کمک پلتفرم Node.js از JavaScript به عنوان یک زبان سمت سرور نیز استفاده کرد و اگرچه Node.js پلتفرمی نسبتا جدید است اما تعداد استفاده کنندگان از آن روز به روز در حال افزایش است. همچنین با استفاده از JavaScript و با کمک چارچوب هایی نظیر phonegap می توانید اپلیکیشن های موبایل هیبریدی بسازید. همچنین هدف پروژه React Native شرکت فیسبوک این است که به شما اجازه دهد تا با استفاده از JavaScript بتوانید اپلیکیشن های بومی(native) موبایل طراحی کنید.
با این وجود، JavaScript زبان سختی به شمار می رود زیرا یک زبان نوع گذاری نشده(Untyped) به شمار می رود و در نتیجه اشکال زدایی آن سخت است. البته نسخه هایی از این زبان به صورت ایستا نیز وجود دارد که به عنوان مثال می توان به TypeScript مایکروسافت و یا JSX که React از آن استفاده می کند نام برد.
Ruby
این زبان که به گونه ای طراحی شده بود که بتواند به طور همزمان هم سرگرم کننده و هم کاربردی و پربازده باشد توسط چارچوب Ruby on Rails – یک چار چوب نرم افزاری تحت وب که برای رضایت برنامه نویسان طراحی شده بود – به محبوبیت رسید. با توجه به این که دستورات Ruby مشابه زبان انگلیسی است و Rails ابزار هایی دارد که کار های معمول در برنامه نویسی را از همان ابتدا برای کاربر اسان می کند بسیاری توصیه می کنند که زبان Ruby را به عنوان اولین زبان برنامه نویسی یاد بگیرید.
Ruby اغلب برای برنامه نویسی سمت سرور مورد استفاده قرار می گیرد و سایت های محبوبی چون Airbnb، Shopify، Bloomberg، Hulu، Slideshare و بسیاری دیگر توسط Ruby on Rails ساخته شده اند.
Python
Python یکی دیگر از زبان هایی است که برای افراد مبتدی به شدت توصیه می گردد و محبوب ترین زبان مقدماتی در دانشگاه های برتر امریکا به شمار می رود. برنامه نویسان از Python برای ساخت نرم افزار های تحت وب و نرم افزار های دسکتاپی به طور مشابه استفاده کرده اند. این زبان ابزار های بسیارخوبی برای داده کاوی در اختیار دارد. همچنین، پایتون به طور خاص نزد جامعه آکادمیک برای مسائل علمی مربوط به کامپیوتر ها، تحلیل داده ها و بیوانفورماتیک به شدت محبوب است.
Google، Dropbox، Pinterest، Instagram، Reddit، BitTorrent، Civilization IV و بسیاری دیگر توسط زبان Python ساخته شده اند.
PHP
PHP یک زبان برنامه نویسی سمت سرور است و اغلب تصور می رود که این زبان برای افراد مبتدی مناسب است زیرا می توان راحت تر درک کرد که یک کد به زبان PHP چه کاری انجام خواهد داد در نتیجه یادگیری آن خیلی سخت نیست. بیشتر وب سایت ها با استفاده از PHP ساخته شده اند به خاطر این که تحخصص اصلی این زبان برای استفاده در وب است.
Facebook، Wikipedia، Yahoo!، Tumblr، WordPress و خیلی های دیگر توسط PHP طراحی شده اند.
زبان های برنامه نویسی ایستا
برنامه هایی که با استفاده از زبان های ایستا نوشته می شوند اغلب مقیاس پذیرتر و پایدار تر هستند و قابلیت نگهداری بیشتری نیز دارند. زبان های ایستا معمولا در یافتن خطاها به وسیله کنترل تایپ سخت گیرانه تر عمل می کنند و برای ساخت یک نسخه اولیه از نرم افزار به زمان بیشتری نیاز دارند. موتور بازی ها، اپلیکیشن های موبایل و نرم افزار های ارتباط با سرور در سطح تجاری معمولا با استفاده از زبان های ایستا نوشته می شوند.
Java
به عنوان یک زبان با هدف کلی و عمومی، از Java برای ساخت اپلیکیشن های اندروید، نرم افزار های دسکتاپ و بازی های کامپیوتری استفاده می شود. همچنین از Java اغلب به عنوان یک زبان سمت سرور در برنامه نویسی های سمت سرور در سطح تجاری استفاده می شود. 90 درصد از 500 شرکت ثروتمند آمریکا از Java نیز استفاده می کنند.
Hadoop یک چارچوب محبوب بر مبنای Java است که برای ذخیره و پردازش داده های بزرگ استفاده می شود و شرکت هایی چون یاهو، فیسبوک و آمازون از آن استفاده می کنند.
C
C اغلب برای ساخت برنامه های سیستم استفاده می شود و در واقع زبان بین المللی بین سیستم های عامل محسوب می شود.
C تقریبا بر روی همه زبان های برنامه نویسی که در این مقاله آن ها را بررسی خواهیم کرد تاثیر گذاشته است( به خصوص بر روی Objective-C و C++). پس اگر شما C را به خوبی یاد بگیرید در یاد گرفتن زبان های محبوب دیگر با مشکل زیادی روبرو نخواهید شد. چون C برای اجرای دستورات ساده به کد های نسبتا پیچیده ای نیاز دارد اگر افراد مبتدی این زبان را به عنوان زبان اول خود انتخاب کنند احتمالا در حفظ انگیزه خود با مشکل روبرو خواهند شد. با این وجود یادگیری C قطعا به شما به عنوان یک برنامه نویس کمک خواهد کرد.
Objective-C / Swift
Objective-C لایه ای است که بر پایه زبان C نوشته شده است. این باعث می شود که در گروه زبان های ایستا قرار بگیرد اما از این زبان برای برنامه نویسی پویا هم می توان استفاده کرد. Swiftشرکت اپل زبانی ایستا است که به گونه ای طراحی شده که با Objective-C سازگار باشد اما ساختار ایستای آن باعث می شود تا در برابر خطاها بیشتر مقاوم باشد.
هدف Swift که از Python الهام گرفته است این است که یادگیری آن برای افراد مبتدی در برنامه نویسی راحت باشد و به گونه ای طراحی شده که برخی از مشکلات Objective-C را برطرف کند.
C++ (سی پلاس پلاس)
C++ یک زبان بسیار قدرتمند است که بر پایه C نوشته شده است. این زبان برای ساخت نرم افزار سیستم طراحی شده اما از آن برای ساخت بازی/ موتور بازی ها، نرم افزار های کامپیوتری، نرم افزار های موبایل و نرم افزار های تحت وب استفاده می شود.
C++ به حدی قدرتمند و سریع است که فیسبوک چند بخش با عملکرد قوی و قابلیت اطمینان بالا را به وسیله این زبان ساخته است. بسیاری از نرم افزار ها شامل مجموعه Adobe، Amazon، Paypal و Chrome توسط این زبان نوشته شده اند. مشابه C، C++ نیز برای یادگیری افراد مبتدی به صورت خودآموز کمی سخت است پس اگر تصمیم گرفته اید C++ را به عنوان اولین زبان برنامه نویسی خود یاد بگیرید سعی کنید تا از یک معلم کمک بگیرید.
C# (سی شارپ)
C# (سی شارپ) طراحی شده تا برای .NET framework مایکروسافت، که عمدتا بر روی ویندوز اجرا می شود مورد استفاده قرار بگیرد.
C#برای طراحی وب، طراحی بازی و طراحی های عمومی مایکروسافت مورد استفاده قرار می گیرد. اگرچه C# در گذشته زبانی چند پلتفرمی نبود اما شرکت Xamarin در حال کار بر روی پروژه ای با کد منبع باز به نام Mono است که هدف اصلی آن فراهم کردن قابلیت استفاده از زبان C# در سایر پلتفرم ها و ایجاد ابزار های برنامه نویسی مناسب برای برنامه نویسان لینوکس است. اخیرا نیز می توانید با استفاده از Xamarin از C# برای ساخت اپلیکیشن های موبایل بومی برای ios و اندروید استفاده کنید.
سایر زبان ها
SQL
SQL( Structured Query Language) یک زبان پرس و جو است که از آن برای ارتباط با پایگاه های اطلاعاتی استفاده می شود. اگرچه از SQL نمی توان برای ساخت برنامه های موبایل استفاده کرد اما برای مدیریت داده های موجود در اپلیکیشن ها که از سامانه مدیریت پایگاه داده رابطهای استفاده می کنند، به کار برده می شود.
فرصت های شغلی زبان های برنامه نویسی
حالا شما چیز هایی در مورد زبان های برنامه نویسی می دانید و احتمالا دیدی نیز نسبت به میزان سختی آن ها به دست آورده اید. با این وجود همه زبان ها میزان تقاضا و درآمد یکسانی ندارند. اگر هدف شما برای یاد گرفتن یک زبان برنامه نویسی پیداکردن یک موقعیت شغلی مناسب است و با شنیدن این که یک زبان چقدر سخت است انگیزه خود را برای یادگیری آن از دست نمی دهید راهنمایی هایی برای کمک به انتخاب صحیح شما ارائه شده است.
بر اساس درآمد تخمین زده شده سایت indeed.com که این آمار را با بررسی آگهی های اشتغال به دست آورده می توانیم زبان های برنامه نویسی را به 9 دسته تقسیم بندی کنیم.
متوسط درآمد برنامه نویسان در آمریکا در سال 2016
متاسفانه در این خصوص آمار جامع و کاملی از متوسط در آمد این برنامه نویسان در ایران وجود ندارد که بتوان به طور دقیق آن را منبع قرار داد، اما نمودار زیر میتواند بیانگر این مساله در کشورهای توسعه یافته با بازار کاری بسیار مناسب می باشد.
بر اساس این نتایج، این گونه به نظر می رسد که زبان Swift بیشترین درآمد را برای شما به همراه خواهد داشت. در عین حال C++, Java، Ruby، Python و C نیز انتخاب های خوبی به شمار می روند. همچنین اگر دغدغه اصلی شما میزان درآمد است به نظر می آید JavaScript، C#، SQL و PHP گزینه های ایده آلی در مقایسه با زبان های دیگر محسوب نمی شوند… یا شاید هم بشوند!!!
فاکتور های زیادی می توانند بر روی میزان درآمد متوسط تاثیر بگذارند که به عنوان مثال می توان به تقاضا میزان آگهی هایی که وجود دارد)، عرضه ( چند برنامه نویس آن زبان به خصوص را می دانند) و تجربه (یک برنامه نویس تازه کار طبیعتا درآمد کمتری نسبت به یک شخص پر سابقه خواهد داشت) اشاره کرد. پس ایده خوبی است که قبل از هر گونه نتیجه گیری، نگاه عمیق تری به این فاکتور ها داشته باشیم .
روند مشاغل
بر اساس زبان برنامه نویسی که بلد هستید چقدر احتمال دارد تا کار پیدا کنید؟ در شکل زیر روند تغییرات میزان شغل های مرتبط با هر زبان ارائه شده است.
می توان در شکل بالا مشاهده کرد که زبان های C، SQL، Java و JavaScript اغلب در آگهی های اشتغال مورد اشاره قرار می گیرند همچنین زبان های C#، C++ و Python نیز مورد استفاده قرار می گیرند و یاد گرفتن آن ها مفید است.
اما اگر هدف شما این است که در یک کسب و کار نوپا (استارت آپ) کار کنید احتمالا تغییرات روند مشاغل که از سایت indeed.com به دست آمده معیار مناسبی نخواهد بود. سایت AngelList جایی است که بیشتر آگهی های مربوط به استارت آپ ها در آنجا مطرح می شود. ما میزان تقاضا برای مهارت های برنامه نویسی را بر اساس میزان آگهی های فرستاده شده برای هر زبان در سایت AngelList مورد بررسی قرار می دهیم.
این بار JavaScript پر طرفدار ترین مهارت به شمار می رود اما به نظر می رسد استارت آپ ها Python و Ruby را بیشتر از Java، C، C++ یا C# ترجیح می دهند.
بازار عرضه برنامه نویسی
می خواهیم ببینیم آموزش دهندگان برنامه نویسی در وبسایت Codementor (یک وب سایت مرجع در خصوص آموزش زبان برنامه نویسی به صورت کلاس های زنده) چه زبان هایی را بلد هستند.
توزیع آموزش دهندگان مختلف بر اساس زبان های برنامه نویسی در سایت Codementor
مشخص است که این آمار به هیچ وجه آماری دقیق از وضعیت فعلی بازار کار ارائه نمی دهد اما می تواند ایده کلی بسیار خوبی از وضعیت کنونی به ما بدهد. همان طور که مشاهده می شود، متخصصین Objective-C به شدت کمیاب هستند. این در حالی است که بازار اپلیکیشن های موبایل مدتی است که به طرز فوق العاده ای طرفدار پیدا کرده و به شدت پر رونق است. با توجه به کمبود برنامه نویسان Objective-C، هزینه جبران این کمبود افزایش حقوق برنامه نویسان این زبان است.
در طرف مقابل، PHP میزان نیروی آماده به کار مناسبی دارد که این به این معناست که کارفرمایان گزینه های بیشتری دارند و در نتیجه در زمینه میزان حقوق قدرت چانه زنی بیشتری دارند. اما قبلا دیدیم که میزان تقاضا برای PHP به اندازه تقاضا برای زبان های Java، SQL و یا JavaScript نیست در نتیجه برنامه نویسان PHP درآمد کمتری نسبت به برنامه نویسان سایر زبان ها دارند.
JavaScript بیشتر یک استثنا محسوب می شود. با وجود این که این زبان بیشترین میزان عرضه را دارد در رده آخر میزان درآمد قرار نگرفته است. در ادامه این مقاله JavaScript را به طور مجزا مورد بررسی قرار می دهیم.
بازه درآمد زبان های برنامه نویسی
حالا که ایده ای در مورد میزان عرضه و تقاضا برای هر زبان به دست آورده اید می خواهیم میزان درآمد احتمالی شما را بر اساس اطلاعات موجود در آگهی های اشتغال بررسی کنیم. داده ها از داده های سایت gooroo.io به دست آمده اند که در آن میزان درآمد از میانگین بازه حقوق پیشنهادی در آگهی های اشتغال محاسبه می شود.
در این شکل می توان مشاهده کرد که برنامه نویسانی که Ruby، C++ یا Java می دانند به نظر درآمد اولیه بالاتری دارند. Python و Ruby بیشترین میزان درآمد احتمالی را دارند. این به این معناست که برنامه نویسان ماهر Ruby یا Python کمیاب هستند در حالی که میزان تقاضا برای آن ها زیاد است. به نظر می اید JavaScript افت شدیدی را در میزان درآمد احتمالی تجربه کرده است چون مقدار درآمد احتمالی برای این زبان در اپریل 2015 به 188168 دلار در سال رسید اما در حال حاضر این مقدار تقریبا برابر 124000 دلار است. با این وجود JavaScript یک استثناست که در ادامه مورد بررسی قرار خواهد گرفت.
حالت خاص: چارچوب های JavaScript
مقایسه زبان JavaScript در برابر سایر زبان های برنامه نویسی نمایی غیر دقیق از میزان درآمد شما در حالتی که این زبان را بدانید ارائه خواهد داد.
همان طور که در بررسی کلی زبان های برنامه نویسی اشاره شد JavaScript یک دسته بسیار بزرگ است. چارچوب های زیادی توسعه یافته اند تا برنامه نویسی وب سمت کاربر را راحت تر کنند. پس اگر تنها JavaScript و jQuery را می دانید احتمالا درآمد کمتری نسبت به سایر برنامه نویسان JavaScript که با یک چارچوب خاص نیز آشنا هستند خواهید داشت.
بیایید به میزان درآمد متوسط برنامه نویسان مسلط به چارچوب های JavaScript در آمریکا نگاه کنیم ( البته می توان گفت Reactو Backbone چارچوب نیستند و کتابخانه محسوب می شوند و همچنین Nodejs بیشتر یک محیط به شمار می رود).
میزان درآمد متوسط خیلی هم بد نیست! به خصوص React دورنمای بسیار روشنی دارد. البته این مقایسه تنها برای این است که شما بتوانید یک دید کلی به دست بیاورید همچنین تخمین های سایت indeed.com نیز اندکی متفاوت هستند و میانگین آن ها بیشتر از 105000 دلار است. برای یادگیری این تکنولوژی ها باید JavaScript بلد باشید که این زبان را به زبانی نسبتا پر سود تبدیل می کند.
حال میزان تقاضا برای توسعه دهندگان این چارچوب ها را مورد بررسی قرار می دهیم.
Node.js برای برنامه نویسی سمت سرور استفاده می شود پس اگر بخواهیم تنها چارچوب های سمت کاربر را مورد بررسی قرار دهیم مشخص است که AngularJS با میزان تقاضای فوق العاده بالای خود برنده این رقابت است. پس اگر می خواهید وارد برنامه نویسی سمت کاربر JavaScript شاید بخواهید AngularJS را یاد بگیرید.
در طرف مقابل، React یک تکنولوژی نسبتا جدید است و با سرعتی که می تواند با سرعت گسترش AngularJS در مراحل اولیه خود رقابت کند در حال گسترش است. به احتمال زیاد React هنوز هم در مرحله گسترش به سر می برد و ممکن است در آینده به طور گسترده مورد تقاضا قرار بگیرد زیرا در کل نسبت به AngularJS سازگار تر است و تجربه بهتری را برای کاربران فراهم می کند.
منابع زبان های برنامه نویسی
اگر اطلاعات زیادی در مورد دنیای برنامه نویسی ندارید احتمالا می دانید که برخورداری از حمایت سایر برنامه نویسان بسیار مهم و کمک کننده است، به خصوص اگر خودتان می خواهید به تنهایی یک زبان برنامه نویسی را یاد بگیرید.
عضویت در یک جامعه حمایتی برنامه نویسی مطمئنا پیشرفت شما در برنامه نویسی را بسیار اسان تر خواهد کرد.
StackOverflow
StackOverflow بزرگترین انجمن برنامه نویسی است که توسط برنامه نویسان سراسر دنیا برای کمک کردن و یا کمک گرفتن مورد استفاده قرار می گیرد .به طور طبیعی ما هم می خواهیم بررسی کنیم یک زبان برنامه نویسی چقدر بزرگ یا محبوب است و همچنین انجمن مربوط به آن زبان چقدر کمک کننده خواهد بود.
محبوبیت زبان های برنامه نویسی
بر اساس دنبال کنندگان تگ ها در StackOverflow می توان به محبوبیت هر کدام از زبان ها پی برد.
از بررسی روند تغییرات تقاضا برای مشاغل می دانیم که بیشترین تقاضا برای برنامه نویسان Java و JavaScript وجود دارد پس اصلا نکته عجیبی نیست که بیشترین تعداد دنبال کننده را داشته باشند. در حال حاضر JavaScript بیشترین تگ مورد استفاده در StackOverflow است و Java را پشت سر گذاشته است.
البته به اعتقاد خیلی از برنامه نویسان میزان دنبال کنندگان تگ های جاوا اسکریپت در وب سایت StackOverflow نمیتواند دلیلی بر بالا بودن محبوبیت این زبان باشد بلکه میتواند دلیلی بر پیچیدگی بالای این زبان بوده که باعث به وجود آمدن فُروم ها ، تگ ها و سوالات زیادی در خصوص این زبان برنامه نویسی شده است.
SQL، Ruby و Swift کمترین تعداد دنبال کننده را دارند البته دلیل آن احتمالا این است که Ruby صرفا برای برنامه نویسی وب استفاده می شود و Swift نیز یک زبان نسبتا جدید به شمار می رود.
نرخ جواب های StackOverflow
این سایت یک قانون نانوشته دارد که می گوید باید جمله بندی سوالتان صحیح باشد در غیر این صورت کسی زحمت پاسخ دادن به آن را به خودش نمی دهد. با در نظر گرفتن این نکته، بیایید بررسی کنیم چقدر احتمال دارد که سوال شما برای هر زبان پاسخ داده شود.
بر اساس اطلاعات بالا، اگرچه کاربران کمتری C، SQL و C++ را دنبال می کنند اما بیشتر از 60 درصد سوالات مربوط به این زبان ها پاسخ داده می شوند. افرادی که در زمینه برنامه نویسی آگاه به شمار می روند احتمالا بیان می کنند که زبان های C و C++ زبان های پیشرفته ای هستند که این به این معناست که کاربرانی که سوال مطرح می کنند تجربه بیشتری در برنامه نویسی دارند و می دانند چگونه سوالات خود را به صورت شفاف بیان کنند. از طرف دیگر از SQL برای ساخت چیزی استفاده نمی شود.
نکته ای که قابل توجه است این است که برنامه نویسان Python و Ruby در StackOverflow بسیار فعال و حمایت کننده هستند. افراد مبتدی معمولا در پرسیدن سوالاتشان به شکل صحیح با مشکل روبرو می شوند و همان طور که قبلا گفته شده Python و Ruby برای افراد مبتدی به شدت توصیه می شوند. با وجود این قضیه و با وجود این که این زبان ها نسبتا محبوب نیز هستند دارای نرخ جواب 60 درصد در 30 روز هستند.
از طرف دیگر، با وجود این که PHP تعداد دنبال کنندگان زیادی دارد اما یکی از بدترین نرخ های پاسخ دهی را دارا می باشد. این به این معناست که افراد زیادی در مورد PHP سوال می پرسند ولی تنها عده کمی جواب سوالشان را دریافت می کنند.
GitHub
وقتی وارد برنامه نویسی شوید به تدریج یاد خواهید گرفت که اگر امکان داشته باشد بهتر از یک راه حل موجود برای پروژه های خودتان استفاده کنید. معمولا این راه حل از پروژه های کد منبع باز (اوپن سورس) به دست می آیند و GitHub مرکز اصلی این پروژه ها است. کاربران می توانند به پروژه هایی که دوست داشتند ستاره بدهند و هر چقدر یک پروژه ستاره های بیشتری داشته باشد احتمال دارد مفید تر باشد.
در نتیجه، با بررسی داده های GitHub می توان اسانی نسبی برنامه نویسی با زبان های مختلف را مورد بررسی قرار داد. همچنین می توانیم یک ایده کلی در ارتباط با این که یک زبان چقدر سریع در حال ساخت تکنولوژی های جدید می باشد به دست آوریم. بدون توضیحات اضافه دیگر، در پایین نمودار ساده ای دیده می شود که توزیع پروژه های محبوب GitHub را نمایش می دهد.
مشخص است که حتی اگر منابع آموزشی و دستورالعمل ها را به حساب نیاوریم JavaScript بیشترین ابزار ها و فناوری های جدید را دارا می باشد. JavaScript زبانی است که بسیار سریع در حال حرکت است و نرخ ریزش سالیانه بسیار بالایی برای چارچوب ها و تکنولوژی های جدید دارد تا جایی که حتی برنامه نویسان حرفه ای نیز ممکن است برای همگام شدن با تکنولوژی های جدید با مشکل مواجه شوند. به علاوه، به غیر از پلتفرم Node.js، از JavaScript معمولا برای برنامه نویسی سمت کاربر استفاده می شود در نتیجه این زبان به طور مستقیم با زبان های سمت سرور مانند Ruby، Python، Java و PHP وارد رقابت نمی شود. با در نظر گرفتن این نکات اصلا عجیب نیست که JavaScript چنین اختلاف چشمگیری با سایر زبان ها داشته باشد.
از طرف دیگر Ruby و Objective-C نیز ابزار ها و منابع زیادی برای توسعه دارند. نکته جالب این است که در مقایسه های سایت StackOverflow دیدیم که هر دو زبان به اندازه زبانی مثل Java محبوب نیستند اما برنامه نویسان به طور کلی پروژه های کدمنبع باز آن ها را کاربردی تر دیده اند. اگر تعداد کل پروژه های انجام شده برای زبان ها را بررسی کنید این قضیه برای Objective-C کاملا درست است.
همچنین، بیشتر پروژه های کد منبع باز که به زبان C یا C++ نوشته شده اند برای توسعه این زبان ها به کار نمی روند بلکه تنها ابزاری هستند که برای کمک به برنامه نویسان در حالت کلی نوشته شده اند( مثلا متداول ترین تفسیرگر زبان Python، Cpython نام دارد که به زبان C نوشته شده است). همان طور که در مقدمه مربوط به معرفی زبان های برنامه نویسی گفته شد C و C++ اغلب برای ساخت نرم افزار های سیستمی به کار می روند پس منطقی است که پروژه های کد منبع باز موجود در GitHub نیز ابزار های مربوط به سیستم باشند. با وجود این بحث ها می توانید چیز های زیادی از این پروژه ها یاد بگیرید.
در آخر، PHP با وجود این که به طور گسترده مورد استفاده قرار می گیرد اما از نظر منابع دسترس از سایر رقیبان عقب است. در مورد C#، مایکروسافت قصد دارد بسیاری از خدمات خود را به صورت منبع باز ارائه کند پس در آینده ای نزدیک شاهد افزایش پروژه های مربوط به این زبان در GitHub خواهیم بود.
آینده ی هر کدام از زبان های برنامه نویسی
یک زبان برنامه نویسی در آینده چقدر مفید و مناسب خواهد بود؟ اول از همه این که آینده یک زبان بیشتر از همه به رشد جامعه استفاده کنندگان از آن بستگی دارد. نیروی های جدید و افرادی که به تازگی یک زبان برنامه نویسی را یاد می گیرند یکی از عوامل اصلی محبوبیت یک زبان به شمار می روند و همچنین باعث خواهند شد که آن زبان همچنان از منابع مناسب بهره ببرد. می خواهیم ببینیم مردم علاقه به یادگیری کدام زبان برنامه نویسی دارند.
به نظر می آید Python، JavaScript ، C# و Swift بیشتر میزان افزایش علاقه به یادگیری را داشته اند. بر اساس روند های فعلی موجود می توان نتیجه گیری های زیر را انجام داد:
JavaScript
بدون شک JavaScript به شدت محبوب تر خواهد شد به خصوص در حال حاضر که می توان از آن برای برنامه نویسی سمت سرور نیز استفاده کرد و حتی با آن اپلیکیشن های بومی موبایل طراحی کرد( با استفاده از React Native). JavaScript با سرعت نسبتا سریع، ابزار ها و بروزرسانی های بیشتری را دریافت می کند پس می توانید انتظار داشته باشید در آینده نیز همچنان بسیار مهم و حیاتی باقی بماند.
Ruby
استارت آپ ها عاشق Ruby on Rails هستند. بسیاری از وبسایت های مشهور مانند Airbnb، Twitch، Hulu و غیره با استفاده از Ruby on Rails طراحی شده اند که این به این معناست به توسعه دهندگان Ruby نیاز خواهند داشت. به اضافه، چون برنامه نویسان از کار با Ruby on Rails لذت می برند و یادگیری آن نیز نسبتا آسان است این زبان همچنان نزد تازه وارد های برنامه نویسی محبوب خواهد بود.
البته ظهور Node.js بدون شک بر روی محبوبیت Ruby تاثیر خواهد گذاشت. در حال حاضر Node.js توانسته در Github گوس سبقت را از Rails برباید. اگر چه این امر نشانه ای قطعی نیست که Node.js می تواند از Rails پیشی بگیرد اما باید در نظر داشته باشیم چند سال قبل Rails هم توانست بزرگترین چارچوب تحت وب Python به نام Django را که برای توسعه سمت سرور استفاده می شد از دور رقابت خارج کند و Rails تعداد ستاره های بیشتری نسبت به Django داشت.
به احمال زیاد روند جدید برای اپلیکیشن های ایزومورفیک بر روی میزان استفاده Rails تاثیر خواهد گذاشت زیرا این روند جدید باعث بهبود عملکرد اپلیکیشن در فضای وب می شود. اپلیکیشن های ایزومورفیک باید بر روی پلتفرم Node.js اجرا شوند که این پلتفرم نیز به زبان JavaScript –همان زبانی که در برنامه نویسی سمت کاربر هم مورد استفاده قرار می گیرد- است. جذابیت این که تنها لازم است در یک زبان ماهر باشید( JavaScript) ممکن است برخی از افراد تازه کار را از یادگیری Ruby منصرف کند. زبان Go شرکت گوگل یکی دیگر از جایگزین های سمت سرور است که نظرات را به خودش جلب کرده است.
با وجود همه این ها، چون Rails از بروزرسانی های مداوم بهره می برد برای مدتی نه چندان کوتاه مناسب خواهد ماند به خصوص با توجه به این که دارای جامعه کاربری وفادار و هزاران ابزار مفید که کار برنامه نویسی را راحت تر می کنند نیز هست. پس با وجود کم شدن محبوبیت، Ruby همچنان در بازار خواهد ماند.
Python
Python برای محققان در کار های آکادمیک و دانشمندان داده بسیار محبوب است و همان طور که قبلا نیز اشاره شد بسیار از مدارس افراد مبتدی را توسط Python با برنامه نویسی آشنا می کنند. این به این معناست که Python به رشد پیوسته خود ادامه خواهد داد و همچنان برای یادگیری مناسب است. اگرچه Python با سرعتی مشابه JavaScript تکامل نخواهد یافت و یا محبوبیت و تقاضا برای آن به JavaScript نخواهد رسید اما این زبان به خصوص با توجه به این که میزان تقاضا برای دانشمندان داده بسیار زیاد شده است همچنان با قدرت به کار خود ادامه می دهد.
PHP
چند سالی است که روند استفاده از PHP برای برنامه نویسی سمت سرور رو به کاهش است اما هنوز هم 80 درصد وب سایت های موجود در اینترنت با استفاده از PHP ساخته شده اند. هر چه باشد این زبان برای طراحی وب سایت ها ساخته شده بود.
با این حال، اگر در گوگل جستجو کنید که یک فرد مبتدی چه زبان هایی را باید یاد بگیرد متوجه خواهید شد که برنامه نویسان معمولا یادگیری PHP را توصیه نمی کنند. در واقع بهتر است بگوییم بسیاری از برنامه نویسان از آن متنفرند.
جامعه کاربران PHP در حال تلاش است تا بدنامی خود را با استفاده از دستور العمل های جدید برای این که چطور به طریقه صحیح به زبان PHP برنامه نویسی نوشته شود از بین ببرد همچنین آن ها در حال طراحی ابزار های جدید نیز هستند اما به طور کلی از سال 2015 به بعد آینده PHP تقریبا راکد به نظر می رسد( یا حداقل در آمریکا اینطور است). امیدواریم PHP7 جان تازه ای به این زبان ببخشد البته گفته می شود که این نسخه نیز بسیار تکه تکه است.
Java
اندروید برای حفظ Java به عنوان محبوب ترین زبان برنامه نویسی کمک چشمگیری کرده است و بسیاری از شرکت ها نیز Java را به خاطر پایداری نسبی مقیاس پذیری آن دوست دارند.
با رشد Spark( که از زبان Scala استفاده می کند) و Cassandra( که از زبان های دیگر پشتیبانی می کند) به عنوان چارچوب هایی برای مدیریت کلان داده ها، پیشبینی این که Hadoop تا چه زمان به عنوان محبوب ترین چارچوب برای مدیریت کلان داده ها شناخته می شود بسیار دشوار است اما با توجه به این که شرکت های بزرگ تغییر را به راحتی قبول نمی کنند مطمئنا Hadoop از بین نخواهد رفت. مشابه این قضیه در مورد زبان برنامه نویسی Java نیز صادق است به خصوص با توجه به این که Java ابزار بی نظیری برای توسعه سمت سرور و همچنین سابقه طولانی در امور توسعه شرکت های بزرگ دارد.
پس، Java به عنوان یکی از محبوب ترین و مناسب ترین زبان های برنامه نویسی در چند سال اینده به کار خود ادامه خواهد داد.
Objective-C/Swift
با توجه به این که شرکت اپل زبان Swift را وارد بازار کرده و Objective-C تنها برای محصولات اپل به کار می رود نمی توان انتظار داشت که Objective-C در آینده نیز باقی بماند. در طرف مقابل، Swift برای سال های آتی و تا زمانی که از محصولات اپل استفاده می کنید در رقابت باقی خواهد ماند.
با این وجود، این نکات به این معنا نیست که نباید در سال 2016 زبان Objective-C را یاد گرفت زیرا بسیاری از پروژه های کد منبع باز برای توسعه iOS همچنان به زبان Objective-C نوشته شده اند. به طور کلی، استفاده از چیزی که آن را متوجه نمی شوید اصلا ایده خوبی نیست. و اگر Swift یا Objective-C را بدانید یادگیری آن یکی خیلی سخت نیست.
C
C در مقایسه با سایر زبان های برنامه نویسی بسیار سطح پایین است اما چون زبان بین المللی سیستم های عامل محسوب می شود-بسیاری از ابزار های برنامه نویسی و همچنین سیستم عامل لینوکس به زبان C نوشته شده اند- همچنان مورد استفاده قرار خواهد گرفت .
SQL
تقریبا همه مدیران پایگاه های داده در سرتاسر جهان با SQL آشنا هستند. برای مدتی به نظر می رسید SQL در حال از دست دادن کاربرد خود می باشد. این پدیده به دلیل ظهور سرویس های بدون نیاز به SQL نظیر MongoDB و Redis بود. بسیاری از سرویس های بدون نیاز به SQL از پلتفرم های کلان داده مانند Hadoop، Spark و Cassandra استفاده می کنند که این باعث شده بود بسیاری اعتقاد داشته باشند SQL در حال مرگ است.
به نظر می اید دیگر اینچنین تصور نمی شود حتی سرویس های بدون نیاز به SQL نیز نام خود را به سرویس های نه فقط با SQL تغییر دادند.
با گسترش روز به روز کلان داده ها و سختی مدیریت آن ها، بازار SQL از همیشه داغ تر است. گوگل نیز اخیرا سرویس BigQuery خود را بروز رسانی کرده و حالا این سرویس می تواند تا 100000 سطر بر ثانیه بر جدول را دریافت کند. جالب است بدانید BigQuery از SQL استفاده می کند. Spark نیز از نسخه 1.3 به بعد از Spark SQL استفاده می کند.
همه این ها به این معناست که SQL دوباره کاربردی شده زیرا به آن برای مدیریت( نه ذخیره) کلان داده ها نیاز داریم. پس نه تنها از SQL در همه جا استفاده می شود بلکه برای مدتی طولانی کاربردی باقی خواهد ماند.
C++ (سی پلاس پلاس)
این زبان که هنوز هم از نظر عملکرد و توانایی ها به عنوان قوی ترین زبان برنامه نویسی شناخته می شود( حتی در برابر Rust) احتمالا در برخی زمینه ها که نیاز به عملکرد بسیار قوی دارند( مانند موتور بازی ها) کاربردی باقی خواهد ماند. تجدید نظر گسترده در استاندارد فعلی(C++14) در سال 2017 عرضه خواهد شد پس این زبان همچنان در حال تکامل است.
در اینده، Rust ممکن است در برخی قسمت های مربوط به برنامه نویسی سیستم جایگزین C++ شود زیرا هدف زبان Rust این است که نرم افزار های با آسیب پذیری کمتر نسبت به C++ تولید کند. اگر شما یک برنامه نویس حرفه ای هستید اکنون زمان مناسبی است تا Rust را یاد بگیرید.
C# (سی شارپ)
در گذشته، محدود بودن به پلتفرم های مایکروسافت و منبع بسته بودن C# به نفع این زبان تمام نشد اما Mono بیشتر این مشکلات را برطرف کرد( اگرچه Mono دارای مشکلات اجرایی است اما بروزرسانی های اخیر آن ها را تا حد زیادی برطرف کرده است).
برنامه نویسانی که با C# کار کرده اند عاشق این زبان هستند پس دارای جامعه کاربری قوی است. نیازی نیست اشاره شود که C# زبان اصلی استفاده شده در Unity 3D- یک موتور بازی سازی نسبتا محبوب که می تواند بر روی iOS، لینوکس و … نیز کار کند- می باشد. محبوبیت Unity3D به عنوان موتور بازی سازی اصلی برای بازی های مستقل توانسته آینده C# را تحکیم کند. همچنین از Unity3D می توان برای ساخت اپلیکیشن های واقعیت مجازی نیز استفاده کرد. با توجه به این که واقعیت مجازی پدیده بعدی تکنولوژی به شمار می رود C# نیز مطمئنا آینده ای درخشان خواهد داشت.
به عنوان نکته جانبی، C# در کشور هایی به غیر از آمریکا ( مانند انگلستان) نیز برای توسعه سرمایه گذاری بسیار محبوب است. واضح است که مایکروسافت C# را برای مدتی طولانی زنده نگه خواهد داشت و از آن برای پلتفرم .NET به طور کاربردی استفاده خواهد کرد. این شرکت با شدت در حال باز کردن منبع و در دسترس بیشتر قرار دادن محصولات خود است تا برنامه نویسان بتوانند از آن ها استفاده کنند.
نتیجه گیری
یک فرد مبتدی در برنامه نویسی باید چه زبانی را یاد بگیرد؟ واضح است که اگر می خواهید وارد توسعه وب شوید چه دوست داشته باشید چه نه مجبورید تا JavaScript را یاد بگیرید.و البته دستی هم در CSS و HTML داشته باشید. اگر می خواهید توسعه وب سمت سرور انجام دهید باید یکی از فرم های SQL را یاد بگیرید و همچنین به سراغ یکی از زبان های PHP یا ASP.Net بروید.
اگر می خواهید وب سایت ها را داده کاوی کنید یا دوست دارید یک دانشمند داده باشید Python زبان مناسبی برای یادگیری است. اگر می خواهید برای یک شرکت کار کنید حتما به Java نیاز دارید. اگر خیلی به ساختن چیز های مختلف علاقه ندارید و بیشتر به دنبال فرصت های شغلی هستید SQL جایی مناسب برای شروع است (به خصوص اگر به ریاضیات علاقه دارید).
در نهایت، پاسخ این سوال که در سال 2016 بهتر است چه زبان برنامه نویسی را یاد بگیرید به کاری که می خواهید انجام دهید بستگی دارد.
15 Comments
ممنون از شما
با عرض سلام و احترام
ممنون بابت نظر لطف شما
مقاله جامع وکاملا کاربردی بود…
سپاس فراوان
با عرض سلام و احترام فراوان
ممنون بابت نظر شما
سلام و وقتتون خوش
به ندرت پیش می اید که مطلبی به این اندازه جامع و به درد بخور در اینترنت پیدا بشود در عین حالی که زیاد هم
عجیب و پیچیده نیست…
فقط یک سوال داشتم اگر راهنمایی کنید ممنون میشم…می خواستم در مورد زبان فورترن بپرسم که اصلا زبان محبوب
و کاربردی هست.
با عرض سلام و احترام و ممنون بابت نظر شما
در خصوص زبان برنامه نویسی فورترن (Fortran) به زودی مقاله ای جامع در وب سایت منتشر خواهد شد.
با سلام و احترام
مطلب کامل و مفیدی بود
سپاس از سایت خوبتون
با عرض سلام و احترام
ممنون از نظر لطف شما
واقعا خسته نباشید
بسیار عالی
موفق باشید
با عرض سلام و احترام
ممنون از نظر لطف شما
سلام؛
خدمتتون سؤالی داشتم و اون اینکه چرا دیگر در بازار کتاب ایران، اثری از کتابهای زبان برنامهنویسی «دِلْفی» وجود نداره؟ آیا این زبان، بطور مطلق حذف شده است؟ تا همین سالهای گذشته بسیار از این زبان برنامهنویسی استفاده میشد امّا امروزه گویا منفور شده است!
دربارهی این زبان برنامهنویسی در اینترنت خیلی جستجو کردم و متوجّه شدم که شرکت «بورلند» اون رو به شرکت دیگهای واگذار کرده و گویا همین مسأله باعث شده خیلی از برنامهنویسان دیگر کمتر یا اصلاً از این زبان استفاده نکنند!
آیا دیگه این زبان برنامهنویسی، روزآمد نخواهد شد؟ یا پاسخگوی نیازهای کنونی برنامهنویسان نیست؟ اگر بخواهم این زبان برنامهنویسی را یاد بگیرم عملی اشتباه انجام میدهم؟ یا بهتر است به سراغ زبان برنامهنویسی «سی شارپ» بروم؟ آیا منابعی برای یادگیری این زبان وجود دارند؟ آیا کاستیهایی در این زبان هست که همه آن را فراموش کردهاند؟
لطفاً بنده را راهنمایی فرمایید.
با تشکّر
درود فراوان دوست من
نوشته هاتون عالی بود! و به من واس انتخاب زبان موردنظر کمک زیادی کرد!
ممنونم زیاد *-*
پیروز باشیندا دل شاد
با تشکر از نظر لطف شما
سلام وقت بخیر ببخشید من مطالب در مورد برسی زبان های برنامه نویس در پزشکی میخوام پیدا نمیکنم؟
عرض سلام و احترام
در این خصوص به شما زبان برنامه نویسی پایتون رو پیشنهاد میکنیم و همچنین بهتر است در کنار اون Matlab رو هم یاد بگیرید