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

میزان استفاده از زبان های برنامه نویسی طبق آمار

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

 

مقایسه قابلیت ها

در ادامه قصد داریم از نظر قابلیت های کلیدی و مهم، چند زبان برنامه نویسی را مورد بررسی قرار دهیم.

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

 

جدول 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 و ...
  • توسعه نرم افزار برای هر نوع سیستم عامل و پلتفرمی
  • امنیت بالا
  • برنامه نویسی به زبان ماشین و ریزپردازنده ها و میکروکنترلرها
  • انعطاف پذیری بالا

 

 

منابع

  • Jvoegele
  • dojo
  • Wikipedia
  • OpenHub
  • Greencode
  • Ciwcertified
  • Daneshju
  • org
  • Wavesoft
  • TIOBE
  • Stackoverflow
  • linkedin
  • github
  • CodeProject
  • Javacodegeeks
  • Cplus