[size=32]مقارنة بين لغة C ولغة C++[/size]
بالطبع معظم المقارنات بين اللغتين على الويب
هي غالبا حول الفرق في أداء اللغتين ﻷداء نفس المهمة
بالطبع هذه المقارنات ليست صحيحة دائماً
ﻷنها لم تبنى على أساس علمي في بعضها,
لغة C بطبعها لغة متوسطة المستوى )أو
فى بعض اﻻحيان تصنف لغة منخفضة
المستوي (, و بالتالي فهي قريبة من
المعالج و الذاكرة و سريعة جداً,
و لكن في لغة C++ زيادة اﻷداء يكون
بطرق أكثر أماناً و تعطي تلك الطرق
كفاءة تفوق كفاءة C في أحيان عدة,
كـ Inlining و الـ MetaProgramming و
الـ Templates و اللذان يعتبران أدوات الـ
Generic Programming في لغة ,C++
لن يسعني طبعا الحديث عن هذه الميزات
كلها , أعتقد أن Google كفيل بذلك,
عموماً الناحية الوحيدة, التي ينتقدها
مناصرو C هي الكائنات في لغة ,C++
بالطبع ﻻ تنسى أن برامج عمﻼقة كتبت بـ +
C+ كـ Office و غيره, و باستخدام البرمجة
الكائنية على ما أعتقد.
اﻵن لماذا يحدث هذا البطئ المنشود عند
استخدام OOP في لغة C++ هذا يمكن أن
يكون مقاﻻً بحاله, رأيت اجابة بعض اﻻخوة
عن المقارنة بين C وC++ وجذبني بعض
الردود وحبيت انقلها واعلق عليها :
-1 بتقدر تقول نفس اللغة إﻻ أن سي ﻻ
تدعم ما يسمّى بالفئات Classes والكائنات
objects في حين تدعمها السي...++ وسي
++ تحوي كل أوامر سي ومضاف اليها
أشياء جديدة..
الرد :
معذرة اخى الكريم صاحب الرد السابق
المقتبس ولكن السى تختلف تماماً عن
السى بلس بلس, ولغة السى بلس بلس ﻻ
تحتوى السى, كل لغة منفصلة بذاتها وﻻ
عﻼقة لها باللغة اﻻخرى.
ﻻحظ انه بنفس المنطق استطيع ان ادعي
ان لغة السى هى تطوير للغة اﻻسمبلى
ﻻنك بمترجم لغة السى تستطيع ان تقوم
تقريباً بكل ما تقوم به بلغة اﻻسمبلي,
السؤال هو هل لغة السى هى لغة
اسمبلي معى بعض اﻻضافات؟ بالتاكيد ﻻ.
كذلك لغة السى بلس بلس ﻻ تعتبر هى
لغة السى معى بعض اﻻضافات..
لغة السى بلس بلس لها فلسفة مختلفة
تماماً عن لغة السى فى تعتمد بشل كامل
على الclasses والTemplets
والoverload والinharitens الخ ..
بينما لغة السى فهى لغة تسمى
procedural language وتعتمد على
إنشاء الدوال ..
وكما انك تستطيع دمج لغة اﻻسمبلى معى
لغة السى او السى بلس بلس, ايضاً
تستطيع دمج لغة السى بلس بلس معى
لغة السى, مثل بسيط:
فى لغة السى نستخدم الدالة printf
للطباعة, نفس الدالة تستطيع ان تستخدمها
معى لغة السى بلس بلس, ولكنك بذلك
تكسر قاعدة من قواعد اللغة ﻻن الدالة
printf ﻻ تستطيع عمل overload
لها,ولذلك يجب عليك ان تستخدم الدالة
cout ﻻنها جزء من لغة السى بلس بلس.
ايضاً لغة السى بلس بلس تستخدم فى
المشاريع الضخمة ﻻنها لغة ذات مستوى
اعلى من لغة السى ويمكن عمل هيكلة
لمشروع بشكل افضل ينقلك من التعامل
معى الهاردوير إلى مرحلة تتعامل فيها
معى اشياء نظرية سهلة
بالطبع معظم المقارنات بين اللغتين على الويب
هي غالبا حول الفرق في أداء اللغتين ﻷداء نفس المهمة
بالطبع هذه المقارنات ليست صحيحة دائماً
ﻷنها لم تبنى على أساس علمي في بعضها,
لغة C بطبعها لغة متوسطة المستوى )أو
فى بعض اﻻحيان تصنف لغة منخفضة
المستوي (, و بالتالي فهي قريبة من
المعالج و الذاكرة و سريعة جداً,
و لكن في لغة C++ زيادة اﻷداء يكون
بطرق أكثر أماناً و تعطي تلك الطرق
كفاءة تفوق كفاءة C في أحيان عدة,
كـ Inlining و الـ MetaProgramming و
الـ Templates و اللذان يعتبران أدوات الـ
Generic Programming في لغة ,C++
لن يسعني طبعا الحديث عن هذه الميزات
كلها , أعتقد أن Google كفيل بذلك,
عموماً الناحية الوحيدة, التي ينتقدها
مناصرو C هي الكائنات في لغة ,C++
بالطبع ﻻ تنسى أن برامج عمﻼقة كتبت بـ +
C+ كـ Office و غيره, و باستخدام البرمجة
الكائنية على ما أعتقد.
اﻵن لماذا يحدث هذا البطئ المنشود عند
استخدام OOP في لغة C++ هذا يمكن أن
يكون مقاﻻً بحاله, رأيت اجابة بعض اﻻخوة
عن المقارنة بين C وC++ وجذبني بعض
الردود وحبيت انقلها واعلق عليها :
-1 بتقدر تقول نفس اللغة إﻻ أن سي ﻻ
تدعم ما يسمّى بالفئات Classes والكائنات
objects في حين تدعمها السي...++ وسي
++ تحوي كل أوامر سي ومضاف اليها
أشياء جديدة..
الرد :
معذرة اخى الكريم صاحب الرد السابق
المقتبس ولكن السى تختلف تماماً عن
السى بلس بلس, ولغة السى بلس بلس ﻻ
تحتوى السى, كل لغة منفصلة بذاتها وﻻ
عﻼقة لها باللغة اﻻخرى.
ﻻحظ انه بنفس المنطق استطيع ان ادعي
ان لغة السى هى تطوير للغة اﻻسمبلى
ﻻنك بمترجم لغة السى تستطيع ان تقوم
تقريباً بكل ما تقوم به بلغة اﻻسمبلي,
السؤال هو هل لغة السى هى لغة
اسمبلي معى بعض اﻻضافات؟ بالتاكيد ﻻ.
كذلك لغة السى بلس بلس ﻻ تعتبر هى
لغة السى معى بعض اﻻضافات..
لغة السى بلس بلس لها فلسفة مختلفة
تماماً عن لغة السى فى تعتمد بشل كامل
على الclasses والTemplets
والoverload والinharitens الخ ..
بينما لغة السى فهى لغة تسمى
procedural language وتعتمد على
إنشاء الدوال ..
وكما انك تستطيع دمج لغة اﻻسمبلى معى
لغة السى او السى بلس بلس, ايضاً
تستطيع دمج لغة السى بلس بلس معى
لغة السى, مثل بسيط:
فى لغة السى نستخدم الدالة printf
للطباعة, نفس الدالة تستطيع ان تستخدمها
معى لغة السى بلس بلس, ولكنك بذلك
تكسر قاعدة من قواعد اللغة ﻻن الدالة
printf ﻻ تستطيع عمل overload
لها,ولذلك يجب عليك ان تستخدم الدالة
cout ﻻنها جزء من لغة السى بلس بلس.
ايضاً لغة السى بلس بلس تستخدم فى
المشاريع الضخمة ﻻنها لغة ذات مستوى
اعلى من لغة السى ويمكن عمل هيكلة
لمشروع بشكل افضل ينقلك من التعامل
معى الهاردوير إلى مرحلة تتعامل فيها
معى اشياء نظرية سهلة