俄罗斯十大C ++报告和开放获取会议播放列表

这个中心帖子汇集了Nicolai Josuttis,Timur Doumler,Andrey Davydov等许多发言人的前十名报告。


C ++ 17/20/23,概念,不可变数据结构,并发性,并行性,元编程-所有这些都是今年春季在莫斯科举行的C ++ Russia 2019会议的主题。 六百多位与会者,国际知名演讲者进行了深入的报道。 请注意-这些报告很快就会过时,您甚至可以应用现在所获得的知识。



格式如下:


  • 强制性YouTube视频
  • 这份报告的详细俄文版(带幻灯片,如有)
  • 演讲者简介

随时发表评论! 顺便说一句,在削减后发布的播放列表中,不仅排名前10位。 而且我们关闭了YouTube上的广告,因此没有人会干涉。


所有报告的评分从“初级”到“高级”,但是前十名之间的差异很小,并且在很大程度上取决于评估方法。 通过稍微改变方法,可以大大改变位置。 因此,请观看所有内容!


会议的完整播放列表在这里


10. 搭便车者快速构建指南


维克多·基里洛夫(Viktor Kirilov)



滑梯


C ++以其性能,速度,缺乏标准的构建系统和软件包管理器以及编译的复杂性和持续时间而闻名。 快速迭代开发的不可能是开发人员生产力的最大杀手之一。 该报告适用于希望改进最后三点的每个人:首先,一些想法为什么编译和链接需要那么多时间,然后是解决问题的技术和工具的列表,例如:


  • 调整和基础架构-硬件,组装系统,缓存,分布式组装,瓶颈诊断,代码卫生;
  • 技术-统一构建,预编译头,静态与共享;
  • 更改来源-PIMPL习惯用法,更正确地使用模板,注释;
  • 模块-当它们出现在C ++中时是什么,因此这将变得不必要。

关于演讲者


在游戏和视觉特效行业中使用C ++的六年专业经验。 现在,Victor正在开发开源软件,并且不时地进行通常的合同工作。 最后一个有趣的任务之一是在Nim运行时中实现热交换代码。 他还是doctest的作者,doctest是“用于C ++的最快,最强大的单头测试库”。 他对开发游戏和游戏引擎,高性能代码,加密货币,优化工作流程以及集成良好的开发实践(例如现代静态分析和检测工具)感兴趣。 Victor居住在保加利亚的索非亚,编程既是他的职业,也是业余爱好。 有自己的网站: http : //onqtam.com/




9. C ++模板和数据库


谢尔盖·费多罗夫(Sergey Fedorov)



滑梯


当我们使用数据库时,我们经常获得原始缓冲区,而我们希望以C ++结构,类和容器的形式接收数据。


关于使用几乎所有当前可用的C ++ 17语言工具通过人机界面设计和实现PostgreSQL驱动程序的故事。


报告中描述的方法几乎可以适用于任何应用程序级协议。


关于演讲者


Yandex.Taxi的领先开发人员Sergey Fedorov正在为Taxi后端开发异步框架。 元编程和开源的忠实拥护者。




8. 仅限移动的C ++设计


伊万·乔基奇(IvanČukić)



RAII释放捕获的资源。 但是有一种资源无法返回-这是时间。


最耗时的错误之一是创建不必要的副本。 C ++ 11 Move语义朝着正确的方向迈出了一步。 它允许您将不必要的数据提供给其他人,而无须创建副本就可以罚款,并且当数据有很多用户时也不会冒着争夺数据的风险。


在本演讲中,我们将讨论仅允许使用特殊的,不可复制的,可重定位的类型(称为线性类型)的体系结构方法。 我们将讨论C ++的功能,这些功能使我们能够强制使用此类类型。


为此,建议使用C ++ 20中的概念,&&-限定函数等。


关于演讲者


Ivan Chukich是Manning出版的《 C ++函数式编程》的作者。 KDE贡献者是最大的开源开源项目之一。 此外,他还在大学教授现代编程技术,并将他在C ++方面的20年经验传授给他的学生。 他在博士后和博士之前研究了C ++中的函数式编程,并在实际项目中使用了这些技术。




7. C ++ 17和C ++ 20/23中的并发性和并行性


雷纳·格林



线程,原子,互斥体和条件变量之间有什么共同点? 所有这些都是在C ++中构建任何多线程应用程序的基本模块,即使对于有经验的C ++开发人员,它们也可能导致问题。


这种情况在C ++ 17中已经发生了巨大变化,在C ++ 20/23中更是如此。 从C ++ 17开始,大多数标准算法都以串行,并行和矢量化形式提供。 在最新标准中,我们期望执行者和交易记忆,我们可以期待期货和协程的重大改进。 对于多线程和并发,这仅仅是开始。 希望将来,仅将它们(执行程序,事务内存,期货,协程)用于抽象中,并且线程,原子,互斥体和条件变量将仅成为实现细节。


本报告的目的是查看我们在C ++ 17中已经收到的内容以及在C ++ 20/23中可以期望的内容。


关于演讲者


Rainer Grimm担任建筑师,团队负责人和讲师已有20年了。 在业余时间,他喜欢写有关C ++,Python和Haskell的文章,并在会议上发表演讲,经常写在他的博客“ Modern C ++”上。 他目前主持有关现代C ++和Python的研讨会。 他的书籍C ++ 11 for Programmierer,C ++,C ++ Standardbibliothek和The C ++ Standard Library由O'Reilly和Leanpub出版。




6. 元编程,温和的编译器


安德烈·达维多夫(Andrey Davydov)



任何投入C ++世界的程序员都知道模板是图灵完备的,“替代失败不是错误”,并且在编译时,您可以做一些令人惊奇的,有时甚至是有用的事情。 另一方面,经验丰富的C ++开发人员理解“您可以”并不意味着“您需要”,并且您必须为滥用元编程付出代价。 主要的限制因素之一是编译时间,这就是为什么该报告从编译器的角度讨论了哪些操作/技术最昂贵以及如何避免它们的原因。


特别强调了以下问题:


  • 为什么SFINAE是最后使用的东西;
  • 为什么std :: conditional_t的定义效率低下;
  • Microsoft STL和libc ++中的元组实现之间有什么区别;
  • 何时使用std :: {conjunction,disjunction},何时使用fold表达式;
  • 为什么不应该使用std :: void_t;
  • 如何在C ++ 20中出现的概念有所帮助。

关于演讲者


在过去的三年中,Andrey一直在JetBrains的ReSharper C ++团队工作。 过去,他从事与GIS和3D可视化系统相关领域的工业编程。




5. 基本的C ++


安东·波卢欣(Anton Polukhin)



每种新颖的编程语言都力求指出,它比C ++更快,更可靠,并且在所有方面通常要好几倍。


让我们看看-真理在哪里,小说在哪里。 让这场战斗在C ++和Asm / Rust / Go / Java / C#之间展开!


关于演讲者


俄罗斯在ISO标准化工作组国际会议上的代表。 C ++语言标准的多个已接受建议的作者。


Boost库的作者TypeType,DLL,Stacktrace和活动维护者Any,Conversion,LexicalCast,Variant。


他是《 Boost C ++应用程序开发食谱》和第二版的作者。




4. 后现代不变数据结构


胡安·佩德罗·玻利瓦尔·普恩特



多年来,C ++ Elite一直在谈论价值语义,不变性和通过交流进行共享。 我们正在等待一个没有互斥体,种族,观察者,“团队”模式和所有爵士乐的美好世界。 在实践中,存在很大的问题。 主要问题之一是数据结构。


不可变的数据结构不会更改值以使用它们-您需要创建新值。 旧值保持原样,因此您可以从多个线程使用它们而不会阻塞。 这使我们实现了资源的结构分离,因为新值和旧值可以使用相同的通用数据-可以快速比较它们,并且非常紧凑地存储撤消历史记录。 这就是为什么它们非常适合在多线程和交互式系统中使用的原因:它们简化了桌面软件的体系结构,并允许服务器更好地扩展。 这是决定Clojure和Scala成功的秘诀,甚至JavaScript开发人员也喜欢将其与Facebook的Immutable.js等一起使用。


胡安介绍了Immer,这是一个C ++库,可实现现代,高效,不变的数据结构。


在本次演讲中,他谈到了不变性的体系结构优势,并展示了如何在完美的现代数据结构(松弛基数平衡树)的基础上构建极其有效和强大的持久矢量。 我们看了一个示例程序-以这种架构风格设计的文本编辑器。 该代码不仅非常简单,而且在性能上也胜过大多数类似程序。 不信? 打开报告,自己看看!


使用的技术:



关于演讲者


Juan是来自柏林的自由顾问和工程师,专门研究价值导向的设计,交互式软件,现代C ++,函数式编程和开放源代码的战略使用。 在此之前,他曾在Ableton工作,并参与了与音乐有关的各种项目。 他还参加了GNU项目,并在格拉纳达共同创建了Hacklab。




3. 概念:简化std实用程序类的实现


安德烈·达维多夫(Andrey Davydov)



C ++ 20中出现的概念是一个长期且广泛讨论的主题。 尽管这些年来积累了过多的材料(包括世界一流专家的演讲),但应用程序程序员(他们每天都不睡于标准)仍然存在困惑,确切地说,C ++ 20概念是什么?我们需要多年来是否检查过enable_if。 部分原因在于概念在大约15年的时间内是如何演变的(概念完全+概念图->概念精简版),部分原因是这些概念与其他语言中的类似工具(Java / C#通用范围,Rust特性,... )


该报告将首先简要概述C ++ 20的概念相关创新,然后我们将比较C ++ 17和C ++ 20解决方案,以了解STL的某些类和功能的实现。 例如:


  • 要实现std ::可选,现在您必须使用深度为7的继承层次结构,在C ++ 20中将没有必要;
  • 对于默认的构造函数std :: pair现在需要2个模板函数,在C ++ 20-1非模板中;
  • 通常,模板类会部分地专门化,在模板参数具有某些特殊属性的情况下,使用概念进行此操作更方便且更正确。

观众应该对什么概念和SFINAE有所了解。 熟悉标准C ++库也将很有用;不需要了解复杂性和实现细节。


关于演讲者


在过去的三年中,Andrey一直在JetBrains的ReSharper C ++团队工作。 过去,他从事与GIS和3D可视化系统相关领域的工业编程。




2. 现代C ++中的初始化


帖木儿·杜姆勒



众所周知,初始化语义是C ++最复杂的部分之一。 初始化的类型很多,用不同的语法描述,它们都以复杂而具有挑战性的方式进行交互。 C ++ 11带来了“通用初始化”的概念。 不幸的是,她引入了甚至更复杂的规则,反过来,它们在C ++ 14,C ++ 17中被阻塞,而在C ++ 20中又被更改。


Timur在这份报告中首先总结了C ++中初始化演变的历史结果。 他对初始化规则的当前版本,典型问题和惊奇之处进行了系统的概述。 介绍了有关如何有效使用所有这些规则的实用规则。 最后,帖木儿谈到了该标准中的最新提议,这些提议可以使C ++ 20初始化的语义更加方便。


关于演讲者


Timur是专门从事声音和音乐的C ++开发人员,ISO C ++委员会的成员,音频开发人员大会(ADC)的程序主管。 他致力于编写简洁的代码,开发良好的工具,促进C ++语言的发展,并建立包容性社区。




1. C ++ 17-最大的陷阱


尼古拉·乔蒂斯(Nicolai Josuttis)



C ++ 17是语言和库中小的新功能的巨大组合。 这些功能不仅可以让您做更多的新事情,而且还提供了新的射击方式-比您预期的要频繁得多。 这不是一个理论。 它发生在现实生活中,此时此刻。


在此报告中,Nikolai梳理了所有这些陷阱,讨论了其思想和体系结构背后的原因,并提供了有关如何解决问题的说明。 副作用是,您可以更深入地了解C ++ 17的新功能。


关于演讲者


Nikolay是一名独立的系统架构师,技术经理,作者和顾问。 他为电信,金融和制造业开发中型和大型软件系统。


他以其报告而著称,在社区中广为人知,他撰写有关C ++的书籍( C ++标准库C ++模板 ),谈论该语言的新功能。


20年来,他一直是C ++标准化委员会的活跃成员。




完整的播放列表以及所有报告都可以在此处找到 。 我们提醒您,新的C ++俄罗斯已经在路上,将于2019年10月31日至11月1日在圣彼得堡举行。 可以在官方网站上购买门票。

Source: https://habr.com/ru/post/zh-CN462939/


All Articles