返回介绍

10.3 教育和研究

发布于 2024-08-19 12:44:36 字数 3030 浏览 0 评论 0 收藏 0

从 2006 年不太理想的状态(§2.3) 到现在,C++ 的教育是否得到了改善?也许吧,但是对于 C++ 来说,教育仍然不是强项,大多数教育还都集中在为业内人士提供信息和培训上。在大多数国家/地区,很多大学毕业生对 C++ 语言及使用它的关键技术只能算一知半解。对于 C++ 社区来说,这是一个严重的问题。因为,对于一门语言来说,如果没有热情洋溢的程序员们源源不断、前赴后继地精通其关键设计和实现技术,那它是无法在工业规 模上取得成功的。假如更多使用 C++ 的开发者知道如何更好地使用它,那他们就能做太多太多的事来改进软件!如果毕业生带着更准确的 C++ 视角进入工作岗位,那么太多太多的事情会变得容易得多!

C++ 教学所面临的一个问题是教育机构经常将编程视为低级技能,而不是基础课目。好的软件对我们的文明至关重要。为了把控软件,我们需要像对待数学和物理学一 样,严肃认真地对待关键系统的软件开发。那种削足适履的方式对于教育和软件开发是行不通的。一个学期的教学也远远不够。我们永远都不会期望在教了短短几个 月英语之后,学生就会懂得欣赏莎士比亚。同样,了解语言的基本机制与精通内行所使用的惯用法和技巧之间是有差距的。就像任何主要的现代编程语言一样,教授 C++ 也需要根据学生的背景和需求相应地调整教学方法。即使教育机构意识到了这些问题并愿意做出一些弥补,奈何学生已经课满为患,教师也很难保持不跟工业实践脱 节。SG20(教育)正试图总结教授和使用现代 C++ 的方法来提供一些帮助。SG15(工具)则可能提供更多支持教学的工具,从而越来越多地发挥重要作用。

从 C++11 开始,我们对此有了越来越多的认识。例如,Kate Gregory 制作了一些很棒的视频,介绍了如何教授 C++ [Gregory 2015, 2017, 2018]。最近的一些书籍认识到在支持教育方面,不同的受众存在不同的需求,并试图迎头解决这些问题:

  • 《C++ 程序设计原理与实践》(Programming: Principles and Practice Using C++)[Stroustrup 2008a]——这是一本针对刚入门的大学生和自学人士的教科书。
  • 《C++ 语言导学》(A Tour of C++)[Stroustrup 2014d,2018f]——针对经验丰富的程序员的简短概述(200 页)。
  • 《发现现代 C++》(Discovering Modern C++)[Gottschling 2015]——这是一本专门为数学背景较强的学生准备的书。

我也写了一些半学术性质的论文(Software Development for Infrastructure [Stroustrup 2012] 和 What should we teach software developers? Why? [Stroustrup 2010b]),并在 CppCon 2017 开幕式上作了关于 C++ 教育的主题演讲(Learning and Teaching Modern C++ [Stroustrup 2017c])。

自 2014 年左右以来,视频和在线课程的使用急剧增加。这对 C++ 的教学来说很有帮助,因为这样就不需要一个中心组织或大量资金的支持。

以下列出了从 2006 到 2020 年间,与 C++ 语言相关的学术研究成果:

  • 概念:泛型编程 [Dehnert and Stepanov 2000]、C++0x 概念 [Gregor et al. 2006]、使用模式 [Dos Reis and Stroustrup 2006]、库设计 [Sutton and Stroustrup 2011]。
  • 理论与形式化体系:继承模型 [Wasserrab et al. 2006]、模板和重载 [Dos Reis and Stroustrup 2005a]、模板语义 [Siek and Taha 2006]、对象布局 [Ramananandro et al. 2011]、构造和析构 [Ramananandro et al. 2012]、用于代码处理的表示形式 [Dos Reis and Stroustrup 2009,2011]、资源模型 [Stroustrup et al. 2015]。
  • 动态查找:快速动态类型转换 [Gibbs and Stroustrup 2006]、模式匹配 [Solodkyyet et al. 2012]、多重方法 [Pirkelbauer et al. 2010]。
  • 静态分析:可靠的表示法 [Yang et al. 2012]、实践经验 [Bessey 2010]。
  • 性能:代码膨胀 [Bourdev and Järvi 2006,2011]、异常实现 [Renwicket et al. 2019]。
  • 语言比较:泛型编程 [Garcia et al. 2007]。
  • 并发和并行编程:内存模型 [Batty et al. 2013,2012,2011]、HPX(一个适用于任何规模的并行和分布式应用程序的通用 C++ 运行时系统 [Kaiser et al. 2009Sept])、STAPL(自适应泛型并行 C++ 库 [Zandifar et al. 2014])、TBB(英特尔的任务并行库 [Reinders 2007])。
  • 协程:数据库优化 [Jonathan et al. 2018; Psaropoulos et al. 2017]。
  • 软件工程:代码的组织和优化 [Garcia and Stroustrup 2015]、常量表达式求值 [Dos Reis and Stroustrup 2010]

看起来还有更多的关于 C++ 的学术研究机会,关于语言的特性和技巧(例如,异常处理、编译期编程和资源管理),以及其使用的有效性(例如,静态分析或基于真实世界代码和经验的研究)。

C++ 社区中最活跃的成员中很少有人会考虑撰写学术论文,写书似乎更受欢迎(例如,[Čukić 2018; Gottschling 2015; Meyers 2014; Stepanov and McJones 2009; Vandevoorde et al. 2018; Williams 2018])。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文