مقایسه زبان های برنامه نویسی

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

امروزه زبان های برنامه نویسی متعددی وجود دارند که مدیران پروژه ها بر حسب نیاز نرم افزار و امکاناتی که خود نیاز دارند، می توانند برای توسعه نرم افزار انتخاب می کنند. در این مقاله قصد داریم به طور کلی چندین زبان مطرح برنامه نویسی را با یکدیگر مقایسه کنیم و دلایل خود را جهت انتخاب زبان توسعه تیم یار، بیان کنیم. لازم به ذکر است در این مقاله قصد نداریم به صورت جزئی زبان ها را بررسی کنیم بلکه پیش فرض بر این است که شما با زبان های برنامه نویسی آشنایی دارید. در ادامه با ما همراه باشید.
 
میزان استفاده از زبان های برنامه نویسی طبق آمار
زبان های برنامه نویسی به 4 دسته شئ گرا، رویه ای، کاربردی و منطقی دسته بندی می شوند. میزان استفاده از هر دسته در میان برنامه نویسان در جدول زیر قابل مشاهده می باشد. البته قابل ذکر می باشد که آمار جدول زیر تا سال 2013 میلادی می باشد. (Wavesoft)
جدول 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 - میزان پشتیبانی php چیست این زبان ها در هر ماه

شکل 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 - جمع های عددی با نوع داده ای مختلف

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

جدول 3 - مقایسه قابلیت های مختلف چندین زبان برنامه نویسی
قابلیت/زبان
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 نوشته شده اند را نام برده است که عبارتند از:
  • Adobe systems: اکثر اپلیکیشن های اصلی سیستم ادوبی به زبان ++C  نوشته شده اند مانند Photoshop & ImageReady، Illustrator و Adobe Premier.
  • Google: برخی از اپلیکیشن های گوگل مانند Google file System و Google Chromium به زبان ++C نوشته شده اند.
  • Mozilla: مانند بروزر مازیلا فایرفاکس و email client Thunderbird 
  • Microsoft: مانند windows 95, 98, Me, 2000, XP, Microsoft Office, Internet Explorer, Visual Studio
  • MySQL
  •  Allias systme - Autodesk Maya
  • Winamp media player
  • 12D solutions
  • Bloomberg
  • callas software
  • Image softwares
  • Apple - OS X
  • Symbian OS
برای توسعه تیم یار از زبان C و ++C استفاده می شود و برای این انتخاب علاوه بر مقایسه های بالا می توان به چند ویژگی این 2 زبان به صورت زیر اشاره کرد:
  • به صورت جامع و مستقیم از چند نوع روش برنامه نویسی می توان استفاده کرد:
  • برنامه‌نویسی ساخت‌ یافته
  • برنامه‌نویسی شی‌گرا
  • انتزاع داده
  • برنامه‌نویسی جنریک یا عمومی
  • ++C یک زبان سطح میانی، به صورت همزمان شامل سطح بالا و سطح پایین می باشد
  • امکان انتخاب به برنامه نویس می دهد، حتی اگر این انتخاب اشتباه باشد
  • توانایی کنترل کامل سخت افزار توسط زبان C
  • پشتیبانی از اکثر سخت افزار های رایج
  • سرعت فوق العاده بالا، به دلیل امکان کد زنی در سطح پایین
  • دارای کتابخانه های بسیار فراوان و کامل در هر زمینه
  • پشتیبانی از اکثر پایگاه داده ها از قبیل SQL Server، Oracle، DB2، Firebird و ...
  • توسعه نرم افزار برای هر نوع سیستم عامل و پلتفرمی
  • امنیت بالا
  • برنامه نویسی به زبان ماشین و ریزپردازنده ها و میکروکنترلرها
  • انعطاف پذیری بالا

Comments

Popular posts from this blog

وقتی از پرواز جا می‌مانید این کارها را انجام دهید

با نشانه های اصلی سرطان پروستات آشنا شوید