C++ Programming Language
C++ Programming Language
Faculty of Engineering
Petroleum Engineering Department
Prepared by:
Nour Abdulslam Elhashmi
ID:
2190203443
Winter 2024
اإلهداء
هذا البحث مخصص آلبائنا وأمهاتنا وعائالتنا ،الذين شجعونا طوال الطريق
وتأكدوا من أننا نبذل كل ما في وسعنا إلكمال ما بدأناه.
I
الشكر
الحمد لله رب العالمين ،والصالة والسالم على سيدنا محمد وعلى آله
وصحبه أجمعين .نشكر الله سبحانه وتعالى على توفيقه وعونه في إتمام
هذا البحث.
نتقدم بجزيل الشكر واالمتنان لعائالتنا الكريمة التي كانت دائًما مصدًر ا
للدعم والتشجيع واإللهام إلتمام هذا العمل .لقد كان لوجودهم ودعائهم
األثر الكبير في إنجاز هذا التقرير.
وأخيًر ا ،ال يسعنا إال أن نتقدم بالشكر الجزيل ألصدقائنا وزمالئنا ولكل من
ساندنا ودعمنا إلكمال هذا التقرير .فلهم منا كل التقدير واالحترام.
II
الخالصة
يستكشف هذا البحث لغة البرمجة ،++Cويقدم فحًصا متعمًقا لتاريخها
وميزاتها وتطبيقاتها .ويغطي المفاهيم األساسية وأنواع الوظائف والميزات
المتقدمة ،ويقيم إيجابيات وسلبيات استخدام .++Cويهدف التقرير إلى
تسليط الضوء على أهمية ++Cفي البرمجة الحديثة وأهميتها في مختلف
الصناعات.
III
المحتويات
2..................................................................................C++ (Introduction to C++) مقدمة إلى. 1
2.......................................)Brief History and Origin 1.1( تاريخ موجز وأصل 1.1
2............................................)Definition and Purpose 1.2( التعريف والغرض 1.2
3................)Role in Modern Software Development 1.3( الدور في تطوير البرمجيات الحديثة1.3
7..............................................................................C++ (Overview of C++) نظرة عامة على. 2
7. .)Comparison with Other Programming Languages 2.1( المقارنة مع لغات البرمجة األخرى2.1
8...................C++ (2.2 Fields and Industries Using C++) المجاالت والصناعات التي تستخدم2.2
9............................................)Current Trends and Updates 2.3( االتجاهات والتحديثات الحالية2.3
9.....................................................................................C++20 (C++20 Features) ميزات2.3.1
10......................and Machine Learning)زيادة التبني في الذكاء االصطناعي والتعلم اآللي2.3.2
12..................................................................................................C++ أساسيات لغة 3
12............................................)Syntax and Structure( البنية العامة والهيكل 3.1
12......................)Variables and Data Types( المتغيرات وأنواع البيانات 3.2
13.................)Input and Output Operations( عمليات اإلدخال واإلخراج 3.3
13.................................................................)Control Structures( هياكل التحكم 3.4
13........................................................ )Function Components( مكونات الدوال 3.5
14.................)Advanced Function Topics( مواضيع متقدمة في الدوال 3.6
16.....................................................................................C++ (Functions in C++) الدوال في. 4
16............................................................)Types of Functions 4.1( أنواع الدوال 4.1
User-Defined( الدوال الُمعّر فة من قبل المستخدم 4.1.1
16 )Functions
17................................................................)Library Functions( دوال المكتبة 4.1.2
17....................................................)Function Components 4.2( مكونات الدالة 4.2
18..........)Advanced Function Topics 4.3( مواضيع متقدمة عن الدوال 4.3
18.................................)Function Overloading( التحميل الزائد للدوال 4.3.1
19.........................................................)Inline Functions( الدوال المضمنة 4.3.2
IV
الدوال التراجعية (20.................................................)Recursive Functions 4.3.3
أفضل الممارسات الستخدام الدوال (Best Practices for 4.4 4.4
20 )Using Functions
4.5تطبيقات العالم الحقيقي للدوال (21......................)Real-World Applications of Functions 4.5
الميزات المتقدمة في 23.............................................................................C++ 5
القوالب ( - Templatesالقوالب)23............................................................................... 5.1
مكتبة القوالب القياسية (24.................)Standard Template Library - STL 5.2
البرمجة كائنية التوجه ( - Object-Oriented Programmingالبرمجة كائنية 5.3
24 التوجه)
المؤشرات الذكية ( - Smart Pointersالمؤشرات الذكية)25............................... 5.4
التعبيرات الل - Lambda Expressions( ambdaتعبيرات الل26.................)ambda 5.5
تعدد الخيوط ( - Multithreadingتعدد الخيوط) والتزامن (- Concurrency 5.6
27 التزامن)
المزايا والعيوب في 29................................................................................C++ 6
6.1المزايا29....................................................................................................................... 6.1
العيوب30.................................................................................................................... 6.2
تطبيقات 31.........................................................................................................C++ 6.3
الخاتمة ومستقبل )34...................................C++ (Conclusion and Future of C++ 7
الخاتمة34...................................................................................................................: 7.1
مستقبل 34.........................................................................................................C++: 7.2
التوجهات المستقبلية34............................................................................... : 7.3
المراجع36........................................................................................................................... 8
V
VI
الفصل الأول
1
.مقدمة إلى )C++ (Introduction to C++ 1
تاريخ موجز وأصل ()Brief History and Origin 1.1 1.1
ُطّورت لغة ++Cبواسطة بيارن ستروستروب ( )Bjarne Stroustrupفي مختبرات بيل (
)Bell Labsفي أوائل الثمانينيات كتحديث للغة البرمجة .Cنشأ دافع ستروستروب من
رغبة في إنشاء لغة تجمع بين أداء وتحكم Cمنخفض المستوى مع ميزات برمجة
عالية المستوى ،مثل تجريد البيانات والبرمجة كائنية التوجهُ .سّم يت اللغة في األصل "
،"C with Classesوقّدمت مفهوم الفئات ( ،)classesالذي وّفر طريقة منظمة لتجميع
البيانات والوظائف المرتبطة بها .بحلول عام ُ ،1983أعيد تسميتها رسمًيا إلى ،++C
حيث يرمز الرمز " "++إلى زيادة ،ويمّثل تحسيًنا على سابقتها.C (Stroustrup, 2013) ،
كان التبني المبكر للغة ++Cمدفوًعا بقدرتها الفريدة على سد الفجوة بين البرمجة
على مستوى األجهزة وتطوير البرمجيات عالية المستوى .على مر العقود ،خضعت
++Cلعدة مراجعات ،تمّيزت بمعايير التوحيد القياسية مثل C++98و C++03و C++11
و C++14و C++17و .C++20قّدم كل تحديث ميزات حديثة لتلبية االحتياجات
المتطورة لتطوير البرمجيات .على سبيل المثال ،أضافت C++11تعبيرات المدا (
)lambda expressionsوالمؤشرات الذكية ( )smart pointersودعم تعدد مؤشرات
الترابط ( ،)multi-threadingبينما قّدمت C++20الوحدات ( )modulesوالمفاهيم (
)conceptsلتعزيز تنظيم الكود ووضوحه .لقد ضمنت هذه التطورات أن تظل ++Cأداة
قوية وذات صلة في مشهد البرمجة.
كانت رؤية ستروستروب للغة ++Cهي إنشاء لغة يمكنها التعامل مع أنظمة
البرمجيات المعقدة دون التضحية بالكفاءة أو المرونة .تردد صداها هذه الرؤية مع
المطورين عبر الصناعات ،مما رّس خ ++Cكمعيار لبرمجة مستوى النظام وتطوير
األلعاب وتطبيقات الوقت الفعلي .يبرز طول عمرها وتطورها قدرتها على التكيف
وأهميتها في سياقات هندسة البرمجيات التاريخية والمعاصرة.
2
التعريف والغرض ()Definition and Purpose 1.2 1.2
++Cهي لغة برمجة عالية المستوى تدعم كًال من النماذج اإلجرائية والكائنية التوجه،
مما يجعلها لغة متعددة النماذج ومتعددة االستخدامات .تسمح طبيعتها المزدوجة
للمطورين باختيار النموذج األنسب لمهامهم المحددة ،حيث تمزج إدارة الذاكرة
منخفضة المستوى مع التجريدات عالية المستوى .هذا المزيج هو سمة مميزة للغة
++Cوقد عزز مكانتها في عالم البرمجة (.)Meyers, 2005
إحدى أكثر ميزات ++Cإقناًعا هي قدرتها على توفير تحكم دقيق في موارد النظام.
يمكن للمطورين إدارة تخصيص الذاكرة وإلغاء تخصيصها بشكل صريح ،وهو أمر بالغ
األهمية للتطبيقات الحساسة لألداء .باإلضافة إلى ذلكُ ،تقّدم مكتبتها القياسية
الواسعة أدوات لمعالجة البيانات والحسابات الرياضية وعمليات اإلدخال/اإلخراج ،مما
يقلل الحاجة إلى التبعيات الخارجية.
3
يمتد غرض اللغة إلى ما هو أبعد من المواصفات الفنية؛ فهي بمثابة أساس لبناء
أنظمة برمجيات قوية وقابلة للتطوير وقابلة للصيانة .لقد جعل مزيجها من األداء
والمرونة والتجريد خياًر ا مفضاًل لتطوير مجموعة واسعة من التطبيقات ،من الحوسبة
عالية األداء إلى تطبيقات سطح المكتب سهلة االستخدام.
4
األنظمة المالية ()Financial Systems
غالًبا ما يعتمد القطاع المالي على ++Cلتطوير أنظمة التداول وأدوات تحليل
المخاطر والتطبيقات األخرى عالية التردد .دقة اللغة وسرعتها أمران بالغان األهمية
للتعامل مع الحسابات المعقدة ومعالجة كميات كبيرة من البيانات في الوقت الفعلي.
تسرب الذاكرة.
ومعبرة.
مؤشرات الترابط.
التجميع.
5
تعكس هذه الميزات التزام اللغة بالحفاظ على أهميتها مع الحفاظ على مبادئها
األساسية .من خالل دمج نماذج البرمجة الحديثة ،تستمر ++Cفي تلبية متطلبات
تطوير البرمجيات المعاصرة.
6
الفصل الثاني
7
.نظرة عامة على )C++ (Overview of C++ 2
المقارنة مع لغات البرمجة األخرى (Comparison with Other 2.1 2.1
)Programming Languages
تشتهر ++Cبأدائها االستثنائي وتعدد استخداماتها ،مما يميزها عن لغات البرمجة األخرى مثل Python
و Javaو .#Cبينما تخدم كل لغة أغراًضا متميزة ،فإن ++Cتبرز في مجاالت محددة حيث يكون
التحكم والكفاءة والسرعة ذات أهمية قصوى.
8
،#Cوهي لغة طورتها ،Microsoftتشترك في العديد من أوجه التشابه مع Javaولكنها
تتكامل بإحكام مع نظام NET.البيئيُ .تستخدم بشكل شائع لتطوير تطبيقات
Windowsوبرامج المؤسسات .بينما توفر #Cسهولة التطوير مع ميزات مثل اإلدارة
التلقائية للذاكرة ،إال أنها تفتقر إلى أداء األنظمة األساسية والتحكم في مستوى
الموارد الموجود في .++Cعلى سبيل المثال ،غالًبا ما ُيفضل مطورو األلعاب ++C
للمهام كثيفة األداء داخل المحركات مثل ،Unrealعلى الرغم من أن ( Unityالتي
تستخدم #Cبشكل أساسي) هي بديل شائع للمشاريع األقل تطلًبا.
تظل ++ Cال مثيل لها في السيناريوهات التي تكون فيها برمجة مستوى األجهزة
واألداء في الوقت الفعلي أمًر ا بالغ األهمية ،مما يجعلها عنصًر ا أساسًيا في مجاالت
مثل أنظمة التشغيل وتطوير األلعاب والحوسبة العلمية.
9
تعتمد األنظمة المضمنة ،بدًءا من برمجيات السيارات وحتى األجهزة الطبية
واإللكترونيات االستهالكية ،بشكل كبير على .++Cتجعل قدرة اللغة على التفاعل
مباشرة مع األجهزة والعمل داخل بيئات مقيدة الموارد مثالية لهذه التطبيقات .على
سبيل المثال ،غالًبا ما تستخدم أنظمة المعلومات والترفيه في المركبات الحديثة
وأنظمة مساعدة السائق المتقدمة ++Cلمنطقها األساسي.
في القطاع الماليُ ،تستخدم ++Cعلى نطاق واسع لتطوير منصات التداول وأدوات
تحليل المخاطر وأنظمة التداول عالية التردد .سرعتها ودقتها أمران حاسمان لمعالجة
مجموعات البيانات الكبيرة وتنفيذ الصفقات بأقل زمن وصولُ .تعطي المؤسسات
األولوية لـ ++Cللخوارزميات التي تتطلب سلوًكا حتمًيا وأداًء في الوقت الفعلي.
تلعب ++Cدوًر ا محورًيا في البحث العلمي ،حيث ُتشغل عمليات المحاكاة في مجاالت
مثل الفيزياء والكيمياء والهندسة .توفر مكتبات مثل Boostو Eigenأدوات قوية
للحسابات العددية والنمذجة الرياضية .غالًبا ما تعتمد تطبيقات الحوسبة عالية األداء
على ++Cلالستفادة من المعالجة المتوازية واالستخدام الفعال للموارد.
++Cهي أداة أساسية في تطوير أنظمة التشغيل والنوى ،بما في ذلك مكونات
Windowsو Linuxو .macOSتسمح قدرات اللغة منخفضة المستوى للمطورين
بإدارة موارد النظام بشكل فعال وكتابة التعليمات البرمجية بالقرب من األجهزة.
10
MySQLو MongoDBلغة ++Cلوظائفها األساسية ،مستفيدة من كفاءة اللغة
وقابليتها للتوسع.
يسمح للمطورين بكتابة تعليمات برمجية غير متوقفة بشكل أكثر سهولة.
عامل المقارنة الثالثي (<=>) :تبسيط المقارنات من خالل تقديم عامل
ُتحاذي هذه الميزات ++Cمع نماذج البرمجة المعاصرة ،مما يضمن بقاءها ذات صلة
في صناعة سريعة التطور (.)ISO/IEC, 2020
11
زيادة التبني في الذكاء االصطناعي والتعلم اآللي ( 2.3.2
)Increased Adoption in AI and Machine Learning
على الرغم من أن Pythonتهيمن على الذكاء االصطناعي والتعلم اآللي ،إال أن ++C
تكتسب قوة دفع للمكونات الحساسة لألداء .تتضمن مكتبات مثل TensorFlowو
PyTorchوحدات خلفية ++Cللحسابات الُمحّس نة ،وغالًبا ما ُتستخدم ++Cلتطوير
خوارزميات مخصصة لتطبيقات عالية األداء.
تؤكد معايير ++Cالحديثة على البرمجة األكثر أماًنا واألكثر بساطة .تساعد الميزات
مثل المؤشرات الذكية واالستدالل على النوع الُمحّس ن المطورين على كتابة تعليمات
برمجية قوية مع عدد أقل من األخطاء .هذا التركيز على السالمة مهم بشكل خاص
في مجاالت مثل التمويل والرعاية الصحية ،حيث تعد الموثوقية أمًر ا بالغ األهمية.
ال تزال ++Cخياًر ا شائًعا للتطوير عبر األنظمة األساسية ،بفضل أدوات مثل Qtوأطر
عمل مثل .Boostتسمح هذه األدوات للمطورين بإنشاء تطبيقات تعمل بسالسة عبر
أنظمة تشغيل متعددة دون التضحية باألداء.
الفصل الثالث
12
أساسيات لغة ++C 3
البنية العامة والهيكل ()Syntax and Structure 3.1
البنية األساسية ألي برنامج مكتوب بلغة ++Cتتكون من الرؤوس ( ،)headersوالدالة
الرئيسية ( ،)main functionواألوامر ( .)statementsمثال:
>include <iostream#
;return 0
;int age = 25
;int number
14
C++ (Functions in C++) الدوال في .4
.)Declaration( التصريح .1
.)Definition( التعريف .2
.)Calling( االستدعاء .3
:مثال
;return a + b
{ )(int main
15
cout << add(5, 3); // Calling
;return 0
}
الفصل الرابع
16
.الدوال في )C++ (Functions in C++ 4
الدوال هي إحدى اللبنات األساسية في برمجة .++Cفهي تسمح للمطورين بتنظيم
الكود إلى مكونات معيارية قابلة إلعادة االستخدام مما يحسن قابلية القراءة والصيانة
والكفاءة .في ،++Cيمكن تصنيف الدوال بشكل عام إلى دوال ُمعّر فة من قبل
المستخدم ودوال مكتبة ،كل منها يخدم أغراًضا متميزة.
17
أنواع الدوال ()Types of Functions 4.1 4.1
(User-Defined المستخدم قبل من الُم عّر فة الدوال 4.1.1
)Functions
الدوال الُمعّر فة من قبل المستخدم هي تلك التي أنشأها المبرمج ألداء مهام محددة.
تتم كتابة هذه الدوال بشكل صريح في الكود وهي مصممة خصيًص ا لتلبية المتطلبات
الفريدة للبرنامج .فهي توفر نمطية من خالل السماح للمبرمج بتقسيم المهام
المعقدة إلى وحدات أصغر قابلة لإلدارة .على سبيل المثال:
>include <iostream#
}
" << coutمربع " << " << numهو;square(num) << endl << " :
;return 0
}
18
السلسلة .الستخدام دوال المكتبة ،يجب تضمين ملفات الرأس المناسبة .على سبيل
المثال:
>include <cmath#
>include <iostream#
cout << "2مرفوعة للقوة 3هيpow(base, exponent) << << " :
;endl
;return 0
}
اإلعالن (ُ :)Declarationيحدد إعالن الدالة ،المعروف أيًض ا باسم النموذج .1
األولي ،اسم الدالة ونوع اإلرجاع والمعامالتُ .يعلم الُمجّم ع بوجود الدالة قبل
تعريفها أو استخدامها .على سبيل المثالint add(int a, int b); // Declaration :
التعريف ( :)Definitionيوفر تعريف الدالة تنفيذ الدالة .ويشمل الكود الذي .2
يؤدي المهمة المطلوبة .على سبيل المثال:
19
;return a + b
}
;return 0
}
هنا ،يتم استدعاء الدالة addمع وسيطين 5 ،و .3تحسب الدالة مجموع هذين الرقمين
وترجع القيمة ،8والتي يتم تخزينها بعد ذلك في المتغير .sum
قيمة اإلرجاع ( :)Return Valueهي القيمة التي ُترجعها الدالة إلى الدالة التي
الكلمة وُتستخدم الدالة، إعالن في اإلرجاع نوع ُيحدد استدعتها.
المفتاحية returnإلرجاع القيمة .يمكن أن يكون للدالة نوع إرجاع ،voidمما يعني أنها
ال ُترجع أي قيمة.
>include <iostream#
20
//دوال محملة بشكل زائد
;return a * b
}
;return a * b
}
;return 0
}
>include <iostream#
;return x * x
}
21
;return 0
}
>include <iostream#
)if (n == 0 || n == 1
;return 1
}
;return 0
}
22
استخدم أسماء ذات معنى ( :)Use Meaningful Namesيجب أن تشير
تصميم البرامج النمطية (ُ :)Modular Program Designتمّكن الدوال من .2
تقسيم البرامج إلى وحدات أصغر ،كل منها يتعامل مع جانب محدد من
التطبيق ،مثل التحقق من صحة اإلدخال أو معالجة البيانات أو إنشاء
المخرجات.
إعادة االستخدام ( :)Reusabilityتقلل دوال المكتبة ،جنًبا إلى جنب مع .3
الدوال الُمعّر فة من قبل المستخدم ،من التكرار وتسمح بإعادة استخدام الكود
عبر مشاريع متعددة.
23
البرمجة الوظيفية في ) :C++ (Functional Programming in C++تدعم .4
++Cنماذج البرمجة الوظيفية مع ميزات مثل تعبيرات المدا ،مما يجعلها
متعددة االستخدامات لمهام مثل ردود النداء ومعالجة األحداث.
في الختامُ ،تعد الدوال ال غنى عنها في .++Cفهي تعزز النمطية وإعادة االستخدام
والوضوح ،مما ُيمّكن المطورين من كتابة تعليمات برمجية فعالة وقابلة للصيانة .توّس ع
المفاهيم المتقدمة مثل التحميل الزائد والدوال المضمنة والتراجع من فائدتها ،مما
يجعلها حجر الزاوية في برمجة ++Cالفعالة.
الفصل الخامس
24
الميزات المتقدمة في ++C 5
ُتعتبر لغة ++Cمن اللغات البرمجية الغنية بالميزات المتقدمة التي توفر للمطورين
أدوات قوية لبناء تطبيقات معقدة وفعالة .تشمل هذه الميزات:
مثال:
>include <iostream#
;return a + b
25
}
{ )(int main
;return 0
:مثال
>include <iostream#
>include <vector#
>include <algorithm#
{ )(int main
;sort(numbers.begin(), numbers.end())
}
26
;return 0
}
الوراثة ( - Inheritanceالوراثة) :إنشاء فئات جديدة بناًء على فئات موجودة
مسبًقا.
مثال:
>include <iostream#
>include <memory#
;return 0
27
}
:مثال
>include <iostream#
>include <vector#
>include <algorithm#
{ )(int main
;)}
;return 0
28
( تعدد الخيوط) والتزامن- Multithreading( تعدد الخيوط 5.6
) التزامن- Concurrency
ُتستخدم. مما يسمح بتنفيذ الشيفرة بشكل متواٍز، مكتبات لتعدد الخيوط++C ُتوفر
.> بشكل شائع إلدارة الخيوطthread< مكتبة
:مثال
>include <iostream#
>include <thread#
)(void printMessage
{ )(int main
;thread t(printMessage)
;)(t.join
29
;return 0
}
الفصل السادس
30
المزايا والعيوب في ++C 6
6.1المزايا 6.1
األداء ( - Performanceاألداء)
ُتعتبر ++Cواحدة من أسرع لغات البرمجة بفضل قربها من العتاد وقدرتها على إدارة
الموارد بكفاءةُ .تستخدم في التطبيقات التي تتطلب أداًء عالًيا مثل األلعاب ،األنظمة
المدمجة ،والمحاكاة العلمية .يسمح التحكم الدقيق في تخصيص وإدارة الذاكرة
بتحقيق أقصى أداء مقارنة بلغات أخرى تعتمد على جمع النفايات مثل Javaو.Python
ُتستخدم ميزات مثل المؤشرات ( - Pointersالمؤشرات) والقوالب (- Templates
القوالب) لتقديم حلول برمجية فعالة من حيث الزمن واالستهالك.
المرونة ( - Flexibilityالمرونة)
31
التعامل مع المشاريع المعقدة عبر التغليف ( - Encapsulationالتغليف) والوراثة (
- Inheritanceالوراثة).
رغم أن ُ ++Cتترجم إلى رمز آلة خاص بمنصة معينة ،فإن الشيفرة المصدرية
المكتوبة جيًدا تكون قابلة للنقل إلى منصات أخرى مع تعديالت بسيطةُ .يسهم ذلك
في جعلها خياًر ا مثالًيا لتطوير تطبيقات تعمل على أنظمة تشغيل متعددة مثل
Windowsو Linuxو.macOS
بفضل إرثها الذي يمتد لعدة عقود ،تمتلك ++Cمجتمًعا كبيًر ا من المطورين ومجموعة
هائلة من الموارد ،بما في ذلك األدلة ،والمنتديات ،ومكتبات األكواد .هذا اإلرث يجعلها
الخيار األول في المشاريع التي تحتاج إلى تكامل مع أنظمة أو تطبيقات مكتوبة
مسبًقا.
32
العيوب 6.2
التعقيد ( - Complexityالتعقيد) .1
تمتلك ++Cمجموعة كبيرة من الميزات ،مما يجعلها لغة معقدة إلى حد ما .يمكن أن
تكون هذه الميزات مربكة للمبتدئين الذين يواجهون صعوبة في فهم كيفية عمل
المؤشرات أو الوراثة المتعددة ( - Multiple Inheritanceالوراثة المتعددة) .كما أن كود
++Cيميل إلى أن يكون أقل وضوًح ا مقارنة بلغات أخرى مثل .Python
بينما تمنح ++Cالمطورين تحكًما كامًال في الذاكرة باستخدام المؤشرات ،يمكن أن
يؤدي سوء إدارة الذاكرة إلى أخطاء خطيرة مثل تسرب الذاكرة (- Memory Leaks
تسرب الذاكرة) أو استخدام الذاكرة بعد تحريرها ( - Use After Freeاالستخدام بعد
التحرير) .يتطلب ذلك خبرة كبيرة لضمان كتابة كود آمن وفعال.
عدم وجود جامع نفايات مدمج ( - Lack of Built-in Garbage Collection .3
عدم وجود جامع نفايات مدمج)
على عكس لغات مثل Javaو ,#Cتفتقر ++Cإلى جامع نفايات مدمج .يعني ذلك أن
المطورين بحاجة إلى تتبع جميع الكائنات الُمنشأة ديناميكًيا والتأكد من تحرير الذاكرة
عند عدم الحاجة إليها .قد يؤدي هذا إلى زيادة التعقيد واحتمالية األخطاء.
33
بسبب التعقيد في النظام النوعي ( - Type Systemالنظام النوعي) واستخدام
القوالب ،قد تستغرق مشاريع ++Cالكبيرة وقًتا طويًال للترجمة .يمكن أن يؤدي هذا
إلى تباطؤ عملية التطوير ،خاصة عند إجراء تغييرات صغيرة تحتاج إلى إعادة ترجمة
كبيرة.
بينما ُتعتبر ++Cمتوافقة مع اإلصدارات السابقة ،فإن هذا قد يؤدي إلى تعقيدات
إضافية .على سبيل المثال ،يمكن أن ُتسبب الشيفرات القديمة مشاكل في التوافق
مع اإلصدارات األحدث من المترجمات ،مما يتطلب تعديالت كبيرة.
ُتعتبر ++Cواحدة من أكثر لغات البرمجة استخداًم ا في العالم بفضل ميزاتها المتقدمة
وتعدد استخداماتها .تشمل التطبيقات الرئيسية:
ُتستخدم ++Cعلى نطاق واسع في تطوير ألعاب الفيديوُ .تعتبر محركات األلعاب مثل
Unreal Engineو CryEngineمبنية على ++Cنظًر ا لقدرتها على التعامل مع
الرسومات المعقدة والحسابات الفيزيائية .كما أن األداء العالي الذي تقدمه يجعلها
مناسبة لتطبيقات الزمن الحقيقي.
أنظمة التشغيل مثل Windowsو Linuxتحتوي على مكونات كبيرة مكتوبة بـ .++C
ُتعتبر اللغة مثالية لتطوير برمجيات النظام نظًر ا لمرونتها وقدرتها على الوصول إلى
العتاد مباشرة.
34
األنظمة الُم دمجة ( - Embedded Systemsاألنظمة الُم دمجة) .3
ُتستخدم ++Cفي البرمجيات المدمجة التي تعمل على أجهزة ذات موارد محدودة
مثل السيارات ،واألجهزة الطبية ،واألجهزة المنزلية الذكية .تسمح ميزاتها القريبة من
العتاد بتحقيق الكفاءة المطلوبة.
ُتستخدم ++Cبشكل شائع في تطوير منصات التداول عالية السرعة ،وأدوات تقييم
المخاطر ،ونماذج التحليل المالي .تتميز هذه التطبيقات بمتطلباتها العالية من حيث
السرعة والدقة ،وهو ما توفره .++C
غالًبا ما ُتستخدم ++Cفي تطبيقات الحوسبة العلمية والمحاكاة بسبب أدائها العالي.
ُتستخدم مكتبات مثل Eigenو Armadilloلتسريع العمليات الحسابية.
35
الفصل السابع
36
الخاتمة ومستقبل )C++ (Conclusion and Future of C++ 7
الخاتمة: 7.1
ُتعد ++Cواحدة من أكثر لغات البرمجة تأثيًر ا واستمرارية في مجال تطوير
البرمجيات .منذ إنشائها في الثمانينيات وحتى اليوم ،أثبتت ++Cمرونتها
وقدرتها على التكيف مع متطلبات التكنولوجيا المتغيرة .من خالل الجمع
بين األداء العالي والمرونة ،أصبحت اللغة خياًر ا شائًعا لتطوير البرمجيات
في مجموعة واسعة من المجاالت ،من األلعاب إلى األنظمة الُمدمجة .ومع
استمرار تحديث معايير اللغة ،تظل ++Cقادرة على تلبية احتياجات
المطورين المعاصرين.
37
االستدامة البيئية :مع التركيز المتزايد على كفاءة الطاقة، .3
سُتستخدم ++Cلتطوير تطبيقات أكثر استدامة من حيث استهالك
الموارد.
المراجع
38
المراجع 8
Stroustrup, B. (2013). The C++ Programming Language. 4th Edition.
Addison-Wesley.
Lippman, S. B., Lajoie, J., & Moo, B. E. (2012). C++ Primer. 5th Edition.
Addison-Wesley.
39
Highlights the modern evolution and relevance of C++ in the software
industry. Available at: https://herbsutter.com/
Describes the use of C++ in the development of the Chrome web browser.
Available at: https://www.chromium.org/
40
Industry practices in game development with C++. Available at:
https://www.gamedeveloper.com/
41