هذه الدورة مفتوحة الوصول موجهة لأولئك الذين هم على دراية بلغة C والبرمجة الموجهة للكائنات نحو مستوى إتقان برمجة C++. تغطي الدورة أساسيات برمجة C++ وتنتقل إلى دلالات ومفاهيم C++ المتقدمة.
الميزات الرئيسية :
إذا استمتعت بالدورة أو وجدتها مفيدة ، يرجى إضافة نجمة
# | عنوان | التركيز الرئيسي |
---|---|---|
1 | مقدمة (أتش تي أم أل) | تاريخ لغة C/C++، مجالات التطبيقات، مقدمة الدورة |
2 | التحضير (أتش تي أم أل) | كتب كيفية التجميع، مرحبا بالعالم |
3 | المفاهيم الأساسية 1 (html) | نوع النظام، والأنواع الأساسية، والمشغلين |
4 | المفاهيم الأساسية 2 (html) | أنواع النقطة التكاملية والعائمة وحساباتها |
5 | المفاهيم الأساسية III (html) | الكيانات، العدادون، الهياكل، بيانات تدفق التحكم |
6 | المفاهيم الأساسية الرابعة (html) | الكومة، المكدس، المؤشرات، المراجع، خصائص Const، عوامل التحويل |
7 | المفاهيم الأساسية V (html) | الوظائف، تعبيرات لامدا، توجيهات المعالجة المسبقة |
8 | البرمجة الشيئية 1 (html) | التسلسل الهرمي للفئة، المنشئ، المدمر، الكلمات الرئيسية للفئة |
9 | البرمجة الشيئية 2 (html) | تعدد الأشكال، التحميل الزائد على المشغلين |
10 | القوالب والبرمجة التعريفية 1 (html) | قالب الوظيفة، سمات الكتابة، الأدوات المساعدة لوقت الترجمة |
11 | القوالب والبرمجة التعريفية 2 (html) | قالب الفصل، SFINAE |
12 | وحدات الترجمة 1 (html) | الربط وقاعدة التعريف الواحدة |
13 | وحدات الترجمة 2 (html) | التعامل مع وحدات وملفات الترجمة المتعددة، #include ، Modules |
14 | اتفاقيات التعليمات البرمجية I (html) | تنظيم المشروع، مقدمة اصطلاحات الكود، اصطلاحات الكيانات |
15 | اتفاقيات الكود 2 (html) | اصطلاحات القالب ومساحة الاسم وC++ الحديثة وقابلية الصيانة والتسمية والتنسيق |
16 | تصحيح الأخطاء والاختبار (html) | التنفيذ / تصحيح أخطاء الذاكرة، المطهرات، تقنيات هاردينج، اختبار الوحدة، التطوير القائم على الاختبار |
17 | النظام البيئي (أتش تي أم أل) | Cmake والتوثيق وأدوات أخرى |
18 | المرافق (أتش تي أم أل) | المكتبات std القياسية |
19 | الحاويات والمكررات والخوارزميات (html) | الحاويات، التكرارات، الخوارزميات، النطاقات |
20 | موضوعات متقدمة 1 (html) | نقل الدلالات، المرجع العالمي، نوع الخصم |
21 | موضوعات متقدمة 2 (html) | معالجة الأخطاء، مصطلحات C++، المؤشرات الذكية |
22 | تحسينات الأداء 1 (html) | قانون أحمدال، حدود الأداء، المفاهيم المعمارية (ILP، SIMD، إلخ)، التسلسل الهرمي للذاكرة |
23 | تحسينات الأداء 2 (html) | التحسينات الحسابية، وتحسينات الذاكرة، وما إلى ذلك. |
24 | تحسينات الأداء III (html) | تحسينات المترجم، والتوصيف، وأدوات قياس الأداء |
25 | تصميم البرمجيات 1 (html) | المفاهيم الأساسية والمبادئ وحالات الاستخدام |
26 | تصميم البرمجيات 2 (html) | أنماط التصميم والتعابير |
كتاب الكل في واحد : Modern-cpp.pdf (قد يكون هناك عدد قليل من الالتزامات)، html
1. مقدمة
2. التحضير
3. المفاهيم الأساسية I - نظام الكتابة، والأنواع الأساسية، والمشغلين
void
، nullptr
auto
<=>
، عوامل تشغيل المقارنة الآمنة4. المفاهيم الأساسية 2 – أنواع النقاط المتكاملة والعائمة
size_t
، ptrdiff_t
، uintptr_t
، دلالات العمليات الحسابية، الترويج، الاقتطاع، السلوك غير المحدد، التشبع الحسابيNaN
)، آلة إبسيلون، الوحدات في المكان الأخير (ULP)، ورقة الغش، الحدود والوظائف المفيدة، الحساب الخصائص، سلوك القيم الخاصة، السلوك غير المحدد، اكتشاف أخطاء الفاصلة العائمة5. المفاهيم الأساسية III - الكيانات وتدفق التحكم
struct
، بيتفيلد، union
if
، حلقات for
و while
، Range-base for
الحلقة، switch
، goto
، تجنب التحذير المتغير غير المستخدمusing
-declaration، using namespace
، مساحة الاسم inline
[[nodiscard]]
، [[maybe_unused]]
، [[deprecated]]
، [[noreturn]]
6. المفاهيم الأساسية IV – مفاهيم الذاكرة
&
الوصول إلى أعضاء struct
، المؤشر void
، تحويل المؤشر، حساب المؤشر، المؤشرات البرية والمتدليةnew
، delete
، تخصيص المواضع غير المخصصة، تخصيص عدم الرمي، تسرب الذاكرةConst
والثابتة : المضمون والحرف، const
، constexpr
، consteval
، constinit
، if constexpr
، std::is constant evaluated()
، if consteval
volatile
static_cast
، const_cast
، reinterpret_cast
، نوع التورية، std::bit_cast
، تحويل التهيئة الموحد، gls::narrow_cast
sizeof
المشغل : نظرة عامة، [[no_unique_address]]
7. المفاهيم الأساسية V - الوظائف والمعالجة المسبقة
=delete
، والمعلمات الافتراضيةconstexpr/consteval
، template
، mutable
، [[nodiscard]]
، قائمة الالتقاط والفئات#
)، #error
و #warning
، #pragma
، عامل لصق الرمز المميز ##
، الماكرو المتغير8. البرمجة الشيئية I – مفاهيم الصنف
public/protected/private
لأعضاء البيانات؟explicit
، [[nodiscard]]
والفئات= default
)this
static
const
mutable
using
friend
delete
9. البرمجة كائنية التوجه 2 - تعدد الأشكال والتحميل الزائد على المشغل
virtual
، الجدول الظاهري، override
الكلمة الأساسية، الكلمة الأساسية final
، الأخطاء الشائعة، الطريقة الافتراضية البحتة، الطبقة المجردة والواجهة<
، مشغل سفينة الفضاء <=>
، عامل التشغيل المنخفض []
، عامل التشغيل المنخفض متعدد الأبعاد []
، مشغل استدعاء الوظيفة ()
، المشغل الثابت []
والمشغل ()
، مشغل التحويل T()
، التحميل الزائد من نوع الإرجاع الدقة، عوامل الزيادة والنقصان ++
/ --
، عامل التعيين =
، عامل الدفق <<
، ملاحظات المشغل10. القوالب والبرمجة التعريفية I - قوالب الوظائف والأدوات المساعدة لوقت الترجمة
auto
، نوع معلمة قالب الفئة، أنواع المصفوفات والمؤشر، نوع الوظيفةstatic_assert
، using
الكلمة الأساسية، الكلمة الأساسية decltype
11. القوالب والبرمجة التعريفية II - قوالب الفصل وSFINAE
typename
والكلمات الرئيسية template
، التسلسل الهرمي لقالب الفصل using
، الكلمة الرئيسية friend
، وسائط قالب القالبconcept
، requires
جملة، requires
تعبيرًا، requires
تعبيرًا + عبارة، requires
جملة + تعبير، requires
و constexpr
، requires
متداخلة12. وحدات الترجمة I - الربط وقاعدة التعريف الواحدة
static
، مساحة الاسم المجهولة، الكلمات الرئيسية extern
const
و constexpr
: فشل ترتيب التهيئة الثابتةinline
، constexpr
inline
extern
extern
13. وحدات الترجمة II - التضمين والوحدة النمطية ومساحة الاسم
#include
المشكلات : تضمين الحماية، والإعلان الأمامي، والتبعيات الدائرية، وأخطاء الارتباط الشائعة14. اتفاقيات الكود I
#include
: #include
Guard، #include
Syntax، ترتيب #include
، اصطلاحات اسم الملف الرئيسي/المصدر الشائعةstatic
، التحويلاتstruct
مقابل class
، التهيئة، قوائم المُهيئات المُثبتة، وظائف الأعضاء الخاصة، =default
، =delete
، مشكلات أخرى، الميراث، النمط15. اتفاقيات المدونة II
auto
if/else
، المقارنة، switch
، for/while
using namespace
، ومساحة الاسم المجهولة/غير المسماة، ومساحة الاسم وتصميم الفئة، والنمط16. التصحيح والاختبار
std::breakpoint
valgrind
clang-tidy
17. النظام البيئي – Cmake وأدوات أخرى
cmake
و ctest
doxygen
clang-format
، Compiler Explorer
، تحويل الكود - CppInsights
، إكمال الكود المدعوم بالذكاء الاصطناعي - بحث الكود المحلي - ugrep
، ripgrep
، hypergrep
، محرك بحث الكود - searchcode/grep.app
، قياس الكود - Quick-Bench
، الخط للترميز18. المرافق
ofstream/ifstream
std::string
، التحويل من/إلى القيم الرقمية، std::string_view
، std::format
، std::print
std::span
<random>
، البذور، فترة PRNG وجودتها، التوزيع، الخوارزميات الحديثة والأداء، شبه عشوائيstd::pair
، std::tuple
، std::variant
، std::optional
، std::any
، std::stacktrace
19. الحاويات والتكرارات والخوارزميات
std::array
، std::vector
، std::deque
، std::list
، std::forward_list
std::set
، std::map
، std::multiset
std::stack
، std::queue
، std::priority_queue
std::advance
، std::next
، std::prev
، std::distance
، طرق الوصول إلى الحاوية، سمات التكرارstd::find_if
، std::sort
، std::accumulate
، std::generate
، std::remove_if
20. موضوعات متقدمة I
lvalues
rvalues
، نقل الدلالي، std::move
، إعلان الفئة الدلالية&
، &&
مؤهلات المرجع والحمولة الزائدة volatile
auto
، auto(x)
: نسخة تسوسconst
21. موضوعات متقدمة II
noexcept
، مشكلات تخصيص الذاكرة، رمز الإرجاع وملخص الاستثناء، std::expected
، أساليب بديلة لمعالجة الأخطاءstd::unique_ptr
، std::shared_ptr
، std::weak_ptr
22. التحسين الأول – المفاهيم الأساسية
23. التحسين الثاني - تحسين الكود
printf
، الإدخال/الإخراج المعين للذاكرة، تسريع تحميل البيانات الأولية[[likely]]
/ [[unlikely]]
، الأعداد الصحيحة الموقعة/غير الموقعة، الحلقات، رفع الحلقة، فتح الحلقة، التأكيدات، تلميحات المترجم [[assume]]/std::unreacheable()
, العودية24. التحسين III - التحسينات غير المتعلقة بالتشفير وقياس الأداء
gprof
، uftrace
، callgrind
، cachegrind
، ملف تعريف Linux perf
25. تصميم البرمجيات 1 - المفاهيم الأساسية (مسودة)
26. تصميم البرمجيات 2 - أنماط التصميم والتعابير (مسودة)
إذا وجدت أي خطأ مطبعي، أو خطأ مفاهيمي، أو قسم بحاجة إلى تحسين، فيرجى الإبلاغ عنه باستخدام لوحة issue
.
Federico Busato
، https://federico-busato.github.io/