搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 异步图书 > 百年之后,C++还在吗?

百年之后,C++还在吗?

异步图书 2020-08-01
关注我们丨文末赠书

和人类一样,编程语言也会经历生老病死。百年之后,C++还在吗?会是什么样子呢?

百年之后,C++还在吗?

诞生于上世纪80年代的C++,正处在壮年,作为一门集面向过程、面向对象、函数式、泛型和元编程等多种编程范式的复杂编程语言,辉煌了30多年,在全球有约450万名左右的拥护者。

C++既融合了C语言的灵活性和可扩展性,也继承了Simula的移植性和继承性。从最初的C with class,经历了从C++98到C++20多次标准化改造,给人们留下了兼容、稳定、实用的印象。

所以,要回答这个问题,首先要看向C++之父Bjarne Stroustrup设计C++的初衷。

1

C++简史


C++编程语言的历史可以追溯到1979年,当时Bjarne Stroustrup正在做他的博士论文。Stroustrup使用的语言是 Simula,这是一种主要为模拟设计的语言,也是支持面向对象编程范式的第一种语言。

令他意外的是:他开发的模拟器使大学大型计算机瘫痪了,甚至没有达到真实的模拟负载!尽管Simula语言对于大型软件开发非常有用,但运行起来太慢了。出于必要,他找到了一台小型实验计算机Cambridge CAP,并使用 BCPL(C语言的祖先)为它重写了模拟器。但他知道,BCPL虽快得多,但它过于低级的特性,使其不适于大型软件的开发。

Stroustrup得出一个结论:不仅需要一种具有灵活和可扩展类型系统的语言,更需要一个在任何地方都能高效运行的系统。Simula的类、类层次结构和强静态类型检查是组织代码和管理复杂性的主要手段;而BCPL跨平台移植性很好。如果把这些特性结合起来,能不能得到自己想到的语言呢?

之后,他开始致力于开发“ 带有类的C语言(C with Classes)”,顾名思义,它是C语言的超集。他的目标是在C语言中加入面向对象的编程,C语言因为其可移植性而广受欢迎,而且不会牺牲速度或底层功能。除了C语言的所有特性之外,该语言还包括类、基本继承、内联、默认函数参数和强类型检查。

百年之后,C++还在吗?

Stroustrup开发的第一个带有类的C编译器叫做 Cfront,它是从一个叫做CPre的C编译器派生出来的,作用是将带有类的C语言转换为普通C语言的程序。值得注意的一点是,Cfront主要是用带有类的C语言编写的,这使得它成为一个自托管的编译器(可以编译自己的编译器)。Cfront后来在1993年被抛弃,因为很难将新特性集成到它里面。尽管如此,Cfront对未来编译器的实现和Unix操作系统产生了巨大的影响。

1983年,该语言的名称从带类的C正式更名 C++。“++”是C语言中的一个递增变量的运算符。Stroustrup为C++加入了很多新的特性,其中包括虚函数、函数名和运算符重载、参考、常量、用户可控制的自由空间存储区控制、改良的类型检查,以及新的双斜线(//)单行注解风格。

C++的第一个商业版本在1985年发布,那时,C++还没有正式标准化,StruouStrut引用了《C++程序设计语言》来作为重要参考。直到1998年,C++标准委员会终于发布了C++的第一个国际标准ISO/IEC 14882:1998,也被称为 C++ 98。

至此,一门集面向过程、面向对象、函数式、泛型和元编程等多种编程范式的复杂编程语言——C++正式成为当今主流程序设计语言中的一员,并且30多年来不断加入新特性、新功能,从C++98一路到如今的C++20,以其灵活和通用性,满足了千万程序员的开发需求。

2

30年沉淀——最复杂的语言



如果10分满分,我对C++的了解是7分。
——Bjarne Stroustrup

有一个专属于C++的梗,即当你自称“精通C++”时,你一定还处于学习的愚昧之峰。
百年之后,C++还在吗?
你是在愚昧之峰还是开悟之坡?

C++有着许多独立于其他语言的特性,但随着语言成熟度、兼容性以及稳定性而来的,是语言的复杂性。

从C++98开始,标准的制定对开发产生了很大的影响。C++标准库:流I/O程序库、标准模板库也包括在内。

2003年,委员会对其1998年标准报告的多个问题作出了回应,并相应地对其进行了修订。修改后的语言被命名为C++ 03。

2005年,C++标准委员会发布了一份技术报告(称为TR1),详细说明了他们计划添加到最新c++标准中的各种特性。这个新标准被非正式地称为c++ 0x,一些编译器开始为新特性添加实验性的支持。

2011年中期,新的c++标准(称为c++ 11)完成。 Boost库项目对新标准产生了相当大的影响,其中一些新模块直接从相应的Boost库派生而来。一些新特性包括正则表达式支持、一个新的c++库、一个标准的线程库、一个新的循环语法(提供功能类似于某些其他语言foreach循环、新的容器类),以及更好地支持数组初始化列表和可变模板。

2014年,C++14作为C++11的一个小扩展发布,主要提供漏洞修复和小的改进。C++14的主要特性可以分为 三个领域:Lambda函数、constexpr和类型推导。C++14带来的另一个类型推导方面的改进是decltype(auto)语法,它支持使用与auto同样的机制计算给定表达式的类型。C++14中的其他改变包括可以声明变量模板,支持使用0b或0B前缀来声明二进制字面常量。

2017年,C++ 17基于C++11,简化了该语言的日常使用,使开发者可以更简单地编写和维护代码。此次更新加入了UTF-8 字符文字、折叠表达式 (fold expressions)、内联变量 (inline variables)、在 if  switch 语句内可以初始化变量、结构化绑定 (Structured Binding)以及类模板参数规约 等特性。

最近一次更新是在2020年,C++20 的提升幅度要比 C++11 更大,其中的 概念(Concepts)和 模块(Modules)会给开发者带来全新的感觉。Stroustrup觉得再过几年,Concepts 与 Modules 会重要到让大家都觉得不可或缺。

百年之后,C++还在吗?

C++经历了从C++98到C++20的多次标准化改造,这30年来,它一直被被业界公认为最复杂的编程语言之一。

3

不老的秘诀


在编程的世界里,很多语言来了又走,而C++却屹立了30多年,并在21世纪仍保持强劲势头。

Bjarne Stroustrup的理念是,一种语言不应该只能实现设计者想得到的功能,它必须有能力做得更好。这种追求“更好”的理念,也让C++在30年里经久不衰。

伴随C++长盛不衰的,还有一本畅销了20余年、引领百万程序员进入C++世界的经典图书—— 《C++ Primer Plus》。这本书出版至今已更新六代,其中文版累计销售突破30万册,并首次支持C++11新标准,获得了计算机出版联合会1991年度最佳‘How-to"计算机图书奖提名。


作者Stephen Prata掌握了秘诀——保持更新。1992年,本书第一次出版,名字叫《The Waite Group's C++ Primer Plus》。那个时候,大家都以《The C++ Programming Language》作为C++作为入门。为了在C++市场上具有竞争力,该书覆盖了标准模板库、最新的面向对象编程技术以及以及你必须掌握的C++基础。

1995年,该书第二版发布,并更名为《C++ Primer Plus》,涵盖了所有升级和新的添加到 ANSI C++,如模板、异常和实时识别(RTTI)。作者Stephen Prata假定读者没有任何C语言基础,用幽默的讲解方式和作为大学教授的经验,提供了一个权威的、用户友好的C++编程指南。

1998年,随着C++ 98标准发布,《C++ Primer Plus》做出了相应的更新,推出了第三版,并逐步加入案例、代码和数字,并辅以总结,复习问题,给出练习和解释的答案。

2001年,第4版《C++ Primer Plus》介绍了ANSI C++标准,并将 示例程序丰富至上百个。友好的语气、简洁的程序和每章结尾的复习练习,让初学者可以立即上手,编写自己的程序。

2004年,《C++ Primer Plus》第5版出版。在C++03标准发布后,又掀起了学习C++的高潮。为了让大家更好地学习和理解C++,作者在不改动章节布局的前提下,新增了大量插图和表格,以阐明一些不容易用语言描述清楚的概念。帮助读者通过真实的、实际的例子从底层来学习学习C++编程,并通过章节末复习问题和练习编程练习来巩固知识。

2011年,《C++ Primer Plus》第6版出版, 首次支持C ++ 11标准,并专辟一章介绍了C++11新增的功能。《C++ Primer Plus》吸收了另一本畅销书的成功理念,教你如何理解和使用这种用途广泛的语言:
对何时使用某些特性,例如何时使用公共继承来建立is-a关系,提供了概念方面的指导。
阐释了常用的C++编程理念和技术。
提供了大量的附注,如提示、警告、注意等

在IT技术圈有句俗话,“追新不追旧”。历经20余年,6次改版,中文版累计销售突破30万册,《C++ Primer Plus》经受住了时间的考验,像C++一样经久不衰。

当Stroustrup博士畅想未来五年C++的发展时,他表示,C++将在现有基础上实现进一步的完善,来满足更高标准的应用需求。

也许你选择C++的原因是必须为一个C++项目提供技术支持,或者只是打算使用C++编写新的代码,不论理由是什么,这个决定都是非常明智的。未来,C++在底层开发的优势将会越来越不可或缺。

京东75折购书,买一得四
C++ Primer Plus 第6版 中文版
作者: [美] 史蒂芬·普拉达(Stephen Prata)


购买2020版买一得四
1本纸质书+1本e读版电子书+1份思维导图学习路径+1个在线编程练习环境。

内容简介:
C++是在 C 语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言,是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的,通过大量短小精悍的程序详细而全面地阐述了 C++的基本概念和技术,并专辟一章介绍了C++11新增的功能。《C++ Primer Plus(第6版)中文版》分18章,分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑运算符、函数重载和函数模板、内存模型和名称空间、类的设计和使用、多态、虚函数、动态内存分配、继承、代码重用、友元、异常处理技术、string类和标准模板库、输入/输出、C++11新增功能等内容。

适合人群:
《C++ Primer Plus(第6版)中文版》针对C++初学者,从C语言基础知识开始介绍,然后在此基础上详细阐述C++新增的特性,因此不要求读者有C语言方面的背景知识。《C++ Primer Plus(第6版)中文版》可作为高等院校教授C++课程的教材,也可供初学者自学C++时使用。

参考资料
【1】History of C++

【2】'We need better balance between theory and practice', Bjarne Stroustrup, Father of C++
https://yourstory.com/2013/12/bjarne-stroustrup-interview?utm_pageloadtype=scroll
百年之后,C++还在吗?

百年之后,C++还在吗?
扫码填写问卷,领福利

百年之后,C++还在吗?

Epubit   Welfare

异步福利


邀请好友关注“异步图书”领取纸书1本,立刻填表抢座。



百年之后,C++还在吗?


进入异步读者群

领取异步VIP会员、技术分享、学习交流、赠书活动




Today's Interaction

今日互动


分享你学习C++时发生的趣事



百年之后,C++还在吗?
百年之后,C++还在吗?








扫一扫关注异步图书










聊聊图书背后的故事

戳阅读原文购书

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《百年之后,C++还在吗?》的版权归原作者「异步图书」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注异步图书微信公众号

异步图书微信公众号:ptpressitbooks

异步图书

手机扫描上方二维码即可关注异步图书微信公众号

异步图书最新文章

精品公众号随机推荐