分类 C++ 下的文章

在 C++ 之前,有一个叫 C 的家伙

C 语言是由贝尔实验室的 Dennis Ritchie 于 1972 年发明的一种操作系统编程语言(专门用于开始操作系统的语言),Ritchie 的主要目的,是开发出一种易于编译、能高效访问内容、生成高效代码且不依赖于其它程序的简约语言,作为一门高阶语言,它给开发者提供了很大的控制权,同时又保留了硬件与操作系统的独立性,不必为每个平台重写代码。

由于 C 语言是如此的高效和灵活,所以,在 1973 年,Ritchie 与 Ken Thompson 使用 C 重写了大部门 Unix 操作系统的代码,许多以前的操作系统都是采用汇编语言编写的,只能运行于特定的硬件平台之上,而 C 具有出色的可移植性,允许 Unix 在许多不同类型的计算机上轻松的重新编译,此时,C 语言与 Unix 命运就已经联系在了一起。

1978 年,Brian Kernighan 与 Dennis Ritchie 出版了一本名为《C 程序设计语言》的书,这本书通常被称为 K&R,为该语言提供了非正式的规范,并成为实事上的标准,当需要最大的可移植性时,程序员会坚持 K&B 中的建议,因为当时大多数的编译器都是按照 K&R 的标准实现的。

1983 年,美国国家标准协会(ANSI)成立了一个委员会来建立 C 语言的标准,1989 年,他们完成并发布了 C89 标准,通常称为 ANSI C,1990 年国际标准化组织 ISO 采用了 ANSI C ,这个版本称为 C90,编译器最终符合 ANSI C/C90,并且需要最大可移植性的程序被编码为该标准。

1999 年,ANSI 委员会发布了一个新版本的 C,称为 C99,C99 采用了许多已经作为扩展进入编译器的特性,或者已经在 C++ 中实现的特性。

好吧,在我接触计算机的近 28 年后,我终于鼓起勇气要正式开始学习 C++ 了,虽然以前也计划过很多次,但是这次看上去是认真的了,秉着学习记笔记的良好习惯,这个博客估计又会有几个月的频繁更新了。

为什么要学?

这个问题其实很简单,事情是这样的,最近一直在开发公司的一个名为 XXXX 的项目,里面涉及到大量的地图业务,最开始我们使用了开源的 OpenLayer 库作为底层地图支持,现在功能都开发得差不多了,自己感觉二维的平面地图太弱鸡了,我想整成一个建筑的三维地图,然后就开始接触 WebGL,以前都是使用的 2D 渲染,上周花了一个星期系统性的学习了 WebGL 相关的知识,写了 Hello, 3D 应该是没啥大问题了,但是总想再进一步,就更深入的了解 WebGL,啊,原来就是个 OpenGL 的绑定啊,那我就计算更深入地学习下 OpenGL,然后发现,OpenGL 的知识基本上都是拿 C++ 语言当示例,好吧,那等我先把 C++ 学会了再回来学 OpenGL,事儿就是这么个事儿,你看,我是不是有点忘记初心了?