امروزه زبان های برنامه نویسی متعددی وجود دارند که مدیران پروژه ها بر حسب نیاز نرم افزار و امکاناتی که خود نیاز دارند، می توانند برای توسعه نرم افزار انتخاب می کنند. در این مقاله قصد داریم به طور کلی چندین زبان مطرح برنامه نویسی را با یکدیگر مقایسه کنیم و دلایل خود را جهت انتخاب زبان توسعه تیم یار، بیان کنیم. لازم به ذکر است در این مقاله قصد نداریم به صورت جزئی زبان ها را بررسی کنیم بلکه پیش فرض بر این است که شما با زبان های برنامه نویسی آشنایی دارید. در ادامه با ما همراه باشید.
میزان استفاده از زبان های برنامه نویسی طبق آمار
زبان های برنامه نویسی به 4 دسته شئ گرا، رویه ای، کاربردی و منطقی دسته بندی می شوند. میزان استفاده از هر دسته در میان برنامه نویسان در جدول زیر قابل مشاهده می باشد. البته قابل ذکر می باشد که آمار جدول زیر تا سال 2013 میلادی می باشد.
جدول 1 - میزان استفاده از دسته های مختلف زبان های برنامه نویسی
دسته بندی زبان ها | میزان استفاده |
Object-Oriented (شئ گرا) | 58.1% |
Procedural (رویه ای) | 37% |
Functional (کاربردی) | 3.2% |
Logical (منطقی) | 1.7% |
جدول 2 - رتبه بندی شرکت TIOBE
رتبه | زبان | میزان استفاده |
1 | C | 18.729% |
2 | Java | 16.914% |
3 | C++ | 10.428% |
4 | Objective-C | 9.198% |
5 | C# | 6.119% |
6 | PHP | 5.784% |
7 | VB (Visual Basic) | 4.656% |
8 | Python | 4.322% |
9 | Perl | 3.276% |
10 | Ruby | 1.670% |
11 | Java Script | 1.536% |
12 | VB.NET | 1.131% |
13 | Lisp | 0.894% |
14 | Transact-SQL | 0.819% |
15 | Pascal | 0.805% |
16 | Bash | 0.792% |
17 | Delphi/Object Pascal | 0.731% |
18 | PL/SQL | 0.708% |
19 | Assembly | 0.638% |
20 | Lua | 0.632% |
در چند نمودار زیر میزان پروژه هایی که در هر ماه با زبان های مختلف توسعه داده می شود، به نمایش در آمده است که این آمارها کاملا به روز می باشند که با مراجعه به سایت OpenHub می توانید به صورت زنده بررسی کنید و اطلاعات بیشتری کسب نمایید.
شکل 1 - میزان پشتیبانی این زبان ها در هر ماه
شکل 2 - میزان به روز رسانی نرم افزارهایی که توسط این زبان ها توسعه داده شده اند در هر ماه
شکل 3 - میزان پروژه هایی که در هر ماه با این زبان ها تکمیل می شوند
همانطور که در نمودارها مشاهده می کنید بیشترین نرم افزارهای کاربردی روز دنیا با زبان های ++C ، C و Java در حال توسعه می باشند. (برای اطلاعات بیشتر به سایت Stackoverflow مراجعه کنید.)
شکل 4 - میزان استفاده زبان های برنامه نویسی در سال 2014
نمودار زیر میزان استفاده از زبان های برنامه نویسی در مسابقات را نشان می دهد. (linkedin)
شکل 5 - میزان استفاده از زبان های برنامه نویسی در مسابقات
مقایسه زبان های برنامه نویسی از لحاظ سرعت
در نمودار های زیر اقدام به تست سرعت زبان های برنامه نویسی در یک کامپیوتر و استفاده از یک نوع الگورتیم شده است. این تست ها شامل حل پاسخ جدول Sudoku 25*20 و Matrix 1000*1000 می باشد و واحد زمان بر حسب ثانیه است. (Attractivechaos.github)
شکل 6 - Sudoku 25*20
شکل 7 - Matrix 1000*1000
نکته قابل توجه در این قسمت این می باشد که الگوریتم استفاده شده برای حل جدول Sudoku و Matrix می تواند بسیار بهینه تر و سریع تر از این باشد. الگوریتم استفاده شده برای همه زبانها یکسان می باشد.
نمودارهای زیر نشان دهنده میزان سرعت محاسبات عددی توسط زبان های C# و ++C می باشد. (برای بررسی و اطلاعات بیشتر نیز می توانید به سایت CodeProject مراجعه کنید.)
شکل 8 - محاسبات عددی با نوع داده ای مختلف در CPU های ARM
شکل 9 - جمع های عددی با نوع داده ای مختلف
مقایسه قابلیت ها
در ادامه قصد داریم از نظر قابلیت های کلیدی و مهم، چند زبان برنامه نویسی را مورد بررسی قرار دهیم.
این مقایسه شامل قابلیت های چون شئ گرایی، عمومی بودن، روش سربار گذاری، چند نخی، اشاره گر بودن، امنیت، کاربردی بودن، رویه ای بودن، سطح زبان ها (هر چه سطح زبان پایین تر باشد کد نویسی با آن سخت تر، ولی سرعت آن بالاتر می باشد)، سیستم عامل و پلتفرم های قابل پشتیبانی، انعطاف پذیری، سرعت و سخت افزار می باشد.
قابلیت/زبان | C++ | C# | Java | Ruby | Visual Basic | Python | Perl |
Object-Oriented | قدرتمند و متغیر | قدرتمند | قدرتمند | ضعیف | قدرتمند | قدرتمند | قدرتمند |
Generic Classes | بله | خیر | خیر | - | خیر | - | - |
Method Overloading | بله | بله | بله | خیر | خیر | خیر | خیر |
Multithreading | بله | بله | بله | بله | خیر | بله | خیر |
Pointer Arithmetic | بله | بله | خیر | خیر | خیر | خیر | خیر |
Security | بسیار بالا | بالا | بسیار بالا | بالا | پایین | پایین | بالا |
Functional | بله | بله | بله | بله | - | بله | بله |
Procedural | بله | بله | بله | - | - | بله | بله |
Level | سطح بالا – سطح پایین –(میانی) | سطح بالا | سطح بالا | سطح بالا | سطح بالا | سطح بالا | سطح بالا |
Operation System (OS) | نا محدود | محدود | محدود | محدود | محدود | محدود | محدود |
Flexibility | کاملا انعطاف پذیر - بالا | بالا | بالا | متوسط | متوسط | متوسط | متوسط |
Speed | بسیار بالا | بالا | بالا | متوسط | متوسط | متوسط | متوسط |
Hardware | اکثر سخت افزارها | محدود | محدود | محدود | محدود | محدود | محدود |
تیم یار و زبان توسعه آن
همانطور که مشاهده کردیم، زبان C و ++C از زبان های بسیار قدرتمند و انعطاف پذیر می باشند. باید به این موضوع نیز اشاره کرد که بسیاری از نرم افزار های کاربردی و سریع دنیا توسط این زبان ها توسعه یافته اند.
سایت mycplus تعدادی از بهترین نرم افزارهایی که با زبان ++C نوشته شده اند را نام برده است که عبارتند از:
Microsoft: مانند windows 95, 98, Me, 2000, XP, Microsoft Office, Internet Explorer, Visual Studio
برای توسعه تیم یار از زبان C و ++C استفاده می شود و برای این انتخاب علاوه بر مقایسه های بالا می توان به چند ویژگی این 2 زبان به صورت زیر اشاره کرد:
منابع