الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقارنة بين لغات الحاسب - رؤية أخرى

بدأه System Down في 2 يونيو 2009 · 9 رد · 1,713 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مقارنات لغات البرمجة هي مصدر نقاش (و قتال) لا نهائي. و هاهي حطبة أخرى في نار الحرب. و لكنها على الأقل مقارنة علمية جداً. قام صاحب الختبار بجلب بيانات من موقع The Computer Language Benchmarks Game، و هو موقع يسمح للمبرمجين بإرسال أكواد بلغتهم المفضلة لحل مشاكل موحدة، ثم يقوم باختبار هذه البرامج في بيئة موحدة. طبعاً السرعة يتم حسابها، و لكن هذا ليس كل شئ (طبعاً). يتم أيضاً حساب طول البرنامج. و الطول هنا ليس في عدد الحروف أو عدد الأسطر، بل في عدد الأوامر، و الذي هو مقياس أفضل لقدرة اللغة على التعبير. تم رسم جميع هذه البيانات في رسم بياني ثنائي الأبعاد.

size-vs-speed-vs-depandability---context---2-752149.png

المحور س هو سرعة التنفيذ حيث السرعة تتضاءل كلما اتجهنا إلى اليمين.

المحور ص هو حجم الكود حيث الحجم يزداد كلما ذهبنا إلى الأعلى.

كل نقطة عبارة عن نتيجة برنامج واحد. و يتم رسم خط من متوسط اللغة إلى النقاط الأخرى مما يرسم شكل نجمة. كلما كانت النجمة أصغر كان هذا دليلاً على تشابه أداء اللغة باختلاف البرامج.

نقطة أخرى: بعض اللغات التي لديها أكثر من نسخة أو كومبايلر يتم حسب كلأ منها على حدة.

النتيجة بعد أن تم ترتيب نتيجة اللغات المتوسطة بنفس أسلوب الرسم المنفرد (الأبطأ إلى اليمين ... إلخ):

size-vs-speed-vs-depandability.png

ملاحظات شخصية:

* رغم كل الحروب بين الـ#C و الجافا كانت نتائجهما متقاربة (في السرعة على الأقل).

* نتيجة FreeBasic (نسخة مفتوحة المصدر و محسنة من لغة QuickBasic العتيقة) الممتازة كانت مفاجئة. أذكر أنني لعبت قليلاً بهذه اللغة في السابق. ربما على العودة :)

* قبل أن تبدأ حرب لغات جديدة؛ نتائج هذا الإختبار ليست الجواب النهائي. لكنها أداة مفيدة ليصل كل واحد منا إلى جوابه الشخصي.

* نقلاً من شخص آخر: اللغات الموجودة في الركن الأيمن العلوي (الأبطأ و الأطول) لا تعني أنها لغات سيئة، بل لغات ذات استخدام خاص و غير مناسبة للاستخدام العام.

المقالة بالكامل (مع تحليل أوسع):

http://gmarceau.qc.ca/blog/2009/05/speed-s...ability-of.html

#2

مشكور على المقارنة

#3

هذا سئ :(

كيف أفهم هذه الخطوط

هل هذه صور لنتيجة تصادم جزيئات متسارعة :D

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#4

:)

كل رسم بياني هو عبارة عن مجموعة من النقاط. كل نقطة هي عبارة عن نتيجة برنامج ما حيث س هو سرعة البرنامج و ص هو حجمه.

بعد ذلك يتم رسم نقطة تعبر عن متوسط هذه النتائج. هذه النقطة هي مركز النجمة. و من هذا المركز يتم رسم مجموعة من الخطوط إلى نقاط برامج محددة لتوضح تباين نتائج البرامج. لذا عندما تكون النجمة صغيرة فهذا يعني تشابه النتائج بغض النظر عن البرنامج و العكس صحيح.

موضع مركز النجمة أيضاً يعبر عن متوسط سرعة برامج هذه اللغة و حجمها. اللغات الموجودة في الركن الأيسر السفلي هي اللغات صاحبة البرامج الأسرع و الأصغر، و الموجودة في الركن الأيمن العلوي هي اللغات ذات البرامج الأكبر حجماً و أبطأ أداءً.

خذ مثلاً بايثون (6،0) و روبي(7،0). حجم برامجهما متشابه (لأنهما في نفس المكان على محور ص) و لكن بايثون أسرع من روبي.

#5

اسماء اللغات شوية غريب ... مثلا اين هي الـ C بالضبط؟؟ وجدت لغة dlang هل هذه Digital Mars D ام لغة اخرى؟

#6

هذه أسماء الـimplementations بدلاً من اللغات نفسها. اللغة المجردة هي وصف لقواعد اللغة الإملائية و النحوية و المقاييس المعتمدة عند تصميم المترجمات interpreters و المجمعات compilers. لذا فاللغة بحد ذاتها ليس لديها "أداء" لأنها في النهاية مجرد كلام على ورق. حين يتم تطبيق هذه المواصفات على شكل كومبايلر مثلاً يسمى هذا implementation و هو الذي يتم استخدامه و قياس أداءها. بعض اللغات مثل الـ++C و الـC و الـLisp لديها أكثر من implementation و كلٌ منها له أداء مختلف لذا يتم اختبار كل منها على حدا.

هنا بعض اللغات المعروفة. الإحداثيات هي x,y حيث 0,0 هو الركن الأيسر السفلي.

C

Intel C (0,3)

GNU C (0,4)

CInt (6,5)

C++

Intel C++ (0,5)

GNU C++ (1,6)

Java

Java 1.4 - Server(1,4)

Java 6 -client (3,6)

Java 6 -server (2,6)

Java 6 -Xint (5,8)

Java 6 -Xms64m (2,5)

Java GNU (4,7)

C#

C# Mono (2,3)

C# AOT Mono (1,2)

Fortran

Fortran G95 (2,7)

Fortran Intel (1,7)

D (2,2)

F# Mono (3,3)

Lisp

CMUCL (0,2)

SBCL (3,5)

PROLOG

SWI (7,8)

YAP (6,7)

Python

CPython (6,0)

IronPython (6,1)

Psyco Python (4,0)

Ruby

Ruby (7,0)

YARV (Ruby 1.9) (5,1)

JRuby (7,1)

Perl (5,0)

PHP(5,2)

Free Pascal (0,6)

Free Basic (1,1)

JavaScript (7,2)

تم تعديل هذه المشاركة بواسطة System Down في 8 يونيو 2009 في 10:14

#7

C هل هي أسرع لغة

"Logic will get you from A to B. Imagination will take you everywhere." –Albert Einstein

#8

حسب الرسم البياني C من إنتل و غنو هي من أسرع اللغات الموجودة في الإختبار.

#9

لماذا لم أجد ++VC ضمن الإختبارات :huh:

#10

لأن الاختبارات كلها تمت على جهاز يعمل تحت نظام لينوكس أوبونتو. لاحظ أن نسخة دوت نت التي تم اختبارها هي مونو.

http://shootout.alioth.debian.org/

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…