10

CPP-Summit 2020

 3 years ago
source link: http://yulingtianxia.com/blog/2020/12/06/CPP-Summit-2020/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
yulingtianxia's blog

2020 年是 CPP-Summit 第一次来到深圳,也是赶在了 2020 的尾巴。感谢公司让我有机会参加这种会议见见世面,在此记录下这两天的经历和想法,就当是记笔记交作业了。

简单介绍下这个会议,中文名是『全球 C++ 及系统软件技术大会』。虽然它的英文名里省略了『全球』,但从演讲嘉宾阵容上来看,也算是对得起『全球』二字了:有将近三分之一的演讲者来自国外。官网上的大会主席是『C++ 之父』Bjarne Stroustrup,他今年演讲的主题是《C++ 20 与C++的持续演化》。顺便说下,这个是『真·西佳佳之父』。会议的主办方是一家叫 Boolan 的技术咨询和培训机构,所以会议开始会植入一波硬广,这也算是常规操作了。大会的演讲嘉宾有极少部分是来自这家机构以及大会金主爸爸的,大部分嘉宾都是来自行业内有一定经验的开发者,阵容还算可以。

先说下总体感受:C++ 作为一门亘古不衰的语言,在各行各业都存在着经验丰富的开发者。随着各种更加『现代化』的语言的兴起,C++ 也迎来了更多的变化。不过很多新增语法特性的改进更像是戴着脚镣跳舞,保证对存量代码的向前兼容。在大会上也深深感受到互联网行业对传统软件行业的冲击,甚至讨论了 C++ 这碗饭还香不香的问题。大会的议题总体分为三大类:

  1. 新特性的研究和布道
  2. 性能和安全的实践经验
  3. 研发模式、测试和工程化等方法论

一般这种大会都是分为多个分会场同时演讲的,我只能选其中一些我比较感兴趣的议题去参加,大部分集中在前两类。国外开发者分享的议题大部分集中在第三类,由于今年疫情的原因,都改为线上会议了。国内开发者的分享更侧重于性能和安全,或者尝鲜新特性,尤其是大厂更强调业务落地。这里按时间顺序列出我参加的分享,并附上我的一句话短评:

IMG_3152.JPG

接下来胡扯下我感受到的几个点。

性能与安全

如果要分析性能,那就一定要涉及到编译器开启的优化选项,不同级别的优化会导致差异很大的结果。有些代码会因为过于简单而被编译器优化没了,从而导致测试结果的偏差。这时候往往需要对照生成的汇编代码来看,推荐一个在线工具:Compiler Explorer

安全方面能做的大都是自动化代码静态扫描工具。C++ 除了接入扫描工具检查之外,也在努力添加新特性,想把一些事情放在编译期去做。好像很多现代化语言都喜欢在编译期保证空值安全,类型安全等等,甚至是编译期就已经计算好了一些常量,推导出了一些结果。想要在编译期做更多事情,就需要语法特性上做更多要求。带来的负面影响就是学习成本高,很难做动态化。比如 Rust,初学者想让自己的代码编译通过都有点难。

C++ 的生命力

C++ 对嵌入式、培训和咨询等行业影响很深,但是移动互联网时代大家更偏向于使用 Go、Python、Rust 等语言。比如有人提到招 C++ 的应届生很难,由于前一阵子深度学习很火,好多都是只会 Python 的候选人。接着也有人回应说深度学习的应用层的确是 Python,但是各种引擎和框架还是需要 C++来实现,这恰恰反映出 C++ 高性能的优势。甚至有人说要是以后大家不学 C++ 了,那么在座的各位待遇就会翻倍了,因为有大量现存的代码是用 C++ 写的,只有我们才看得懂。

大会上好多拥有二三十年 C++ 开发经验的大佬,我这种毕业四年的萌新只能在一旁打 call。大量熟悉底层软硬件的资深开发努力分享经验,做咨询和教育。大家并不希望 C++ 因为过时而构起了壁垒,而是积极拥抱变化,布道更现代化的 C++。

但话又说回来,C++ 的这些新特性很多要照顾已有的旧语法,用起来还是少了内味儿。比如各种现代语言都具有的 Modules 概念,C++至今也并未普及,这也导致 C++ 没有一个公认的制品库管理工具。站在一些现代语言的开发者的视角,C++ 不过是在努力变革求生罢了。尴尬之处就在于,维护 C++ 老代码时没必要升级到新特性(有工作量和风险),若是写新业务还不如直接用上 Go,Java,Scala 等。一门语言的命运啊,当然要靠自我奋斗,但是也考虑到历史的行程。

国内与国外

在一次午餐的时候,我听到隔壁桌聊天说国外开发者讲的东西太虚了。我作为一线开发者深表赞同,也是在『踩坑』后避开了大部分国外开发者的分享。可能这里不仅仅是分享内容不被大家讨喜的原因,主办方的实时翻译效果也不太好。建议主办方考虑下,不要为了追求『全球』国际化而刻意安排国外开发者分享的比例。

为主办方点赞的是现场可以通过贴小心心的方式为分享者打 call。(主办方的小姐姐给了我三颗小心心让我贴给心心比较少的几位,然而我比较耿直,还是送给了我想打 call 的几位分享者)

IMG_3153.jpeg
IMG_3155.jpeg

最受欢迎的当属『C++ 之父』的分享,我觉得这不仅仅是分享内容受欢迎了,『教父』自带的人气和信仰也是很重要的。提问环节甚至有一位华为的项目经理上来就是一句 “Dear father!”,然后在主持人的一通喊停之下来了一通自我介绍,并邀请 Bjarne Stroustrup 来甚至华为参观,想来个拥抱交个朋友。最后说自己没有问题要提问,单纯想膜拜下。(非原话,差不多这个意思)反正把大伙儿都逗笑了。更逗的是线上提问,亮点自寻:

IMG_3136.jpeg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK