Dans cet article, vous trouverez les dix meilleurs reportages d'Andrei Alexandrescu, David Vandervoord, John Kalb et bien d'autres.
Caractéristiques du compilateur C ++, asynchronie, multithreading, concurrence, modèle de mémoire, algorithmes et STL, métaprogrammation et réflexion, beaucoup de sujets.

Ce sont tous les enregistrements de la conférence C ++ Russia, la plus importante de l'histoire. Huit cents participants, une salle assez grande, des conférenciers de renommée mondiale. Une année s'est écoulée, mais la plupart des rapports n'ont pas perdu de leur pertinence. Cependant, ce n'est pas surprenant - seuls de tels rapports arrivent en tête selon les participants.
Le format est le suivant:
- Vidéo YouTube obligatoire
- Diapositives, le cas échéant
- Une description détaillée du rapport en russe
- Brève biographie de l'orateur
De plus, vous avez les commentaires de Habr pour discuter de ce que vous avez vu. La publicité sur YouTube est désactivée, personne n'interférera. Il y a tout pour commencer à regarder maintenant.
10. Trucs et astuces pour la gestion de la mémoire
Alexey Salmin
En 2017, la question du choix d'un allocateur en C ++ ne perd pas de pertinence. Ils ont ajouté une nouvelle façon à la norme de choisir un allocateur local pour les conteneurs ( std::pmr
), tcmalloc
global et jemalloc
continuent d'évoluer, ainsi que les interfaces du noyau sur lesquelles ils s'appuient. Ce rapport est consacré au "plancher inférieur" de la conception: les fonctionnalités de mmap
et madvise
dans le noyau Linux et l'impact de ces fonctionnalités sur les performances des allocateurs.
À propos de Speaker
Alexey Salmin est diplômé de la MMU NSU, était engagé dans le calcul symbolique et l'analyse statique, travaillait chez Intel à Novossibirsk. Depuis 2016, il travaille au bureau de Yandex Moscou, développant la recherche en temps réel sur le backend.
9. Meilleures pratiques pour la concurrence dans le C ++ moderne
Rainer grimm
Diapositives
La standardisation de C ++ 11 nous a donné un modèle de mémoire et de multithreading. Il y a des choses standard dans la bibliothèque comme atomiques, threads, tâches, verrous, variables conditionnelles. Le modèle de mémoire offre des garanties pour l'utilisation multithread de ces unités de base.
Sept ans ont passé, la pratique de l'utilisation sûre des modèles multithreading et mémoire. Dans ce rapport, nous apprenons en détail ces pratiques: les règles générales du multithreading et les règles spéciales pour les primitives de bibliothèque et le modèle de mémoire. Les problèmes abordés couvrent des sujets plus larges que le langage C ++.
À propos de Speaker
Rainer Grimm a travaillé comme architecte, chef d'équipe et instructeur pendant plus de 20 ans. Pendant son temps libre, il aime écrire des articles sur C ++, Python et Haskell et parler lors de conférences. Il dirige un blog appelé Modern C ++. Il est actuellement conférencier sur les sujets du C ++ moderne et de Python. O'Reilly et Leanpub publient plusieurs de ses livres: «C ++ 11 für Programmierer», «C ++», «C ++ - Standardbiliothek», «The C ++ Standard Library».
8.2020: Une odyssée void_t
Ivan Čukić
Diapositives
C ++ a toujours eu un puissant sous-ensemble du langage de métaprogrammation qui permet aux développeurs d'effectuer des tours magiques comme l'introspection statique pour assurer une exécution polymorphe sans héritage. Le problème est que cette syntaxe est très pervertie et trop verbeuse - tout cela fait de la métaprogrammation une tâche assez impressionnante.
Les dernières améliorations de la norme, combinées aux nouvelles fonctionnalités de C ++ 20, rendent la métaprogrammation plus facile et les métaprogrammes eux-mêmes plus lisibles et compréhensibles.
Dans cet exposé, nous examinerons les techniques modernes de métaprogrammation, en nous concentrant sur la void_t
magique void_t.
Soit dit en passant, lors du C ++ Russia 2019 à Moscou, Ivan fera une présentation sur la «conception C ++ en déplacement uniquement» et dispensera également une formation «Programmation fonctionnelle appliquée en C ++» : la STL est-elle loin de la programmation fonctionnelle, que sont les objets fonctionnels, std :: invoke et monads , monades, monades. Et quelques monades de plus. La formation d'Ivan n'est pas pour le niveau d'entrée, elle conviendra aux intermédiaires qui souhaitent ouvrir plus largement les portes de la perception.
À propos de Speaker
Ivan travaille au département de doctorat en informatique de la Faculté de mathématiques de l'Université de Belgrade, spécialisé dans la conception de langages de programmation. Un contributeur de longue date à KDE travaillant sur le Plasma et les frameworks bas niveau pour l'analyse et la gestion des actions des utilisateurs. Mainteneur KActivities, Contour et Lancelot.
7. Parallélisme C ++ moderne du CPU au GPU
Marque Simon
Diapositives
La programmation parallèle peut être utilisée pour bénéficier d'architectures multicœurs et hétérogènes, augmentant considérablement les performances logicielles. Le C ++ moderne a parcouru un long chemin dans la simplification du processus de programmation parallèle en introduisant à la fois des abstractions de haut niveau et de bas niveau. C ++ 17 est allé encore plus loin et nous a donné de nouveaux algorithmes parallèles de haut niveau, et on attend encore plus de C ++ 20. Dans ce rapport, nous prendrons part à un examen des utilitaires existants pour organiser le parallélisme et regarder vers l'avenir, où les GPU et les systèmes hétérogènes recevront un support avec de nouvelles fonctionnalités de la bibliothèque standard, et examinerons de nouveaux standards comme SYCL.
À propos de Speaker
Simon est un développeur de chaîne d'outils GPGPU spécialisé dans C ++. Malsain aime la métaprogrammation des modèles et les côtés les plus sombres de la langue. Vous pouvez facilement le retrouver dans les commentaires sur le StackOverflow, chaîne C ++ dans Slack ou dans les rencontres de la communauté C ++ Édimbourg, dont il est l'un des organisateurs. Il aime discuter des problèmes de formalisme dans la langue, des hacks de modèles, de la bière, du whisky, du cinéma expérimental et du travail de Carly Rae Jepsen.
6. La mémoire est l'abstraction parfaite
Fedor Short
Diapositives
int* ptr = new int; *ptr = 42; delete ptr;
Que se passe-t-il réellement lorsque ces 3 lignes de code sont exécutées? Nous allons regarder à l'intérieur de l'allocateur de mémoire, du système d'exploitation et du matériel moderne pour donner une réponse exhaustive à cette question.
À propos de Speaker
Fedor - diplômé de Fiztekh, était engagé dans le trading haute fréquence à la bourse de Moscou. Il travaille à Yandex, développe un système de stockage et de traitement des données YT. Il enseigne le C ++ en première année de l'école d'analyse des données.
5.105 Algorithmes STL en moins d'une heure
Jonathan boccara
Diapositives
Nous savons tous que ce serait bien de connaître les algorithmes STL. En les utilisant dans la construction de l'architecture, vous pouvez la rendre plus expressive et fiable. Parfois, c'est très significatif et spectaculaire.
Êtes-vous arrivé à la réalisation de vos algorithmes?
Dans ce rapport, vous verrez les 105 algorithmes, y compris ceux ajoutés dans les normes 11 et 17. Mais ce n'est pas seulement une énumération - l'essence du rapport est de montrer la présence dans ces algorithmes du système, des groupes et des modèles dans lesquels ils sont organisés, et comment ils se rapportent les uns aux autres.
Cette vue d'ensemble est le meilleur moyen de se souvenir de tous et de les comprendre comme un ensemble complet d'outils et de moyens pour rendre le code plus expressif et plus fiable.
À propos de Speaker
Jonathan Boccara aime le C ++, et en particulier - les problèmes d'écriture de code expressif compréhensible. C'est notamment pour cette raison qu'il dirige le blog Fluent C ++. Il travaille également en tant que développeur senior chez Murex, où il gère d'énormes bases de code C ++ pour une utilisation en finance. Ils ont une pratique intéressante dans l'entreprise tous les jours pour faire de courts reportages au format «quotidiens» , qu'il dirige.
4. Asynchronie dans la programmation
Ivan Puzyrevsky
Dans le domaine du développement d'applications multithread ou distribuées très chargées, on peut de plus en plus entendre des conversations sur le code asynchrone, y compris des spéculations sur la nécessité (manque de besoin) de prendre en compte l'asynchronie dans le code, sur la compréhensibilité (incompréhensibilité) du code asynchrone, et son efficacité (inefficacité). Dans ce rapport, nous tenterons d'approfondir le sujet: nous analyserons ce qu'est l'asynchronie; quand il se pose; comment cela affecte le code que nous écrivons et le langage de programmation que nous utilisons. Nous allons essayer de comprendre ce que l'avenir et les promesses ont à voir avec cela, parlons un peu des coroutines et des acteurs. Nous affectons JavaScript et les systèmes d'exploitation. L'objectif du rapport est de rendre plus explicites les compromis qui surviennent avec l'une ou l'autre approche du développement de logiciels multithread ou distribués.
À propos de Speaker
Ivan a commencé à travailler chez Yandex en 2009 dans le département des technologies linguistiques de la recherche. Il est maintenant engagé dans le développement de systèmes de stockage distribué et de traitement de données. Diplômé du Département de logique mathématique et théorie des algorithmes de la Faculté de mécanique et de mathématiques de l'Université d'État de Moscou. Professeur de ShAD.
3. C ++ aujourd'hui: la bête est de retour
Jon kalb
Diapositives
Il s'agit d'un rapport basé en partie sur O'Reilly's C ++ Today: The Beast is Back. Dans ce rapport, nous spéculerons un peu pourquoi les ingénieurs qui souhaitent écrire du code productif choisissent C ++. John présentera la perspective historique de se concentrer sur le C ++, expliquera comment la communauté C ++ vit en ce moment et où le langage et son public se dirigent. Récemment, tout le monde s'est intéressé au code efficace, des fabricants de téléphones portables aux grands centres de données, donc le C ++ avec ses bibliothèques open source est redevenu un sujet brûlant. Ce rapport explique clairement pourquoi la plupart des ingénieurs choisissent C ++ pour tout cela. Il existe une esquisse générale du C ++ à l'échelle historique avec des explications sur les points de croissance et de déclin de la popularité.
À propos de Speaker
John codait en C ++ depuis plus de 20 ans. Pendant ce temps, il a réussi à participer à des projets C ++ d'Amazon, Apple, Dow Chemical, Intuit, Lotus, Microsoft, Netscape, Sun, Yahoo! et dans quelques entreprises dont personne n'avait entendu parler de toute façon. Il est président du comité directeur de Boost, et est également impliqué dans le programme de piste C ++ au Silicon Valley Code Camp et est l'un des directeurs de C ++ Now (alias BoostCon). En 2014, il a reçu Microsoft Most Valuable Professional.
Daveed vandevoorde
Diapositives
Une fois que le comité de normalisation C ++ a organisé un sous-groupe «SG-7», qui étudie les possibilités de mise en œuvre de la réflexion. Récemment, ce groupe s'est également engagé dans la métaprogrammation et a pris plusieurs décisions importantes concernant l'apparence de la solution possible. Dans ce rapport, nous nous pencherons sur le passé, qui nous a amenés à une telle vie, et discuterons des possibilités de support natif pour la «métaprogrammation réfléchissante» en C ++.
À propos de Speaker
David est un scientifique belge vivant à Princeton aux États-Unis. Il est vice-président de l'ingénierie au Edison Design Group, où il contribue principalement à leur propre interface pour le compilateur C ++. Il participe activement au comité de normalisation C ++, où il est impliqué dans l'évolution du langage de base.
1. Attendu inattendu
Andrei Alexandrescu
Écrire du code résistant aux erreurs est une douleur, une douleur dans n'importe quelle langue. Des exceptions, bien qu'elles soient un moyen politiquement correct de signaler des erreurs en C ++, mais dans de nombreuses applications, vous devez utiliser des codes retour - pour des raisons liées à la facilité de compréhension, à la facilité du traitement local, à l'efficacité du code généré, etc.
Dans ce rapport, nous verrons comment la théorie et la pratique peuvent être combinées pour résoudre les problèmes de gestion des erreurs. Le type Expected
peut être utilisé à la fois localement (dans le style des codes retour) et central (dans le style des exceptions), combinant les avantages des deux approches.
À propos de Speaker
Le développeur roumain Andrei Alexandrescu est un expert sur un large éventail de questions, notamment l'architecture et la mise en œuvre de systèmes logiciels, la conception de langages de programmation, l'architecture de bibliothèques, tous les aspects du C ++ et D, l'apprentissage automatique et l'analyse des langages naturels. Son approche créative pour résoudre les problèmes, la connaissance la plus large et le charisme font d'Andrei l'un des orateurs les plus populaires au monde.
Les livres et articles d'Andrei ont influencé toute l'industrie. Il est l'auteur de livres à succès comme Modern C ++ Design, C ++ Coding Standards (avec Herb Sutter), The D Programming Language, et d'articles comme Simplify Your Exception-Safe Code - Forever (écrit avec Petru Marginean) et Mojo: Move of Joint Objects. Une liste complète de ses œuvres peut être trouvée ici .
La prochaine conférence C ++ Russie se tiendra du 19 au 20 avril à Moscou, c'est-à-dire très bientôt. Un nouveau programme, de nouveaux conférenciers et une autre journée entière de formation . Le programme peut être consulté sur le site officiel , des billets peuvent également y être achetés .