C++

C++语言,已经深深改变我们的世界。

作为一门系统级编程语言,C++语言就像是C语言的超集,支持面向对象程序设计方法的所有概念,擅长面向对象程序设计,还可以进行基于过程的程序设计,具有很强的普适性、移植性和稳定性,对硬件可以直接操控。

包括火星探测器,人类基因组计划、Google、亚马逊、Amadeus 机票预订系统、OpenOffice、华尔街投行、交易所大部分交易引擎,背后都是 C++ 语言。巅峰时期,C++语言的使用者以每 7.5 个月翻一倍的速度增长,程序员队伍迅速壮大,众多新兴科技公司因此崛起。

它的发明者 Bjarne Stroustrup,现任摩根士丹利信息技术部门董事总经理,哥伦比亚大学计算机科学系客座教授。他出生于丹麦,在剑桥读完博士,1979 年,他开始开发一种称为“C with Classes”的语言,后来演化为C++。

1998 年,ANSI/ISO C++ 标准建立,Bjarne 推出了经典著作 The C++ Programming Language 第三版,C++完成了标准化历程。

C++之父 Bjarne Stroustrup

C++ 之父,他 66 岁依然经常写代码,致力于更新 C++ 的标准和体系。

Bjarne 在高校从事科研工作多年,为了了解一线程序员的需求,他加入摩根士丹利:“我想看人们怎么开发软件,遇到什么问题,找到改善 C++ 的方向,我想创造一种更有用的语言。”

C++的崛起史

世界上第一种计算机高级语言是 FORTRAN,诞生于 1954 年,随后多种计算机高级语言出现,比如 BASIC,这是为初学者设计的小型高级语言,以及美国贝尔实验室在 1972 年开发出的C语言,应用于大多数系统软件和应用软件的程序编写。

20 世纪 70 年代中期,Bjarne 在剑桥大学计算机中心工作,使用过 Simula 和 ALGOL,接触过C语言。1979 年,Bjame 进入贝尔实验室,开始从事将C改良为 C with classes 的工作,他一心想提高项目的工作效率,希望设计一种能直接操控硬件的更好的计算机语言。他说:

“一个编程语言最大的价值在于应用,IT 技术可以被应用到很多行业,从电话到火箭,从小到大的领域,地球上永远有人对新应用感兴趣。”

1983 年,改良后的 C with classes,被正式命名为C++。作为一个实用主义者,Bjarne 认为任何语言的编程,首先需要非常直白,不断做重复的实验测试,以及程序员之间的及时沟通、频繁交流,写代码并不是一个单打独斗的事情。

C++先后经历了 3 次修订,Bjame 不断修改,为其加入新特征。到了 20 世纪 90 年代初,人们开始为 C++ 建立一个标准,成立了 ANSI 和 ISO,这是一个联合标准化委员会。

科学家 Alexander stepanov 创建了标准模板库,即 STL,它功能强大、设计优雅,委员会将 STL 包含到 C++ 标准中,扩展了 C++ 的范围。1997 年委员会通过了标准的最终草案,1998 年,C++的 ANSI/IS0 标准被投入使用。

标准 C++ 被确认了,所有主流编译器,包括微软的 Visual C++ 和 Borland 公司的C++Builder,都支持这个版本。之后它不断迭代完善:

1990 年,引入模板和异常处理的概念;

1993 年,引入运行时类型识别(RTTI)和命名空间(Name Space)的概念;

1997 年,C++语言成为美国国家标准(ANSI);

1998 年,C++语言又成为了国际标准(ISO)。

现在它已成为使用最广泛、面向对象的程序设计语言之一,微软、Apple 的大部分软件、 腾讯的 QQ 和微信、Android 底层架构、 大部分数据库的核心代码……它无处不在。

创新是不断突破自己

每种成功的编程语言,都有其核心竞争力,有些适合浏览器,有些适合专业的应用软件。在 Bjarne 看来,编出一种成功的语言,最重要的是保持其核心竞争力。

他经常和一线开发应用的编程人员、系统开发工程师聊天,发现问题,再优化功能。很多人问他:为什么 C++ 不可以将 Java Script 的优点纳入旗下,提高写入程式时的效率,增强反馈能力?

Java 是一门面向对象编程语言,不仅吸收了 C++ 语言的优点,还摒弃了 C++ 里难以理解的多继承、指针等概念,它可以编写桌面应用程序、Web 应用程序、分布式系统和嵌入式系统应用程序等。Bjame 的一个学生参考了 C++ 的写法,创造了 Java。

Bjarne 说,“我认为 Java 是自成一体的,只有你想出一种办法把 C++ 的核心特点和 Java 的核心特点结合在一起,这两种语言才能被整合。但事实是,这是不可能的。”

也有人向他反馈称,希望 C++ 操作更简单,再增加几个新功能。Bjarne 尝试过丢掉一些老旧的功能,为 C++ 瘦身,让它变得简单,但是几乎每次都失败。

因为 C++ 几乎每个功能都被使用过,那些用过或开发过这个功能的人,不想舍弃这些代码,Bjarne 希望未来设计一些功能,建构新的分析系统,让电脑自动筛选出老旧过时的代码,用户可以一键更新。

Bjarne 还在不断突破:“我一直想打造一个完美的系统,我希望 C++ 更可靠、快捷、简便,但是我还没成功,C++是非常大的分布性的系统,未来还会更多版本。”

推动 C++ 不断发展的动力,来自其背后庞大的应用,硬件正在变得越来越现代化,C++语言的挑战之一是:如何跟上硬件发展,与时俱进。

他也常常思考“未来 5 年我能做什么?”现在科学家们拥有更多数据,也出现了很多概念,像大数据、人工智能、机器学习……以后概念会更多,Bjarne 希望 C++ 可以促进这种变革。这些年他频繁接触这些新技术,希望用 C++ 帮助使用者们更好地操作。

他从 1965、 1975 年就开始听说“A.I.将要改变世界”的说法,而 AlphaGo 是第一个真正实现机器自我学习的模型,今年以来,Bjarne 看到越来越多自主学习的人工智能模型,他很乐观,现在的人工智能可能需要 1 万台机器来运算,未来过程会被简化,新的突破很快就会出现。

via:tmtpost.com