ماهو أصل و تاريخ لغة لغة السي بلس بلس C++ ؟
ماهو أصل و تاريخ لغة لغة السي بلس بلس C++ ؟

لغة C++ هي لغة برمجة عالية المستوى للأغراض العامة تم تطويرها في عام 1979 بواسطة Bjarne Stroustrup في مختبرات AT & T Bell.



قبل الحديث عن تاريخ C++، دعونا نلقي نظرة على لغات البرمجة التي تم تطويرها قبل C++. قبل ظهور لغة البرمجة C++، تم تطوير العديد من لغات البرمجة المختلفة.
إليكم 5 لغات برمجة التي تم تطويرها قبل C++.







سنلقي نظرة على تاريخ إسم لغة C++. فأثناء تطوير هذه اللغة تمت إقتراح في البداية لغة C++ (C plus plus) بإسم "new C". ثم تمت إعادة تسميتها إلى "C with Classes"، مما يعني أنها كانت مجموعة شاملة من لغة C المعروفة. ثم تمت إعادة التسمية النهائية للغة في عام 1983 بواسطة Rick Mascitti إلى "C++". يأتي ++ في C++ من لغة C. في لغة C، تعني ++ زيادة المتغير بمقدار 1. لذا، تعني C++ تقريبًا "واحد أكثر من C".
تناول Bjarne Stroustrup أصل إسم "C++" في مقدمة كتابه "لغة برمجة C++"، قائلًا إن إسم "C++" مستوحى من كتاب جورج أورويل ألف وتسعمائة وأربعة وثمانون. عندما سُئل Rick Mascitti عن التسمية في عام 1992، أشار إلى أن الاسم أُعطي بطريقة فكاهية. لم يعتقد أبدًا أن "C++" سيصبح الاسم الرسمي للغة.


تصميم وتطوير فكرة و فلسفة لغة البرمجة C++ كان في سنة C++ (1994) بواسطة Bjarne Stroustrup










الواجهة عبارة عن بنية برمجة تصف سلوك كلاس ما في لغة C++ دون تحديد تطبيق محدد لتلك الكلاس . على سبيل المثال، إذا كان لدينا كلاس Car و كلاس Scooter، فيجب أن يكون لكل كلاس من هذه الكلاس إجراء (وظيفة) LightsOn(). نظرًا لأن كلا الكلاسين تشتركان في نفس الإجراء، فيمكننا إنشاء واجهة لتقليل التعليمات البرمجية وتحسين كفاءة البرنامج. ولكن كيفية تشغيل الأضواء ستعتمد على تنفيذ الدالة LightsOn() في كل كلاس . بمعنى آخر، سيكون لكلا الكلاسين كلاس أصل تحتوي على الدالة LightsOn() بداخلها. ولكن سيتم شرح التفاصيل المحددة لكيفية تشغيل الأضواء في الوحدات المعنية.




تنقل الواجهات والكلاسات المجردة نفس الفكرة بشكل أو بآخر. ولهذا السبب يتم تنفيذ الواجهات في C++ باستخدام الكلاسات المجردة. يسمى الكلاس ذات الدالة الافتراضية البحتة pure virtual بالكلاس المجرد في لغة c++. يمكننا إنشاء دالة افتراضية عن طريق كتابة "= 0" في إعلان الدالة .


class Cuboid
{
public:
virtual float calculateVolume() = 0;
// A pure virtual function
private:
float length;
float width;
float height;
};
لقد قمنا بالتصريح عن دالة افتراضية countVolume() داخل الكلاس Cuboid. ولهذا السبب، أصبح كلاس المكعبات كلاس مجرد. الغرض من هذا الكلاس المجرد هو أن تكون بمثابة فئة أساسية مناسبة للكلاسات الأخرى. يمكن الآن للكلاسات التي ترث كلاس المكعب أن تحدد (وتنفذ) دالة countVolume() حسب حاجتها.

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

#include <iostream>
using namespace std;
// Interface class
class Shape {
public:
float dimension = 10;
// pure virtual function
virtual float findVolume() = 0;
};
// Derived class 1
class Sphere: public Shape {
public:
float findVolume() {
float volume = 4.0 * 3.14 * dimension * dimension * dimension / 3.0;
return volume;
}
};
// Derived class 2
class Cube: public Shape {
public:
float findVolume() {
float volume = dimension * dimension * dimension;
return volume;
}
};
int main() {
Sphere s1;
Cube c1;
cout << "The volume of sphere of radius 10 is: " << s1.findVolume() << endl;
cout << "The volume of cube of side length 10 is: " << c1.findVolume() << endl;
return 0;
}
مخرجات البرنامج:
The volume of sphere of radius 10 is: 4186.67
The volume of cube of side length 10 is: 1000
في المثال أعلاه، قمنا بإنشاء كلاس مجرد يسمى الشكل Shape .نظرًا لاختلاف صيغ حساب حجم المكعب والكرة، فقد أنشأنا دالة افتراضية تسمى findVolume() في كلاس الشكل.ثم استخدمنا هذه الدالة الافتراضية في الكلاسات المشتقة (الكرة والمكعب) لحساب أحجام الأشكال المعنية. ساعدتا كلاس الواجهة الذي أنشأناه على تجنب تكرار التعليمات البرمجية وتوفير وقتنا أيضًا.

يجب أن نحتفظ بقواعد معينة في أذهاننا أثناء العمل مع الواجهات في لغة C++ :







Comments