
هذه الدورة مفتوحة الوصول موجهة لأولئك الذين هم على دراية بلغة 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 ، nullptrauto<=> ، عوامل تشغيل المقارنة الآمنة4. المفاهيم الأساسية 2 – أنواع النقاط المتكاملة والعائمة
size_t ، ptrdiff_t ، uintptr_t ، دلالات العمليات الحسابية، الترويج، الاقتطاع، السلوك غير المحدد، التشبع الحسابيNaN )، آلة إبسيلون، الوحدات في المكان الأخير (ULP)، ورقة الغش، الحدود والوظائف المفيدة، الحساب الخصائص، سلوك القيم الخاصة، السلوك غير المحدد، اكتشاف أخطاء الفاصلة العائمة5. المفاهيم الأساسية III - الكيانات وتدفق التحكم
struct ، بيتفيلد، unionif ، حلقات 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 constevalvolatilestatic_cast ، const_cast ، reinterpret_cast ، نوع التورية، std::bit_cast ، تحويل التهيئة الموحد، gls::narrow_castsizeof المشغل : نظرة عامة، [[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 delete9. البرمجة كائنية التوجه 2 - تعدد الأشكال والتحميل الزائد على المشغل
virtual ، الجدول الظاهري، override الكلمة الأساسية، الكلمة الأساسية final ، الأخطاء الشائعة، الطريقة الافتراضية البحتة، الطبقة المجردة والواجهة< ، مشغل سفينة الفضاء <=> ، عامل التشغيل المنخفض [] ، عامل التشغيل المنخفض متعدد الأبعاد [] ، مشغل استدعاء الوظيفة () ، المشغل الثابت [] والمشغل () ، مشغل التحويل T() ، التحميل الزائد من نوع الإرجاع الدقة، عوامل الزيادة والنقصان ++ / -- ، عامل التعيين = ، عامل الدفق << ، ملاحظات المشغل10. القوالب والبرمجة التعريفية I - قوالب الوظائف والأدوات المساعدة لوقت الترجمة
auto ، نوع معلمة قالب الفئة، أنواع المصفوفات والمؤشر، نوع الوظيفةstatic_assert ، using الكلمة الأساسية، الكلمة الأساسية decltype11. القوالب والبرمجة التعريفية II - قوالب الفصل وSFINAE
typename والكلمات الرئيسية template ، التسلسل الهرمي لقالب الفصل using ، الكلمة الرئيسية friend ، وسائط قالب القالبconcept ، requires جملة، requires تعبيرًا، requires تعبيرًا + عبارة، requires جملة + تعبير، requires و constexpr ، requires متداخلة12. وحدات الترجمة I - الربط وقاعدة التعريف الواحدة
static ، مساحة الاسم المجهولة، الكلمات الرئيسية externconst و constexpr : فشل ترتيب التهيئة الثابتةinline ، constexpr inlineexternextern13. وحدات الترجمة II - التضمين والوحدة النمطية ومساحة الاسم
#include المشكلات : تضمين الحماية، والإعلان الأمامي، والتبعيات الدائرية، وأخطاء الارتباط الشائعة14. اتفاقيات الكود I
#include : #include Guard، #include Syntax، ترتيب #include ، اصطلاحات اسم الملف الرئيسي/المصدر الشائعةstatic ، التحويلاتstruct مقابل class ، التهيئة، قوائم المُهيئات المُثبتة، وظائف الأعضاء الخاصة، =default ، =delete ، مشكلات أخرى، الميراث، النمط15. اتفاقيات المدونة II
autoif/else ، المقارنة، switch ، for/whileusing namespace ، ومساحة الاسم المجهولة/غير المسماة، ومساحة الاسم وتصميم الفئة، والنمط16. التصحيح والاختبار
std::breakpointvalgrindclang-tidy17. النظام البيئي – Cmake وأدوات أخرى
cmake و ctestdoxygenclang-format ، Compiler Explorer ، تحويل الكود - CppInsights ، إكمال الكود المدعوم بالذكاء الاصطناعي - بحث الكود المحلي - ugrep ، ripgrep ، hypergrep ، محرك بحث الكود - searchcode/grep.app ، قياس الكود - Quick-Bench ، الخط للترميز18. المرافق
ofstream/ifstreamstd::string ، التحويل من/إلى القيم الرقمية، std::string_view ، std::format ، std::printstd::span<random> ، البذور، فترة PRNG وجودتها، التوزيع، الخوارزميات الحديثة والأداء، شبه عشوائيstd::pair ، std::tuple ، std::variant ، std::optional ، std::any ، std::stacktrace19. الحاويات والتكرارات والخوارزميات
std::array ، std::vector ، std::deque ، std::list ، std::forward_liststd::set ، std::map ، std::multisetstd::stack ، std::queue ، std::priority_queuestd::advance ، std::next ، std::prev ، std::distance ، طرق الوصول إلى الحاوية، سمات التكرارstd::find_if ، std::sort ، std::accumulate ، std::generate ، std::remove_if20. موضوعات متقدمة I
lvalues rvalues ، نقل الدلالي، std::move ، إعلان الفئة الدلالية& ، && مؤهلات المرجع والحمولة الزائدة volatileauto ، auto(x) : نسخة تسوسconst21. موضوعات متقدمة II
noexcept ، مشكلات تخصيص الذاكرة، رمز الإرجاع وملخص الاستثناء، std::expected ، أساليب بديلة لمعالجة الأخطاءstd::unique_ptr ، std::shared_ptr ، std::weak_ptr22. التحسين الأول – المفاهيم الأساسية
23. التحسين الثاني - تحسين الكود
printf ، الإدخال/الإخراج المعين للذاكرة، تسريع تحميل البيانات الأولية[[likely]] / [[unlikely]] ، الأعداد الصحيحة الموقعة/غير الموقعة، الحلقات، رفع الحلقة، فتح الحلقة، التأكيدات، تلميحات المترجم [[assume]]/std::unreacheable() , العودية24. التحسين III - التحسينات غير المتعلقة بالتشفير وقياس الأداء
gprof ، uftrace ، callgrind ، cachegrind ، ملف تعريف Linux perf25. تصميم البرمجيات 1 - المفاهيم الأساسية (مسودة)
26. تصميم البرمجيات 2 - أنماط التصميم والتعابير (مسودة)
إذا وجدت أي خطأ مطبعي، أو خطأ مفاهيمي، أو قسم بحاجة إلى تحسين، فيرجى الإبلاغ عنه باستخدام لوحة issue .
Federico Busato ، https://federico-busato.github.io/