回顾 CPP North 见闻

Blog
Author:
Amir KirshAmir Kirsh
Published On:
7月 27, 2022
Estimated reading time:
1 minute

今年,Incredibuild 参加了在加拿大多伦多举行的首届 CPP North 会议。我们的开发者推广大使 Amir Kirsh 为本次活动发言人,下面有请他为我们做一个相关回顾。

参加完首届 CppNorth 会议后,我便告别了多伦多。不得不说,本次会议取得了圆满成功!

我于 7 月 17 日抵达多伦多。周末,庆祝活动以三个大型研讨会拉开了序幕:

  • 《使用 Modern C++ 进行并发编程》,由 Rainer Grimm 主持(Rainer Grimm 为著名 C++ 培训师,也是 Modern C++ 网站幕后推手);
  • 《低延迟的卓越游戏开发》,由 Stephanie Brenham 和 Guy Davidson 主持(两人均来自游戏行业,分别于育碧多伦多Creative Assembly 就职);
  • 《通用编程:从新手到入门》,由 Patrice Roy 主持(Patrice Roy 教授现就职于舍布鲁克大学,拥有丰富的 C++ 演讲实践经验)。

我在研讨会期间感受到了大家的激情澎湃,很高兴能够参与研讨。此外,我还忙里偷闲,利用晚宴前的时间散了会儿步,感受了多伦多的魅力。

(图源:Amir Kirsh

 

周日晚上,宴会和棋盘游戏后,会议正式开始。在宴会上,我认识了很多来自 C++ 社区的成员。

7 月 18 日,星期一,当日活动始于 Kate Gregory 精彩绝伦的主题演讲,题目是《我是不是一个优秀的程序员》,演讲聚焦于如何成为优秀的程序员,以及该如何不断成长这一话题。演讲期间 Kate Gregory 展示了优秀案例,寓意深刻、趣味斐然。相信这场讲座定能鼓舞人心,并启迪与会者及其团队思考。

主题演讲之后,我参加了三场高质量的讲座,每一场都让我受益匪浅。我尽可能多地参加讲座,以期接触新领域和新观念,其中有些主题我有所了解,但期望能深入探索,而有些尚且知之甚少。当然我也安慰自己,错过的课程均有录制,虽然无法将现场课程和录制课程相提并论,但聊胜于无(这也是我选择亲自参加讲座的原因之一)。

我选择的讲座是《有备无患式编程:避免危险转换》,主讲人 Patrice Roy 在现场进行了安全类型编码。该话题极为重要,因此我很高兴看到其他人对其进行介绍,在这篇文章中也将继续讨论。此外,现场编码总是妙趣横生。

对于午餐后的下一场讲座,我没有太多选择。虽然仍有三场同时进行的课程,但我不得不参加由我主讲的特定讲座,主题是《C++ 容器和算法背后的细微细节》,聚焦于在选择或使用 C++ 容器和算法时需要考虑的因素。很高兴在与另外两场精彩讲座同时开讲的情况下(分别是由 Jason Turner 主讲的《编译时间资源的力量》,以及由 Andrew Bitar 和 Aidan Wood 主讲的《在硬件及软件边界建立抽象》),我的讲座还能拥有如此优秀的听众。值得一提的是,听众的 C++ 经验从新手到专家程度均有,可谓相当多样化。我的讲座针对初级和中级开发者,很荣幸能有各位的参与,甚至还有一些是更高级的程序员(比如 David Sankel,感谢他提供的出色评论)。

我选择的下一节课是 Daisy Hollman 的《可爱的 C++ 技巧(以及能够从中学到的东西)》。Daisy 是名优秀的演讲者。我必须努力集中注意力,才能跟上她介绍的高级 C++ 知识,万幸紧跟她的思路总是充满乐趣。她在讲座中重点讨论的技巧与我周二即将进行的另一节课程有关,主题为结构绑定。

我参加的下一场讲座是由 Titus Winters 主讲的《软件工程语言》。Titus 分析了我们对软件语言的要求,以及编程和工程之间的区别。他讨论了我们对不同代码片断的目标,包括预期生命周期(有些程序是为一次性执行而编写,有些程序则要存活几十年)。Titus 条理清晰,论点极具说服力。对我来说,这就像一场主题演讲,既传达了有意义的见解,也为接下来的讲座奠定了基础。

晚上,我们举行了演讲者晚宴,有机会让演讲者和与会者畅所欲言。我们在活动期间屡次变更驻足之处,以便能够结识更多的人。我与 Jason Turner 和 Stephanie Brenham 进行了非常有趣的对话,不仅是关于 C++ 的对话,还包括我们得到的 Java 荒漠。

(来源:https://twitter.com/lefticus/status/1549171213431410688

 

为了确保能够充分利用此次活动,晚上 8:00,我们继续参加了由 Walter Brown 组织的“电影之夜”活动。活动期间接连放映了几个非常有趣的视频,视频主题包括:你知道个人电脑 (PC) 不受专利保护吗?

第一天的会议大约在晚上 10:30 结束,之后工作人员就带领我们回房间睡觉了。

7 月 19 日,星期二,首先由 Caruth Chandler 发表了关于“Carbon”的主题演讲。Carbon 是一种由谷歌员工和其他成员联合开发的新语言,旨在成为 C++ 的潜在接替语言。实际上,这也是关于 Carbon 的首个公开声明,一经发表便在 SW 开发界引起了轩然大波(演讲时 Carbon 声明在 Hacker News 创下了排名第二的热度,当日结束后热度排名第六)。

还没有等我们消化完这些劲爆新闻,下一场讲座很快就到来了,这是由 Tony Van Eerd 主讲的《以价值为导向的编程》。Tony 的确是一名出色的演讲者,他像往常一样侃侃而谈,有他在的舞台,总是能让听众们感觉身临于城里最好的演出。

午餐过后,我参加的下一场讲座是由 Guy Davidson 主讲的《抽象:C++ 真正的超级力量》。讲座内容丰富,传递出大量信息和想法。我想这又会成为成为下一场主题演讲。

接下来的两个时段里,我分别开展了两场讲座。第一场讲座是:《你的结构可以绑定吗?通过概念、SFINAE 和 Herb Sutter 模式匹配进行考察》。讲座名称已然足以说明讲座内容。第二场讲座是《是什么造就了优秀的 C++ 程序员:对 C++ 教学方法的不断探索》。我的第二场讲座与 Jason Turner(《C++ 的最佳部分》)和 Bryce Adelstein Lelbach(《C++ 标准并行性》)的两场讲座同时开讲。鉴于竞争如此激烈,原本我对出席情况尚存忧虑,但这些出色的听众的参与让我荣幸至极,此期间我还结识了Dave Abrhams,他针对教学价值语义等内容向我分享了极具意义的解读。

这一天尚未结束,接下来是一个美妙的披萨之夜,然后是由 Tony Van Eerd 发表的闪电演讲,这同样也是我非常喜欢的一项活动。演讲时长虽只有短短一小时左右,但其中的内容却能使我激发出诸多想法。晚会开始时,Dave Abrahams 介绍了 Val 语言,并讨论了价值语义。越来越多的人开始认同价值语义对于正确性和效率的重要性,这样的想法应该会影响我们设计系统和编写代码的方式。共享已不再是令人挂怀的难题,而问题在于其增加了系统中的偶然性,无论是从多线程还是矢量化角度,均限制了潜在并行数量。

另一次令人难忘的闪电(演讲?)是由 Guy Davidson 带来的一首出色的歌曲表演,歌曲的内容使他完全沉浸于他还是海盗时的回忆中。

我自己也发表了一场闪电演讲,题目是《装满水桶》,介绍了一道关于装满水桶的考试题,听众们可以将其视为一次突击测验。

第二天的会议在晚上 10:00 左右结束。

7 月 20 日,星期三。会议第三天,也是最后一天。到目前为止,一切都令人如此满意,我们还能再期待些什么呢?

当天,来自微软的 Tara Walker 就机器人和 ROS 操作系统发表了精彩的主题演讲,不仅具有极强的技术性,而且讲解细致详细。我很荣欣能够参加这样的讲座,期间不仅呈现了高水平的对话,还能让与会者深入了解个中细节。

我参加的下一场讲座是由 Fatemeh Jafargholi 主讲的《与孩子一起编程》。这是一场关于编程环境、方法和实用建议的精彩讲座,旨在教导孩子们进行编程。由于参与过类似倡议,我很是认可这一话题的必要性。

下一节课程由 Olivier Giroux 教授,主题是 C++ 内存模型。其中涉及 C++ 的复杂领域,很少有人能够真正掌握,而该讲座清楚地解释了这个问题如此复杂的原因!

然后是由 Sean Parent 发表的闭幕主题演讲,题目有些许悲观,叫做《C++ 悲剧,第一幕和第二幕》。该讲座巧妙呼应了之前诸多讲座,并介绍了C++ 作为一种成熟语言,如今所面临的问题或挑战。虽然该讲座并未提出任何具体解决方案,但还是帮助我们在不让局面变得更加复杂的情况下去思考 C++ 未来的发展方向,以及应当如何应对不断发展的挑战。至此,会议结束。但我们需要的远不止如此。

附言

参加会议与社区成员会面,并与他们谈论 C++是不错的体验。除此之外,我还十分享受与 Jason Turner、Walter Brown、Guy Davidson、Chris Ryan、Stephanie Brenham 等人的交流。Chandler Carruth 结束 Carbon 声明后,我找到机会和他讨论与 Carbon 相关的话题。我从 Dave Abrahams、David Sankel 等人那里收获了有关我演讲内容的极好评论和见解。很荣幸能与 Kate Gregory、Timur Doumler 和 Daisy Hollman 会面。至此,如果各位读到以上内容,可能会认为这只不过是 C++ 社区“内部圈子”的见闻分享。但在会议中不存在内部圈子,人人都能完美融入其中,成为伙伴中的一员。只要与我们同坐在一张桌子,便可开始聆听和讨论。只要加入我们,你就是这个社区中的一员。