C++语言漫谈 中国科大 黄章进 C++语言程序设计 2 主要内容 ? C++的前世今生 ? 为什么学C++ ? 如何学好C++ 3 从B到C ? BCPL - Basic Combined Programming Language –B语言和C语言的祖先,由剑桥大学的Martin Richards在1964年对CPL语言进行简化得到 ? 美国AT&T的贝尔实验室 ? B语言 –1970年,肯·汤普森(Ken Thompson)在BCPL语 言的基础上设计 C++ 的前世今生4从B到C ? C语言 –1972年,丹尼斯·里奇(Dennis Ritchie)基于 B语言设计 –1978年,K&R C: Dennis M.Ritchie和Brian W.Kernighan合著《The C Programming Language》 –C90标准:ISO/IEC 9899-1990 –C99标准:ISO/IEC9899:1999 –2011年12月,ISO正式公布C语言新的国际标准草 案:ISO/IEC 9899:2011 C++ 的前世今生5从C到C++ ? C with Classes –1979年,本贾尼·斯特劳斯特卢普(Bjarne Stroustrup) 博士在C语言中加入类似Simula语言的类机制, –1983投入使用,定名C++ ? "拿来主义" –从Simula继承了类的概念 –从Algol68继承了操作符重载、引用以及在任何地方声明变 量的能力 –从BCPL获得"//"注释 –从Ada得到了模板、命名空间 –从Ada、Clu和ML取来了异常处理等 ? C++标准 –C++98(ISO/IEC 1988-1998), C++03(ISO/IEC 14882) –2011年9月1日出版发布C++11(ISO/IEC 14882:2011) C++ 的前世今生Bjarne Stroustrup 6 7 .NET Framework的C++/CLI C++ 的前世今生C++/CLI代码 C#代码 其他语言代码 编译器 编译器 编译器 微软中间语言(MSIL) 公共语言运行时(CLR) 001010001011101010101 010101000101110101110 公共语言 结构(CLI) 8 C++的五大子语言 C++ 的前世今生C++ 面向对象 的C++ C子语言 C++/CLI STL 泛型编程 语言 10 Why C++? ? 内容来自于C++ and Beyond 2011上 的一次公开演讲 ? 演讲者:Herb Sutter –ISO C++ 委员会的Chair –C++/CLI首席架构师 –Microsoft的软件架构师 –Exceptional C++ 和C++ Coding Standards 的作者 为什么学C++ 11 性价比 ? 电力、资源和体验 为什么学C++ 12 C++进化的三个时期 ? 生产力:开发效率 为什么学C++ 13 第四个时期 ? 性能 为什么学C++ 14 The World is built on 为什么学C++ 15 效率/灵活/抽象/生产力 为什么学C++ 16 移动设备开发 为什么学C++ 17 数据中心 为什么学C++ 18 减轻全球变暖 为什么学C++ 19 减轻全球变暖 My contribution to the fight against global warming is C++'s efficiency: Just think if Google had to have twice as many server farms! Each uses as much energy as a small town. And it's not just a factor of two… Efficiency is not just running fast or running bigger programs, it's also running using less resources. Bjarne Stroustrup, June 2011 为什么学C++ 20 钱投在了哪里 为什么学C++ 21 C++11 ? 性能和抽象的平衡 为什么学C++ 22 文无第一 ? 数学 –Mathematica, Maple ? 工程 –Matlab ? 思想和方法 为什么学C++ 23 如果编程语言是一种刀 为什么学C++ 24 多读多写 ? 听说读写 ? 多读 –阅读优秀源代码,学习设计思想、编程 风格 –熟读唐诗三百首,不会作诗也会吟 ? 多写 –北冥神功,化为己用 如何学好C++ 25 善用网络 ? Google –教程 –文档 –源代码 ? 维基百科 如何学好C++