يجمع محور الأخبار هذا أفضل عشرة تقارير من متحدثين مثل Nicolai Josuttis و Timur Doumler و Andrey Davydov والعديد من التقارير الأخرى.
C ++ 17/20/23 ، المفاهيم ، هياكل البيانات غير الثابتة ، التزامن ، التوازي ، البرمجة الأوتوماتيكية - كل هذه مواضيع مؤتمر C ++ Russia 2019 الذي عقد في ربيع هذا العام في موسكو. أكثر من ستمائة مشارك ، متحدثون دوليون معروفون ، تقارير معمقة. يرجى ملاحظة - التقارير ستكون قديمة جداً في وقت قريب ، ويمكنك تطبيق المعرفة المكتسبة حتى الآن.

التنسيق كالتالي:
- فيديو يوتيوب إلزامي
- وصف مفصل للتقرير باللغة الروسية (مع الشرائح ، إن وجدت)
- سيرة قصيرة للمتكلم
لا تتردد في كتابة التعليقات! بالمناسبة ، في قائمة التشغيل المنشورة تحت الخفض ، ليس هناك فقط أفضل 10. لقد أوقفنا الإعلانات على YouTube ، حتى لا يتدخل أحد.
تنتقل جميع التقارير من "المبتدئين" إلى "الأقدم" في التصنيف ، ولكن الاختلافات بين أماكن العشرة الأوائل ضئيلة وتعتمد بشدة على منهجية التقييم. عن طريق تغيير المنهجية قليلاً ، يمكنك تغيير الأماكن بشكل كبير. لذلك شاهد كل شيء!
قائمة التشغيل الكاملة للمؤتمر هنا .
فيكتور كيريلوف
عرض الشرائح
يُعرف C ++ بأدائه وسرعته وعدم وجود نظام بناء قياسي ومدير للحزمة وتعقيد ومدة التجميع. استحالة التطور التكراري السريع هي واحدة من أكبر القتلة لإنتاجية المطور. هذا التقرير مخصص لكل من يريد تحسين النقاط الثلاث الأخيرة: أولاً ، بعض الأفكار التي تجعل التجميع والربط يستغرقان الكثير من الوقت ، ثم قائمة من التقنيات والأدوات لحل المشكلة ، على سبيل المثال:
- توليف والبنية التحتية - الأجهزة وأنظمة التجميع ، والتخزين المؤقت ، والجمعيات الموزعة ، وتشخيص عنق الزجاجة ، النظافة رمز ؛
- التقنيات - بناء الوحدة ، الرؤوس المترجمة مسبقًا ، الاستاتيكية مقابل المشاركة ؛
- التغييرات في المصادر - لغة PIMPL ، والاستخدام الأكثر صحة للقوالب والشروح ؛
- الوحدات النمطية - ما هو عليه عندما تظهر في C ++ ، والتي ستتحول إلى أن تكون غير ضرورية بسبب هذا.
عن المتحدث
ست سنوات من الخبرة المهنية في C ++ في صناعات الألعاب و VFX. الآن فيكتور يقوم بتطوير المصدر المفتوح ومن وقت لآخر - العمل المعتاد العقد. واحدة من آخر المهام المثيرة للاهتمام هي تطبيق كود التبديل السريع في وقت تشغيل Nim. وهو أيضًا مؤلف كتاب "doctest" ، وهو مكتبة اختبار الأسرع والأقوى لـ C ++. إنه مهتم بتطوير الألعاب ومحركات الألعاب ، والكود عالي الأداء ، والعملات المشفرة ، وتحسين سير العمل ، ودمج ممارسات التطوير الجيدة ، مثل التحليل الثابت وأدوات الأدوات الثابتة. يعيش فيكتور في صوفيا (بلغاريا) ، والبرمجة هي مهنته وهوايته. لديك موقع الويب الخاص بك: http://onqtam.com/
سيرجي فيدوروف
عرض الشرائح
عندما نعمل مع قواعد البيانات ، فغالبًا ما نحصل على مخازن مؤقتة ، بينما نريد استلام البيانات في شكل هياكل وفصول وحاويات C ++.
قصة عن تصميم وتنفيذ برنامج تشغيل PostgreSQL بواجهة إنسانية باستخدام جميع أدوات لغة C ++ 17 المتوفرة حاليًا تقريبًا.
يمكن تكييف النهج الموضح في التقرير مع أي بروتوكول على مستوى التطبيق تقريبًا.
عن المتحدث
يعمل سيرجي فيدوروف ، المطور الرائد في Yandex.Taxi ، على تطوير إطار غير متزامن لخلفية التاكسي. مروحة كبيرة من metaprogramming ومفتوحة المصدر.
إيفان كوكيتش
RAII تطلق الموارد التي تم التقاطها. ولكن هناك مورد لا يمكن إرجاعه - هذه هي المرة.
أحد أكثر الأخطاء التي تستغرق وقتًا طويلاً هو إنشاء نسخ غير ضرورية. اتخذت دلالات C ++ 11 Move خطوة في الاتجاه الصحيح. يسمح لك بإعطاء بيانات غير ضرورية لشخص آخر دون غرامة لإنشاء نسخة وبدون مخاطرة السباق وفقًا للبيانات عندما يكون للبيانات العديد من المستخدمين.
في هذا الحديث ، سنشارك في مناقشة لنهج الهندسة المعمارية الذي يسمح فقط باستخدام أنواع خاصة وغير قابلة للنسخ ويمكن نقلها تسمى أنواع خطية. سنناقش ميزات C ++ التي ستتيح لنا فرض استخدام مثل هذه الأنواع فقط.
لهذا الغرض ، يُقترح استخدام المفاهيم من C ++ 20 و && - وظائف مؤهلة ، إلخ.
عن المتحدث
إيفان تشوكيتش مؤلف البرمجة الوظيفية في سي + + ، التي نشرتها مانينغ. KDE المساهمة هي واحدة من أكبر المشاريع مفتوحة المصدر. بالإضافة إلى ذلك ، يدرس تقنيات البرمجة الحديثة في الجامعة ، وينقل إلى طلابه خبرته البالغة 20 عامًا باستخدام C ++. درس البرمجة الوظيفية في لغة C ++ خلال فترة ما بعد المستند وقبله ، واستخدم هذه التقنيات في مشاريع العالم الحقيقي.
راينر جريم
ما هو الشائع بين الخيوط ، والذرات ، والمزج ، والمتغيرات الشرطية؟ كل هذه هي الكتل الأساسية لبناء أي تطبيقات متعددة الخيوط في C ++ ، ويمكن أن تسبب مشاكل حتى للمطورين ذوي الخبرة C ++.
لقد تغير هذا الموقف بشكل كبير في C ++ 17 ، وحتى أكثر من ذلك في C ++ 20/23. بدءًا من C ++ 17 ، تتوفر معظم الخوارزميات القياسية بشكل تسلسلي ومتوازي وموجه. في أحدث المعايير ، نتوقع التنفيذيين وذاكرة المعاملات ، يمكننا أن نتوقع تحسينات كبيرة في العقود الآجلة و coroutines. بالنسبة إلى مؤشرات الترابط والتزامن ، هذه هي البداية فقط. ومن المأمول أنه في المستقبل ، سيتم استخدام فقط هم (المنفذون وذاكرة المعاملات والعقود الآجلة والكوروتينات) في التجريد ، وستصبح مؤشرات الترابط والذرات والمزج والمتغيرات الشرطية مجرد تفاصيل التنفيذ.
الغرض من هذا التقرير هو معرفة ما تلقناه بالفعل في C ++ 17 وما يمكن أن نأمله في C ++ 20/23.
عن المتحدث
يعمل راينر جريم كمهندس معماري وقائد فريق ومدرب منذ حوالي 20 عامًا. في أوقات فراغه ، يحب كتابة مقالات حول C ++ و Python و Haskell والتحدث في المؤتمرات ، وغالبًا ما يكتب على مدونته "Modern C ++". يقود حاليًا حلقات دراسية حول C ++ و Python الحديثة. يتم نشر كتبه C ++ 11 für Programmierer و C ++ و C ++ Standardbibliothek و C ++ Standard Library على حد سواء بواسطة O'Reilly و Leanpub.
أندريه ديفيدوف
يعرف أي مبرمج اندمج في عالم C ++ أن القوالب مكتملة ، "فشل الاستبدال ليس خطأ" ، وفي وقت الترجمة ، يمكنك القيام بأشياء مذهلة ، وأحيانًا مفيدة. من ناحية أخرى ، يفهم مطور C ++ ذي الخبرة أن "يمكنك" لا تعني "تحتاج" وأنه يجب عليك دفع ثمن إساءة استخدام metaprogramming. أحد القيود الرئيسية هو وقت التجميع ، وهذا هو السبب في أن التقرير يناقش العمليات / التقنيات الأكثر تكلفة من وجهة نظر المترجم وكيفية تجنبها.
على وجه الخصوص ، تم تسليط الضوء على القضايا التالية:
- لماذا SFINAE هو آخر شيء للاستخدام ؛
- لماذا يتم تعريف std :: conditional_t بطريقة غير فعالة ؛
- ما هو الفرق بين تطبيقات tuple في Microsoft STL و libc ++ ؛
- متى تستخدم std :: {conjunction، disjunction}، ومتى تستخدم تعبيرات fold؛
- لماذا يجب ألا تستخدم std :: void_t؛
- كيف المفاهيم التي تظهر في C ++ 20 يمكن أن تساعد.
عن المتحدث
على مدار السنوات الثلاث الماضية ، عمل Andrey في فريق ReSharper C ++ في JetBrains. في الماضي كان يعمل في البرمجة الصناعية في المجالات ذات الصلة بأنظمة المعلومات الجغرافية ونظم التصور ثلاثي الأبعاد.
انطون بولوخين
تسعى كل لغة برمجة جديدة fangled إلى القول أنها أسرع وأكثر موثوقية وبشكل عام في جميع النواحي عدة مرات أفضل من C ++.
دعونا نرى - أين هي الحقيقة ، وأين هو الخيال. دع المعركة تبدأ بين C ++ و Asm / Rust / Go / Java / C # ...!
عن المتحدث
ممثل روسيا في المنظمة الدولية للتوحيد القياسي في الاجتماعات الدولية لفريق العمل المعني بالتوحيد القياسي C ++. مؤلف العديد من المقترحات المقبولة لمعيار لغة C ++.
مؤلف من مكتبات Boost TypeIndex و DLL و Stacktrace و المشرف النشط Any و Conversion و LexicalCast و Variant.
وهو مؤلف كتاب تطوير تطبيقات Boost C ++ والإصدار الثاني.
خوان بيدرو بوليفار بوينتي
تتحدث C ++ Elite عن دلالات القيمة ، والثبات ، والمشاركة من خلال التواصل لسنوات. نحن ننتظر عالما أفضل بدون مزامير ، أعراق ، مراقبين ، أنماط "فريق" وكل موسيقى الجاز. عندما يتعلق الأمر بالممارسة ، هناك مشاكل كبيرة. واحدة من المشاكل الرئيسية هي في هياكل البيانات.
لا تغير هياكل البيانات غير القابلة للتغيير القيم من أجل العمل معها - تحتاج إلى إنشاء قيم جديدة. تظل القيم القديمة كما هي ، وبالتالي يمكنك العمل معهم من عدة سلاسل دون حظر. هذا يعطينا فصلًا هيكليًا للموارد ، لأن القيم الجديدة والقديمة يمكن أن تستخدم نفس البيانات الشائعة - يمكن مقارنتها بسرعة وتخزينها في سجل محفوظ للغاية للغاية. هذا هو السبب في أنها لطيفة للغاية لاستخدامها في أنظمة متعددة الخيوط والتفاعلية: فهي تبسط بنية برنامج سطح المكتب وتسمح للخوادم بتوسيع نطاقها. هذا هو العنصر السري الذي حدد نجاح Clojure و Scala ، وحتى مطوري JavaScript يحبون استخدامها مع شيء مثل Facebook's Immutable.js.
يقدم Juan مكتبة Immer ، وهي مكتبة C ++ تنفذ هياكل بيانات حديثة وفعالة وغير قابلة للتغيير.
في هذا الحديث ، تحدث عن الفوائد المعمارية لقابلية عدم الثبات وأظهر كيف يمكن بناء ناقل قوي فعال للغاية وقوي على هياكل البيانات الحديثة للوصول إلى الكمال (Relaxed Radix Balanced Trees). نظرنا إلى برنامج مثال - محرر نصوص مصمم بأسلوب معماري كهذا. الكود ليس بسيطًا للغاية ، بل يتفوق أيضًا على معظم البرامج المشابهة في الأداء. لا تصدق؟ افتح التقرير وانظر بنفسك!
التقنيات المستخدمة:
عن المتحدث
خوان خبير استشاري ومهندس مستقل من برلين متخصص في التصميم ذي القيمة الموجهة ، والبرمجيات التفاعلية ، و C ++ الحديثة ، والبرمجة الوظيفية والاستخدام الاستراتيجي للمصدر المفتوح. قبل ذلك ، عمل في Ableton وشارك في العديد من المشاريع المتعلقة بالموسيقى. شارك أيضًا في مشروع GNU وشارك في تأسيس Hacklab في غرناطة.
أندريه ديفيدوف
المفاهيم التي تظهر في C ++ 20 هي موضوع طويل ومناقش على نطاق واسع. على الرغم من فائض المواد المتراكمة على مر السنين (بما في ذلك خطب الخبراء من الطراز العالمي) ، لا يزال هناك خلط بين المبرمجين التطبيقيين (الذين لا ينامون يوميًا مع المعيار) ما هي مفاهيم C ++ 20 وما هي نحتاج إذا كان هناك enable_if محددًا على مر السنين. يكمن الخطأ جزئيًا في كيفية تطور المفاهيم على مدار 15 عامًا تقريبًا (Concepts Full + Concept Map -> Concepts Lite) ، ويرجع ذلك جزئيًا إلى أن المفاهيم تبين أنها لا تشبه الأدوات المماثلة في لغات أخرى (Java / C # boundounds ، و Rust Rustes ، ... ).
سيبدأ التقرير بإلقاء نظرة عامة مختصرة على الابتكارات المتعلقة بمفهوم C ++ 20 ، وبعد ذلك سننظر في تنفيذ بعض فئات ووظائف STL ، مقارنة بين C ++ 17 و C ++ 20. على سبيل المثال:
- لتطبيق الأمراض المنقولة جنسياً :: اختياري الآن ، يجب عليك استخدام التسلسل الهرمي للميراث 7 ، في C ++ 20 لن يكون ضروريًا ؛
- لالمنشئ الافتراضي std :: pair الآن يتطلب 2 وظائف القالب ، في C ++ 20 - 1 غير القالب ؛
- غالبًا ما تتخصص فئات القوالب جزئيًا ، في حالة احتواء معلمات القالب على بعض الخصائص الخاصة ، فمن الملائم والأكثر صحة القيام بذلك باستخدام المفاهيم.
من المفترض أن يكون لدى الجمهور فكرة عامة عن ماهية المفاهيم و SFINAE. سيكون الإلمام بمكتبة C ++ القياسية مفيدًا أيضًا ؛ ومعرفة التفاصيل المعقدة وتفاصيل التطبيق غير مطلوبة.
عن المتحدث
على مدار السنوات الثلاث الماضية ، عمل Andrey في فريق ReSharper C ++ في JetBrains. في الماضي كان يعمل في البرمجة الصناعية في المجالات ذات الصلة بأنظمة المعلومات الجغرافية ونظم التصور ثلاثي الأبعاد.
تيمور دوملر
من المعروف أن دلالات التهيئة هي واحدة من أكثر الأجزاء تعقيدًا في C ++. هناك العديد من أنواع التهيئة ، الموضحة في بناء جملة مختلف ، وتتفاعل جميعها بطريقة معقدة وصعبة. أحضر C ++ 11 مفهوم "التهيئة الشاملة". لسوء الحظ ، قدمت قواعد أكثر تعقيدًا ، وبالتالي تم حظرها في C ++ 14 و C ++ 17 وتغييرها مرة أخرى في C ++ 20.
في هذا التقرير ، لخص تيمور لأول مرة النتائج التاريخية لتطور التهيئة في C ++. وقدم لمحة منهجية للنسخة الحالية من قاعدة التهيئة والمشاكل والمفاجآت النموذجية. قدم قواعد عملية حول كيفية استخدام كل هذه القواعد بشكل فعال. وأخيراً ، تحدث تيمور عن أحدث المقترحات في المعيار ، والتي يمكن أن تجعل دلالات تهيئة C ++ 20 أكثر ملاءمة قليلاً.
عن المتحدث
Timur هو مطور C ++ متخصص في الصوت والموسيقى ، وهو عضو في لجنة ISO C ++ ، مدير برنامج مؤتمر مطوري الصوت (ADC). يسعى جاهدة لكتابة رمز نظيف وتطوير أدوات جيدة وتعزيز تطور لغة C ++ وبناء مجتمعات شاملة.
نيكولاي جوتيس
C ++ 17 عبارة عن مزيج كبير من الميزات الجديدة الصغيرة ، سواء في اللغة أو في المكتبة. هذه القدرات لا تسمح لك فقط بعمل المزيد من الأشياء الجديدة ، ولكنها توفر أيضًا طرقًا جديدة لإطلاق النار في الأرجل - أكثر مما تتوقع. هذه ليست نظرية. يحدث في الحياة الحقيقية ، هنا والآن.
في هذا التقرير ، قام نيكولاي بفرز كل هذه الفخاخ ، وناقش الأسباب الكامنة وراء أفكارهم وهندستها المعمارية ، وقدم تعليمات حول كيفية التغلب على المشاكل. كتأثير جانبي ، يمكنك إلقاء نظرة أعمق على الميزات الجديدة لـ C ++ 17.
عن المتحدث
نيكولاي هو مهندس أنظمة مستقل ومدير فني ومؤلف ومستشار. يقوم بتطوير أنظمة البرمجيات المتوسطة والكبيرة للاتصالات والتمويل والتصنيع.
وهو معروف على نطاق واسع في المجتمع بتقاريره وحقيقة أنه يكتب كتبًا عن C ++ ( مكتبة C ++ القياسية و C ++ Templates ) ، ويتحدث عن ميزات جديدة للغة.
لمدة 20 عامًا ، وهو عضو نشط في لجنة توحيد معايير C ++.
قائمة تشغيل كاملة مع جميع التقارير متاحة هنا . نذكرك أن C ++ Russia الجديدة في طريقها بالفعل وستعقد في الفترة من 31 أكتوبر إلى 1 نوفمبر 2019 في سان بطرسبرغ. يمكن شراء التذاكر الخاصة به على الموقع الرسمي .