C++之父Bjarne Stroustrup

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

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

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

它的发明者Bjarne Stroustrup,现任摩根士丹利信息技术部门董事总经理,哥伦比亚大学计算机科学系客座教授。他出生于丹麦,在剑桥读完博士,1979年,他开始开发一种称为“C with Classes”的语言,后来演化为C++。
其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C++交流群583650410,不管你是小白还是大牛欢迎入驻,大家一起交流成长。

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

钛媒体记者在上海见到了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++语言的挑战之一是:如何跟上硬件发展,与时俱进。

C++语言,已经深深改变我们的世界相关推荐

  1. 它们改变了整个世界 盘点50个最伟大的游戏创意

    它们改变了整个世界 盘点50个最伟大的游戏创意 http://game.dbw.cn 2013-01-31 08:40:26 进入游戏论坛 http://game.dbw.cn/system/2013 ...

  2. 哪些语言塑造了今天的编程世界?作为程序员的你知道吗?

    哪些语言塑造了今天的编程世界,作为程序员的你知道吗? 为从繁重的工程计算中脱身,德国工程师康拉德·祖斯(Konrad Zuse)有了制造自动计算机的想法.1938年,他制造出了Z1使用简单却可靠的二元 ...

  3. 改变你的文字 改变你的世界

    改变你的文字 改变你的世界 这几个字说起来简单,但做起来是很难的. 表面上是改变文字, 而实质上是改变你的思维方式, 改变你的心态, 改变你看事物的角度. 视频中是不是有点夸张了呢? 改变几个文字的效 ...

  4. R语言ggplot2可视化改变图中线条的透明度级别实战

    R语言ggplot2可视化改变图中线条的透明度级别实战 目录 R语言ggplot2可视化改变图中线条的透明度级别实战 #默认没有透明

  5. C语言中要改变循环语句的流程可以使用的语句有哪些

    C语言中要改变循环语句的流程可以使用的语句有:break,continue和goto.break语句可以终止循环而执行整个循环语句后面的代码:continue语句可以跳过循环体中剩余的语句而强制进入下 ...

  6. R语言ggplot2可视化改变柱状图(条形图)的填充色实战:默认的颜色为灰色、改变柱状图(条形图)的填充色、设置每个柱子(条形)使用不同的色彩

    R语言ggplot2可视化改变柱状图(条形图)的填充色实战:默认的颜色为灰色.改变柱状图(条形图)的填充色.设置每个柱子(条形)使用不同的色彩 目录

  7. 罗永浩曾经深刻地改变过这个世界

    罗永浩的一举一动都会成为头条,就算如今低调到微博只剩转发了,几乎一声不吭,也会有各种谣言追着贴上去,比如下面这个.相信不少人在各种媒体号上看过这个新闻,估计微信群朋友圈疯传好几遍了. 先造个谣,让谣言 ...

  8. 智能可穿戴设备改变移动支付世界

    智能可穿戴设备改变移动支付世界 2015-10-22 11:08 中关村在线 字号: 随着各大巨头公司生产出自家的智能设备之后,开始不满足就这单一市场,所以巨头目前都在移动支付领域竞相出招,希望能在这 ...

  9. R语言ggplot2可视化改变字体大小实战:单个图片设置字体大小、全局设置字体大小

    R语言ggplot2可视化改变字体大小实战:单个图片设置字体大小.全局设置字体大小 目录

最新文章

  1. shell编程入门步步高(八、函数)
  2. JAVA(小技巧--List)
  3. Nested `constexpr` function calls before definition in a constant-expression context
  4. 机器学习教会我们的六件事
  5. folders默认配置 shell_更改windows默认的User Shell Folders
  6. Visio图形自动编号
  7. 最近准备认真读三本书
  8. android启动activity的详细过程
  9. android porting usb audio,android - 在android中启动时找不到audio-hal-2-0 - 堆栈内存溢出...
  10. OFFICE技术讲座:WP布局方向有哪些
  11. 基于Django+链家+Bootstrap真实数据的房源推荐/可视化系统
  12. SEFS安全透明加密内核
  13. 畅游陈德文:中国网游的发展与未来趋势
  14. rtx服务器插件的作用,腾讯通RTX手机版插件介绍 - 有度帮助中心
  15. python爬虫(五):博客spider
  16. 图形学数学基础之1D采样分布计算方法Inverse Method
  17. 网络游戏数据同步的实现 一:状态同步、帧同步的基本原理概述
  18. Linux系统学习了解计算机
  19. iOS info.plist访问权限设置
  20. python 捕捉 ctrl+c 异常方法, os._exit() 和 sys.exit() 的用法和区别

热门文章

  1. 小程序之私人心情语录-小程序源码分享
  2. 如何用GPT-3构建对话机器人
  3. cado车载蓝光空气净化重装亮相
  4. hutool计算日期时间
  5. a king读后感 love of the_小王子英语读后感(共7篇)
  6. Kali浏览器显示无法连接服务器,kali 中安装Chromium Web Browser并解决浏览器无法启动问题...
  7. 仿360手机卫士首页[android平台]
  8. 重装系统后网速变慢的解决办法
  9. 黑马程序员——java概述和基础知识
  10. HTTP 请求/响应的步骤