📄 一句话概括
记住四个名字就够了:Dennis Ritchie(C 语言之父,也是 UNIX 的作者——C++ 的地基是他打的);Bjarne Stroustrup(C++ 之父,丹麦人,1979 年给 C 加上"类",后来写了《C++程序设计语言》——语言的建筑师);Alexander Stepanov(STL 之父,把"泛型"塞进标准库——给语言装上标准工具箱);还有 Scott Meyers(《Effective C++》作者)与 Herb Sutter(标准委员会长期主席)——布道者与验收员,教大家"怎么写得对、语言往哪走"。
一、地基:Dennis Ritchie(1941-2011)
- 贝尔实验室的传奇工程师,设计了 C 语言(1972 年前后),并与 Ken Thompson 一起造出了 UNIX 操作系统
- 为什么他是 C++ 的前提:C++ 的语法、运算符、内存模型几乎全盘继承 C——没有 C 就没有 C++(1.1 说的"超集")
- 冷知识:UNIX 当初为了"可移植"而用 C 重写——一门语言的诞生往往是为了解决一个具体工程问题,不是凭空设计
二、建筑师:Bjarne Stroustrup(1950- )
- 丹麦人,剑桥博士,1979 年到贝尔实验室工作时发现:C 快,但项目一大就难组织,于是动手"给 C 加上类"
- 1983 年这门新语言定名 C++(1.1.1 的时间线)
- 他坚持的一条设计哲学值得记住:"你不用的东西,不该让你付出代价"(zero-overhead principle)——这就是 C++ 又快又能"高大上"的原因,也是第三章学类、后面学模板时会反复遇到的思路
- 想深入了解可以看他写的《C++程序设计语言》(The C++ Programming Language)——被称作"语言作者的官方说明书"
三、标准工具箱:Alexander Stepanov(1950- )
- 1990 年代把"泛型编程"的成果带进 C++ 标准,形成 STL(标准模板库):容器(存数据的盒子)+ 迭代器(遍历的指针)+ 算法(排序、查找……)
- 意义:从此写 C++ 不必什么都自己造——但零基础阶段(本课前半程)先把基础语法练熟,STL 是后面章节的大礼包
- 一句话:Stroustrup 造了 C++ 的"器官",Stepanov 给它装上了"标准零件箱"
四、布道者与验收员:Scott Meyers 与 Herb Sutter
- Scott Meyers——《Effective C++》《Effective Modern C++》作者,用"条款式"讲经验:不是讲语法,而是讲怎么用对。多年稳居 C++ 必读书单
- Herb Sutter——长期担任 ISO C++ 标准委员会主席,主持"每三年一版"的节奏(1.1.1 里的 11/14/17/20……);也写《Exceptional C++》
- 他们的角色说明一件事:一门语言的繁荣,不只看发明者,还看有没有人持续提标准、写教材、把经验攒成共识
五、动手/认识小栏:这些名字以后会在哪见到
| 名字 | 你会在哪碰到 |
|---|---|
| Bjarne Stroustrup | 教材前言、std(standard 名字空间)这个词的由来、各类 C++ 大会演讲 |
| Dennis Ritchie | 讲"C 与 C++ 关系"的章节、Linux/UNIX 相关读物 |
| Alexander Stepanov | 后面学 STL 容器与算法时 |
| Scott Meyers | 进阶书单(学到类与模板时再回头读) |
六、常见误区
- "C++ 是某公司发明的商业语言"——不是。它诞生在贝尔实验室,由学术与工程社区共同演进,标准由 ISO 委员会维护(Herb Sutter 主持多年)
- "记住这些名字没用"——有用:知道"C 在前、C++ 在后",你就理解了为什么 C++ 要兼容 C;知道 STL 是后来加装的,你就不会奇怪"为什么前几章都在讲手写循环"
- "TIOBE 排名就是语言好坏"——排名反映热度,不反映适不适合你的活儿;C++ 常年在前列,靠的是它在"性能敏感"场景里不可替代
自测三问(点开对答案)
1. C++ 之父与 C 之父分别是谁?——Bjarne Stroustrup(C++,1979 给 C 加类);Dennis Ritchie(C,并参与造 UNIX)。 2. Stepanov 贡献了什么?——STL 与泛型编程:容器+迭代器+算法的标准工具箱,让 C++ 不必什么都自己造。 3. Stroustrup 的设计哲学?——"你不用的东西不该让你付出代价"(zero-overhead),这是 C++ 兼顾性能与抽象能力的关键。- ☑ C++的特点