programming languages comparision

17
مقایسو زبان ىای برناموسی نویMay 29 2010 سی موجود می پردازد. بررسی برنامه نوین زبان های بیسه نسبتا کاملیین مقاله به مقای امرکز است. محبوبیت در دراز مدت وی زبان ها متن محبوبیت و کارآی بر میزا جاریاه مدت و کوتسمت مقایسهجو سنجیده شده است. در ق موتورهای جستاس نتایج بر اسه است گرفتیگان صورتی را بر روی زبان هاست جامع کهز نتایج یک تی ارای کاوا و دات نت کلی جاز شدن در معماریپس با ریوده ایم. سستفاده نم ات توسعه محصوحت ت کرده ایم. مقایسه را به طور کلی آنهاایت به در نهر زبان های نماینده سایوان عن قرار داده ایم. تر مورد مقایسهیقوا را به طور دقسی، زبان سی شارپ و جا برنامه نویفرانسنذات کن مستس طراحی و دراده سازی زبان پیسی نوی ىای برناموعتی و مسعود شری حامذ شیخلو صفریتاد: مهندس لی اس

Upload: -

Post on 22-Nov-2014

111 views

Category:

Documents


3 download

DESCRIPTION

Programming Languages Conference Documentationin zanjan universityby Masoud Shariati and Hamed Sheykhlu

TRANSCRIPT

Page 1: Programming Languages comparision

مقایسو زبان

ىای برنامو

نویسی

May 29

2010 این مقاله به مقایسه نسبتا کاملی بین زبان های برنامه نویسی موجود می پردازد. بررسی جاری بر میزان محبوبیت و کارآیی زبان ها متمرکز است. محبوبیت در دراز مدت و

بر اساس نتایج موتورهای جستجو سنجیده شده است. در قسمت مقایسه کوتاه مدت و کارایی از نتایج یک تست جامع که بر روی زبان های رایگان صورت گرفته است

توسعه محصوالت استفاده نموده ایم. سپس با ریز شدن در معماری کلی جاوا و دات نت عنوان نماینده سایر زبان های در نهایت به آنها را به طور کلی مقایسه کرده ایم.تحت

برنامه نویسی، زبان سی شارپ و جاوا را به طور دقیق تر مورد مقایسه قرار داده ایم.

مستنذات کنفرانس

درس طراحی و

پیاده سازی زبان

ىای برنامو نویسی

مسعود شریعتی و

حامذ شیخلو

استاد: مهندس لیال صفری

Page 2: Programming Languages comparision

2

فهرست مطالب

2 ............................................................................................................................................................... مقدمه

3 ........................................................................................................................................................... تیمحبوب

6 .............................................................................................................................................................. ییکارا

11 .................................................................................................................................... شارپ یس با جاوا سهیمقا

17 .............................................................................................................................................................. جهینت

مقدمهگسترده مطالعات مربوط به طراحی و پیاده سازی زبان های برنامه سازی، ابعاد با توجه به

نموده ایم. ها زبان کارآیی و محبوبیت میزان به ناچار در این بررسی فیلد مقایسه را محدود به

هرچند در خالل مقاله به طور ضمنی به سایر مباحث مرتبط نیز اشاره می شود.

زبان برنامه نویسی وجود دارد. مسلماٌ نمی توان گفت کدام یک بهترین 444امروزه بیش از

زبان است چرا که هر دسته از زبان ها به منظور خاصی و با توانایی های منحصر به فرد طراحی

تعداد دسته هایی خواهد و ساخته شده اند. بنابراین تعداد زبان برنامه نویسی باید بیاموزیم دقیقاٌ برابر

که با آنها سر و کار خواهیم داشت.بود

در این مقاله شاهد مقایسه زبانهای برنامه نویسی از دیدگاه های زیر خواهید بود:

میزان محبوبیت زبان ها

میزان باری که برنامه های نوشته شده به هر زبان بهCPU .وارد می کنند

زمان الزم برای اجرای برنامه ها

حافظه مصرفی

Page 3: Programming Languages comparision

3

محبىبیت

استفاده شده است. TIOBEبرای مقایسه میزان محبوبیت زبان ها از نتایج تحقیقات موسسه ی

آغاز نمود و کارمندان آن 2444سال این موسسه تحقیقات روی زبان های برنامه نویسی را از

کارشناسان تکنولوژی کامپایلر می باشند.

یاهو، ام اس ان، ویکی پدیا، و در سایت های گوگل،سی محبوبیت بر پایه ی نتایج جستجبرر

در سال جاری )از لحاظ زبان برتر جهان 15رده بندی 1و یوتوب انجام شده است. در شکل

نشان داده شده است:محبوبیت(

1 شکل

همانطور که در شکل مشاهده می شود موقعیت هر زبان در سال گذشته نیز ذکر شده است که جهت

مقایسه سیر محبوبیت زبان ها و بررسی علل آن مفید می باشد. باید توجه داشت که صرف تعداد

Page 4: Programming Languages comparision

4

کلیک ها روی مطالب مربوط به یک زبان نمی تواند مالک مناسبی جهت سنجش میزان محبوبیت

. چرا که این ویژگی ممکن است حاصل عواملی مانند زیر باشد:زبان باشد

.نبود و یا ناقص و ناکافی بودن مستندات کاربری که همراه زبان عرضه می شود

.خطا خیز بودن زبان و پیغام های خطای نامناسب

.عدم سهولت در یادگیری زبان

... و

ن در دهه ی اخیر نمایش داده شده است:نمودار مربوط به میزان کلیک مرتبط با هر زبا 2در شکل

2 شکل

، Cخطوط به این شرح می باشد: زبان جاوا در صدر است، پس از آن 2444روی نقطه ی سال

C++ ،Visual Basic ،Perl ،Delphi ،PHP ،Python ،C# و در پایین ترین سطح شاهد ،

Objective-C .می باشید

Page 5: Programming Languages comparision

5

رشد نسبتا صعودی داشته اند. این موضوع می تواند PHP و #Objective-C ،Cزبان هایی مثل

در طول عمر نسبتاٌ Cزبانی مانند حاکی از روند گسترش و همه گیر شدن این زبان ها باشد.

طوالنی خود محبوبیت خود را حفظ کرده است. بنابراین ویژگیهای خاص آن می تواند به لحاظ

ن های برنامه نویسی بسیار مورد توجه باشد. از این نظر روند محبوبیت طراحی و پیاده سازی زبا

روند محبوبیت تعدادی زبان ها در دراز مدت نشان 3زبان ها طی زمان قابل تأمل است. در شکل

داده شده است:

3 شکل

رشد محبوبیت Objective-C، و Python ،C# ،PHPآنگونه که مشاهده می شود زبان هایی مثل

بسیار سریعی داشته اند که نشان از قدرت جذب کاربر باالی آنها دارد که از عمده دالیل آن سهولت

استفاده و قابلیت بکار گیری باالی آنها می باشد.

در پایان مبحث مقایسه طبقه بندی زبان از لحاظ کاربرد نقش قابل توجهی در محبوبیت آن دارد.

ز نظر محبوبیت شایسته است به محبوبیت هر دسته از زبان ها اشاره ای داشته باشیم. ها ا زبان

برای چنین مقایسه ای مفید می باشد: 4شکل

Page 6: Programming Languages comparision

6

4 شکل

در شکل فوق نکات زیر قابل توجه است:

با توجه به بوجود آمدن زبان های جدید شیء گرا، مشاهده می شود که زبان های ساختاری

محبوبیت مناسبی برخوردارند. همچنان از

.کاربرد های ویژه زبان های ساختاری موجب حفظ محبوبیت و حتی رشد آن شده است

ت.محبوبیت زبان های تابعی و زبان های منطقی با سرعت زیادی در حال رشد اس

کارایی

زبان برنامه نویسی البته 34در این بخش برای مقایسه کارایی زبان ها، به مقایسه کارایی حدوداٌ

بنچ مارک مستقل 12تنها از میان نرم افزار های رایگان می پردازیم. نتایج پیش رو حاصل انجام

نرم افزار متفاوت می باشد. سیستم سخت افزاری این تست 1144با حدود

Intel® Q6600® one core نتایج این تست را با 5با سیستم عامل اوبونتو می باشد. شکل

این الگوریتم یک الگوریتم داده گرا نشان می دهد. توجه داشته باشید که ”binary tree“الگوریتم

می باشد.

Page 7: Programming Languages comparision

7

5 شکل

در این تست جاوا بهترین نتیجه را به لحاظ محاسباتی بدست می دهد. اما با توجه به عملکرد آن در

گوریتم فوق این زبان کارایی بدی در این زمینه دارد. همانطور ال حافظه و ماهیتزمینه استفاده از

ATSند )زبان بهترین نتیجه را در این تست از خود نشان داده ا ATSو Cکه مالحظه می شود زبان

multiبوده و بر مبنای اثبات اصول کار می کند. این زبان یک زبان MLاز مشتقات زبان

paradigm می باشد یعنی هم از ساختار زبان های دستوری و هم از ساختار زبان های تابعی بهره

می برد(.

" به نمایش در آمده است. این fannkuch"نتایج تست مشابهی با استفاده از الگوریتم 6در شکل

الگوریتم برای محاسبه ی جایگشت های یک لیست به همراه تعداد جا به جایی ها در لیست بکار می

بهترین نتایج را دادند و مشکل ++Cو Cرود و دارای ماهیت محاسباتی است. در این تست زبان

عدم بهره وری حافظه ی زبان جاوا بیشتر نمایان شد.

Page 8: Programming Languages comparision

8

6 شکل

حال سراغ الگوریتمی می رویم که مصالحه ای بین داده گرایی و محاسباتی بودن داشته باشد. در

الگوریتم" مشاهده می کنید )این الگوریتم، k-nucleotide"نتایج تست را با الگوریتم 7شکل

و ++Cدر این تست زبان های .می باشد( شیمی در آمینه اسیدهای کدهای جایگشتهای محاسبه ی

Ada کارایی بسیار خوبی نشان دادند. ضعیفترین عملکرد هم از زبان هایی چون جاوا و پاسکال

دیده شد.

Page 9: Programming Languages comparision

9

7 شکل

پس از بررسی نمونه ای از تست های انجام شده، در پایان این قسمت نتایج کلی و نهایی تمام تست

(. در شکل 9می کنیم )شکل مقایسه در زمینه زمان مصرفی برای چند زبانهای انجام شده را

نرمال سازی شده را نشان می دهد و روی محور عمودی به ازای هر زبان محور عمودی زمان

داریم )شکل زیر می تواند برای درک این نوع از نمودارها مفید واقع گردد(. boxplotیک نمودار

Page 10: Programming Languages comparision

10

8 شکل

9 شکل

( NET.)نسخه رایگان Mono، و سی شارپ تحت Haskell، جاوا، ++Cمالحظه می گردد زبان

و Perlبدترین عملکرد را دارد. زبان های PHPاز این لحاظ بهتر می باشند. زبان بسیار محبوب

Page 11: Programming Languages comparision

11

Ruby نتایج پراکنده تری دارند در نتیجه قابلیت اتکای کمتری را از خود نشان می دهند. زبان های

اسکریپت نویسی با توجه به مفسری بودن زبان های کندی می باشند.

سی شارپمقایسه جاوا با

بر portabilityافزار با تاکید بر زبان جاوا یک زبان همه منظوره شی گرا برای طراحی نرم

مشکالت آن ++Cسکوهای مختلف است. این زبان سعی کرده با حفظ خصوصیات کلی زبان روی

جرا بر روی سکوهای مختلف با بیشترین اتوانایی JVMرا برطرف کند. این زبان با بهره گیری از

هماهنگی را دارد.

است.این زبان رسما به عنوان VCو فدرت VBتلفیقی از سادگی Microsoftبه گفته #Cزبان

++Cعرضه شده است، این زبان نیز شی گرا و دارای خصوصیات کلی زبان javaرقیبی برای

.بوده که سعی در بهبود آن کرده است

11 شکل

برای نرم افزار های جامع بسیار شبیه به همدیگر بوده که شامل یک الیه net.معماری کلی جاوا و

پایگاه داده ها و یک استاندارد ارتباط با الیه میانی است. میانی دسترسی برای

Page 12: Programming Languages comparision

12

11شکل

که را راه مقایسه زمان اجرای الگوریتم مناسب نمیباشد؛ چ زاستفاده ا برای مقایسه این دو تکنولوژی

اوال این الگوریتم ها معموال در محیط های کاربردی عادی کاربرد زیادی ندارند، ثانیا این زبانها

این منظور طراحی نشده اند. اصال به

برای مقایسه این زبان ها از یک نرم افزار کاربردی که برای هر دو زبان موجود میباشد استفاد ه

برای زبان جاوا عرضه best practiceبه عنوان oracleشود. این نرم افزار توسط شرکت می

پورت شده است. #Cشده که بعدا به زبان

12شکل

تواند نتایج بهتری را برای مقایسه باشد می یک مثال واقعی برای مقایسه زبان می این مدل چون

نتیجه دهد.

Page 13: Programming Languages comparision

13

ه تعداد خطوط نوشته شده برای یک نرم افزار در دو زبان میتوان به وضوه یسبا نگاهی به نتایج مقا

با پایگاه داده اختالف زیاد این زبان ها را در پیشرفت روند کار مشاهده کرد. جاوا فقط در الیه کار

مناسب عمل کرده اما در بیشتر شرایط نتایج مناسبی را نشان نداده.

13شکل

افزار تحت وب یکی از مهمترین عوامل تاثیر گذار بر کاربری آن تعداد کاربر قابل در یک نرم

بانی ( میتوان مقابسه بر اساس تعداد کاربر قابل پشتی14پشتیبانی در آن است. در شکل زیر )شکل

متفاوت مشاهده کرد. سرور هرا برای هر دو نرم افزار در دو سرویس دهنده مختلف برای س

Page 14: Programming Languages comparision

14

14شکل

است که اینگونه نتایج ضعیفی را در مورد کاربران قابل j2eeاینکه آبا مشکل از خود پیاده سازی

است و با جواب آن صحیح Microsoftدهد سوالی است که به نظر پشتیبانی از خود ارائه می

مشاهده نتایج مشابه نیز میتوان به این جواب رسید.

نتایج به مراتب بهتری به دست j2eeنسخه ی پیاده سازی دوباره از دو مرحله بهینه سازی و اما در

توان به این نتیجه رسید که خود پیاده سازی و معماری جاوا دارای مشکل می آمده است. که می

باشد.

15شکل

Page 15: Programming Languages comparision

15

نگاهی دقیقتر به پشته پروتکلی این دو زبان اطالعات مفبد تری نیز به دست می آبد.با

16شکل

جاوا متفاوت مستقیما با خود ماشین ویندوز در ارتباط است که این در مورد net.در CLRمثال

ین باشد. که ا شده با سیستم عامل مبدا می integrateسرویس دیگر داست و نیاز به عبور از چن

شود. مسئله موجب افزایش تعداد الیه ها و در نتیجه کاعش سرعت برای جاوا می

در مورد جاوا این ولیاست موجود visual studioتنها انتخاب net.از طرف دیگر برای کار با

VISUALدر مقایسه با third-party له مهم هماهنگی این تولیداتئانتخاب ها فراوانتر است. اما مس

STODIO که خود با.NET باشد است. هماهنگ می

MICROSOFT تالشی را کهSUN صرف هماهنگی سکوهای مختلف کرده را صرف هماهنگی

. نتیجه این تالش فراوانی و هماهنگی زبانهای تحت است خود محصول و زبان های درونش کرده

.net و توانایی همکاری کامل با همدیگر است، اما در طرف عکس آنsun ا یک انتخاب برای تنه

کاربران دارد، اما در چند سکو.

Page 16: Programming Languages comparision

16

. بر می خوریمکار با بعضی عناصر آن با مقایسه این دو زبان در جزئیات به تفاوتهایی در نحوه

با همدیگر تفاوت دارند. اینکه structلیه میتوان دید که این دو زبان درمثال با مقایسه داده های او

Microsoft ده اولیه انها را بصورت دآو کارایی ساختمان داده های کوچک برای افزایش سرعت

پیاده کرده اما در جاوا این امر به خاطر یکپارچه حفظ کردن ساختار به کار گرفته نشده است.

Java C# int, float, double, etc. Allocated on stack Not an Object Not extensible

int, float, double, etc. structs Allocated on stack Inherited from object class structs can implement interfaces Cannot inherit from another class

توان به وضوح دید که این نوع نگاه شی به با نگاهی به نمودار کارایی دو زبان در کار با اشیا می

ود.تواند به ضرر جاوا تمام ش همه چیز چقدر می

17شکل

Page 17: Programming Languages comparision

17

نتیجه

برنامه نویسی به این سوال که چه زبانی بهترین زبان برای اسخپبرای هرچند این مقاله تالشی بود

کنیم که این انتخاب بیشتر به شرایط است، اما با مشاهده نتایج در تست های مختلف مشاهده می

زیادی نیاز دارد، cpuloadشود. مثال اینکه خود کاربرد ما بیشتر داده محور است یا به مربوط می

با اینکه جاوا نتایج بدتری #cافزار در چه حد است و ... حتی در مورد جاوا و اینکه هزینه کل نرم

قایسه با اما اینکه همین هزینه خود زبان در م دارد اما یک گزینه رایگان برای توسعه دهندگان است.

افزار چقدر میتواند موثر باشد خود یک سوال دیگر است. طول مدت توسعه نرم