Top 10 C ++ Russia-Berichte und Open Access-Konferenz-Playlist

Dieser Hubpost vereint die zehn wichtigsten Berichte von Rednern wie Nicolai Josuttis, Timur Doumler, Andrey Davydov und vielen anderen.


C ++ 17/20/23, Konzepte, unveränderliche Datenstrukturen, Parallelität, Parallelität, Metaprogrammierung - all dies sind Themen der C ++ Russia 2019-Konferenz, die im Frühjahr in Moskau stattfand. Mehr als sechshundert Teilnehmer, bekannte internationale Redner, ausführliche Berichte. Bitte beachten Sie, dass die Berichte so sind, dass sie sehr bald veraltet sind und Sie das gewonnene Wissen auch jetzt noch anwenden können.



Das Format ist wie folgt:


  • Obligatorisches YouTube-Video
  • Eine detaillierte Beschreibung des Berichts in russischer Sprache (ggf. mit Folien)
  • Kurzbiographie des Sprechers

Fühlen Sie sich frei, Kommentare zu schreiben! Übrigens gibt es in der unter dem Schnitt veröffentlichten Wiedergabeliste nicht nur die Top 10. Und wir haben Anzeigen auf YouTube deaktiviert, damit sich niemand einmischt.


Alle Berichte gehen von „Junior“ bis „Senior“ in der Bewertung, aber die Unterschiede zwischen den Plätzen der Top Ten sind minimal und hängen stark von der Bewertungsmethode ab. Durch geringfügiges Ändern der Methodik können Sie die Orte stark ändern. Also schau dir alles an!


Die vollständige Wiedergabeliste der Konferenz finden Sie hier .


10. Der Anhalter-Leitfaden für schnellere Builds


Viktor Kirilov



Folien


C ++ ist bekannt für seine Leistung, Geschwindigkeit, das Fehlen eines Standard-Build-Systems und eines Paket-Managers sowie die Komplexität und Dauer der Kompilierung. Die Unmöglichkeit einer schnellen iterativen Entwicklung ist einer der größten Killer für die Entwicklerproduktivität. Dieser Bericht richtet sich an alle, die die letzten drei Punkte verbessern möchten: Zuerst einige Ideen, warum das Kompilieren und Verknüpfen so viel Zeit in Anspruch nimmt, dann eine Liste von Techniken und Werkzeugen, um das Problem zu lösen, zum Beispiel:


  • Optimierung und Infrastruktur - Hardware, Montagesysteme, Caching, verteilte Baugruppen, Engpassdiagnose, Code-Hygiene;
  • Techniken - Unity Builds, vorkompilierte Header, statische vs gemeinsam genutzte;
  • Änderungen in den Quellen - PIMPL-Sprache, korrektere Verwendung von Vorlagen, Anmerkungen;
  • Module - was ist es, wenn sie in C ++ erscheinen, was sich aus diesem Grund als unnötiger herausstellen wird?

Über den Sprecher


Sechs Jahre Berufserfahrung in C ++ in der Gaming- und VFX-Branche. Jetzt entwickelt Victor Open Source und von Zeit zu Zeit - die übliche Vertragsarbeit. Eine der letzten interessanten Aufgaben ist die Implementierung von Hot-Swap-Code in der Nim-Laufzeit. Er ist auch der Autor von doctest, "der schnellsten und leistungsstärksten Single-Header-Testbibliothek für C ++". Er interessiert sich für die Entwicklung von Spielen und Game-Engines, Hochleistungscode und Kryptowährungen, die Optimierung des Workflows und die Integration bewährter Entwicklungspraktiken wie moderner statischer Analyse- und Instrumentierungswerkzeuge. Victor lebt in Sofia (Bulgarien) und Programmieren ist sowohl sein Beruf als auch sein Hobby. Haben Sie Ihre eigene Website: http://onqtam.com/




9. C ++ - Vorlagen und Datenbanken


Sergey Fedorov



Folien


Wenn wir mit Datenbanken arbeiten, erhalten wir häufig Rohpuffer, während wir Daten in Form von C ++ - Strukturen, Klassen und Containern empfangen möchten.


Eine Geschichte über das Design und die Implementierung des PostgreSQL-Treibers mit einer menschlichen Oberfläche unter Verwendung fast aller derzeit verfügbaren C ++ 17-Sprachtools.


Der im Bericht beschriebene Ansatz kann an nahezu jedes Protokoll auf Anwendungsebene angepasst werden.


Über den Sprecher


Sergey Fedorov, ein führender Entwickler bei Yandex.Taxi, entwickelt ein asynchrones Framework für das Taxi-Backend. Ein großer Fan von Metaprogrammierung und Open Source.




8. Nur-Verschieben-C ++ - Design


Ivan Čukić



RAII gibt die erfassten Ressourcen frei. Es gibt jedoch eine Ressource, die nicht zurückgegeben werden kann - dies ist die Zeit.


Einer der zeitaufwändigsten Fehler ist das Erstellen unnötiger Kopien. Die C ++ 11 Move-Semantik hat einen Schritt in die richtige Richtung getan. Es ermöglicht Ihnen, unnötige Daten an andere weiterzugeben, ohne eine Geldstrafe für die Erstellung einer Kopie zu erheben und ohne das Risiko, nach Daten zu rennen, wenn die Daten viele Benutzer haben.


In diesem Vortrag werden wir an einer Diskussion eines Architekturansatzes teilnehmen, der nur die Verwendung spezieller, nicht kopierbarer, verschiebbarer Typen erlaubt, die als lineare Typen bezeichnet werden. Wir werden die Funktionen von C ++ diskutieren, die es uns ermöglichen, die Verwendung solcher Typen zu erzwingen.


Hierzu wird vorgeschlagen, Konzepte aus C ++ 20, && - qualifizierte Funktionen usw. zu verwenden.


Über den Sprecher


Ivan Chukich ist der Autor von Functional Programming in C ++, veröffentlicht von Manning. KDE Contributor ist eines der größten Open Source Open Source Projekte. Darüber hinaus unterrichtet er an der Universität moderne Programmiertechniken und überträgt seine 20-jährige Erfahrung mit C ++ auf seine Studenten. Er studierte funktionale Programmierung in C ++ während und vor dem Post-Doc und verwendete diese Techniken in realen Projekten.




7. Parallelität und Parallelität in C ++ 17 und C ++ 20/23


Rainer grimm



Was haben Threads, Atome, Mutexe und bedingte Variablen gemeinsam? All dies sind die Grundbausteine ​​für die Erstellung von Multithread-Anwendungen in C ++ und können selbst für erfahrene C ++ - Entwickler Probleme verursachen.


Diese Situation hat sich in C ++ 17 und vor allem in C ++ 20/23 dramatisch geändert. Ab C ++ 17 sind die meisten Standardalgorithmen in serieller, paralleler und vektorisierter Form verfügbar. Nach den neuesten Standards erwarten wir Ausführende und Transaktionsspeicher. Wir können große Verbesserungen bei Futures und Coroutinen erwarten. Für Multithreading und Parallelität ist dies nur der Anfang. Es ist zu hoffen, dass in Zukunft nur sie (Executoren, Transaktionsgedächtnis, Futures, Coroutinen) in Abstraktionen verwendet werden und Threads, Atome, Mutexe und bedingte Variablen nur noch Implementierungsdetails werden.


Der Zweck dieses Berichts ist es, zu sehen, was wir bereits in C ++ 17 erhalten haben und worauf wir in C ++ 20/23 hoffen können.


Über den Sprecher


Rainer Grimm arbeitet seit rund 20 Jahren als Architekt, Teamleiter und Ausbilder. In seiner Freizeit schreibt er gerne Artikel über C ++, Python und Haskell und spricht auf Konferenzen, schreibt oft in seinem Blog „Modern C ++“. Derzeit leitet er Seminare zu modernem C ++ und Python. Seine Bücher C ++ 11 für Programmierer, C ++, C ++ Standardbibliothek und The C ++ Standard Library werden sowohl von O'Reilly als auch von Leanpub veröffentlicht.




6. Metaprogrammierung, sanfter Compiler


Andrey Davydov



Jeder Programmierer, der in die Welt von C ++ eingetaucht ist, weiß, dass Vorlagen vollständig sind, „Substitutionsfehler sind kein Fehler“ und dass Sie in der Kompilierungszeit erstaunliche und manchmal sogar nützliche Dinge tun können. Auf der anderen Seite versteht ein erfahrener C ++ - Entwickler, dass „Sie können“ nicht „Sie brauchen“ bedeutet und dass Sie für den Missbrauch der Metaprogrammierung bezahlen müssen. Eine der Hauptbeschränkungen ist die Kompilierungszeit. Aus diesem Grund wird in dem Bericht erläutert, welche Operationen / Techniken aus Sicht des Compilers am teuersten sind und wie sie vermieden werden können.


Insbesondere wurden folgende Punkte hervorgehoben:


  • warum SFINAE das letzte ist, was man benutzt;
  • warum std :: conditional_t ​​ineffizient definiert ist;
  • Was ist der Unterschied zwischen Tupelimplementierungen in Microsoft STL und libc ++?
  • wann man std :: {Konjunktion, Disjunktion} verwendet und wann man Fold-Ausdrücke verwendet;
  • warum sollten Sie nicht std :: void_t verwenden;
  • Wie Konzepte in C ++ 20 helfen können.

Über den Sprecher


In den letzten 3 Jahren hat Andrey im ReSharper C ++ - Team von JetBrains gearbeitet. In der Vergangenheit beschäftigte er sich mit industrieller Programmierung in Bereichen im Zusammenhang mit GIS und 3D-Visualisierungssystemen.




5. Essential C ++


Anton Polukhin



Jede neue Programmiersprache möchte angeben, dass sie schneller, zuverlässiger und in jeder Hinsicht um ein Vielfaches besser ist als C ++.


Mal sehen - wo ist die Wahrheit und wo ist Fiktion. Lass den Kampf zwischen C ++ und Asm / Rust / Go / Java / C # beginnen ...!


Über den Sprecher


Vertreter Russlands in der ISO bei internationalen Treffen der Arbeitsgruppe für Normung C ++. Der Autor mehrerer akzeptierter Vorschläge für den C ++ - Sprachstandard.


Autor der Boost-Bibliotheken TypeIndex, DLL, Stacktrace und aktiver Betreuer Any, Conversion, LexicalCast, Variant.


Er ist Autor des Boost C ++ Application Development Cookbook und der Second Edition.




4. Postmoderne unveränderliche Datenstrukturen


Juan Pedro Bolívar Puente



Die C ++ Elite spricht seit Jahren über Wertesemantik, Unveränderlichkeit und Teilen durch Kommunikation. Wir warten auf eine bessere Welt ohne Mutexe, Rennen, Beobachter, Teammuster und all diesen Jazz. Beim Üben gibt es große Probleme. Eines der Hauptprobleme liegt in Datenstrukturen.


Unveränderliche Datenstrukturen ändern keine Werte, um mit ihnen zu arbeiten - Sie müssen neue Werte erstellen. Die alten Werte bleiben unverändert, und daher können Sie mit ihnen von mehreren Threads aus arbeiten, ohne sie zu blockieren. Dies gibt uns eine strukturelle Trennung der Ressourcen, da neue und alte Werte dieselben gemeinsamen Daten verwenden können - sie können schnell verglichen und die Geschichte sehr kompakt rückgängig gemacht werden. Aus diesem Grund sind sie in Multithread- und interaktiven Systemen so nützlich: Sie vereinfachen die Architektur von Desktop-Software und ermöglichen eine bessere Skalierung der Server. Dies ist die geheime Zutat, die den Erfolg von Clojure und Scala bestimmt hat, und selbst JavaScript-Entwickler verwenden sie gerne mit so etwas wie Immutable.js von Facebook.


Juan stellt Immer vor, eine C ++ - Bibliothek, die moderne, effiziente und unveränderliche Datenstrukturen implementiert.


In diesem Vortrag sprach er über die architektonischen Vorteile der Unveränderlichkeit und zeigte, wie ein äußerst effizienter und leistungsfähiger persistenter Vektor auf modernen Datenstrukturen aufgebaut werden kann, die zur Perfektion gebracht wurden (Relaxed Radix Balanced Trees). Wir haben uns ein Beispielprogramm angesehen - einen Texteditor, der in einem solchen architektonischen Stil entworfen wurde. Der Code ist nicht nur supereinfach, sondern übertrifft auch die meisten ähnlichen Programme in Bezug auf die Leistung. Glaubst du nicht? Öffnen Sie den Bericht und überzeugen Sie sich selbst!


Verwendete Technologien:



Über den Sprecher


Juan ist ein freiberuflicher Berater und Ingenieur aus Berlin, der sich auf wertorientiertes Design, interaktive Software, modernes C ++, funktionale Programmierung und den strategischen Einsatz von Open Source spezialisiert hat. Zuvor arbeitete er bei Ableton und war an verschiedenen Projekten im Zusammenhang mit Musik beteiligt. Er nahm auch am GNU-Projekt teil und war Mitbegründer von Hacklab in Granada.




3. Konzepte: Vereinfachung der Implementierung von Standarddienstprogrammklassen


Andrey Davydov



Konzepte, die in C ++ 20 erscheinen, sind ein langes und viel diskutiertes Thema. Trotz des im Laufe der Jahre angesammelten Materialüberschusses (einschließlich der Reden von Weltklasse-Experten) herrscht unter angewandten Programmierern (die nicht täglich mit dem Standard einschlafen) immer noch Verwirrung darüber, was C ++ 20-Konzepte sind und sind Wir brauchen, wenn enable_if im Laufe der Jahre überprüft wird. Teilweise liegt der Fehler darin, wie sich die Konzepte über ~ 15 Jahre entwickelt haben (Concepts Full + Concept Map -> Concepts Lite), und teilweise darin, dass sich herausstellte, dass sich die Konzepte von ähnlichen Tools in anderen Sprachen unterscheiden (Java / C # generische Grenzen, Rostmerkmale, ... )


Der Bericht beginnt mit einem kurzen Überblick über die konzeptbezogenen Innovationen von C ++ 20, wonach wir uns mit der Implementierung einiger Klassen und Funktionen von STL befassen und C ++ 17- und C ++ 20-Lösungen vergleichen. Z.B:


  • Um std :: optional zu implementieren, müssen Sie jetzt die Vererbungshierarchie der Tiefe 7 verwenden. In C ++ 20 ist dies nicht erforderlich.
  • Für den Standardkonstruktor benötigt std :: pair jetzt 2 Vorlagenfunktionen in C ++ 20 - 1 ohne Vorlage.
  • Häufig sind Vorlagenklassen teilweise spezialisiert. Wenn die Vorlagenparameter einige spezielle Eigenschaften aufweisen, ist es bequemer und korrekter, dies mit Konzepten zu tun.

Das Publikum soll eine allgemeine Vorstellung davon haben, was Konzepte und SFINAE sind. Die Kenntnis der Standard-C ++ - Bibliothek ist ebenfalls hilfreich. Kenntnisse über die Feinheiten und Implementierungsdetails sind nicht erforderlich.


Über den Sprecher


In den letzten 3 Jahren hat Andrey im ReSharper C ++ - Team von JetBrains gearbeitet. In der Vergangenheit beschäftigte er sich mit industrieller Programmierung in Bereichen im Zusammenhang mit GIS und 3D-Visualisierungssystemen.




2. Initialisierung in modernem C ++


Timur Doumler



Es ist bekannt, dass die Initialisierungssemantik einer der komplexesten Teile von C ++ ist. Es gibt viele Arten der Initialisierung, die durch unterschiedliche Syntax beschrieben werden, und alle interagieren auf komplexe und herausfordernde Weise. C ++ 11 brachte das Konzept der "universellen Initialisierung". Leider führte sie noch komplexere Regeln ein, die wiederum in C ++ 14, C ++ 17 blockiert und in C ++ 20 erneut geändert wurden.


In diesem Bericht fasste Timur zunächst die historischen Ergebnisse der Entwicklung der Initialisierung in C ++ zusammen. Er gab einen systematischen Überblick über die aktuelle Version der Initialisierungsregel, typische Probleme und Überraschungen. Einführung praktischer Regeln zur effektiven Verwendung all dieser Regeln. Und schließlich sprach Timur über die neuesten Vorschläge im Standard, die die Semantik der C ++ 20-Initialisierung etwas komfortabler machen können.


Über den Sprecher


Timur ist ein auf Sound und Musik spezialisierter C ++ - Entwickler, Mitglied des ISO C ++ - Komitees und Programmdirektor der Audio Developer Conference (ADC). Er ist bestrebt, sauberen Code zu schreiben, gute Tools zu entwickeln, die Entwicklung der C ++ - Sprache zu fördern und integrative Communities aufzubauen.




1. C ++ 17 - die größten Fallen


Nicolai Josuttis



C ++ 17 ist eine riesige Kombination kleiner neuer Funktionen, sowohl in der Sprache als auch in der Bibliothek. Mit diesen Funktionen können Sie nicht nur mehr neue Dinge tun, sondern auch neue Möglichkeiten zum Schießen in die Beine bieten - viel häufiger als erwartet. Dies ist keine Theorie. Es passiert im wirklichen Leben, hier und jetzt.


In diesem Bericht hat Nikolai all diese Fallen aussortiert, die Gründe für ihre Ideen und ihre Architektur besprochen und Anweisungen gegeben, wie man Probleme umgeht. Als Nebeneffekt können Sie sich die neuen Funktionen von C ++ 17 genauer ansehen.


Über den Sprecher


Nikolay ist ein unabhängiger Systemarchitekt, technischer Manager, Autor und Berater. Er entwickelt mittlere und große Softwaresysteme für Telekommunikation, Finanzen und Fertigung.


Er ist in der Community weithin bekannt für seine Berichte und die Tatsache, dass er Bücher über C ++ ( The C ++ Standard Library und C ++ Templates ) schreibt, spricht über neue Funktionen der Sprache.


Seit 20 Jahren ist er aktives Mitglied des C ++ Standardization Committee.




Eine vollständige Wiedergabeliste mit allen Berichten finden Sie hier . Wir erinnern Sie daran, dass das neue C ++ Russland bereits auf dem Weg ist und vom 31. Oktober bis 1. November 2019 in St. Petersburg stattfinden wird. Tickets dafür können auf der offiziellen Website gekauft werden .

Source: https://habr.com/ru/post/de462939/


All Articles