你好,C++(1)C++是什么?C++的“前世今生”
转载:你好,C++(1)C++是什么?C++的“前世今生” - 知乎 (zhihu.com)
The world is built on C++.
——Herb Sutter
the chairman of the ISO C++ standards committee
and chief native languages architect at Microsoft
前传 C++世界地图
如果我们要到某个陌生的地方去旅行,我们往往有很多疑问:这个地方有什么好玩的?在哪儿可以吃饭?在哪儿又可以住店?这时我 们只需要一张内容详尽的旅行地图就可以解决这些问题。同样地,对于即将进入C++世界的我们,心中同样也有着很多疑问:C++是什么?C++是怎么来的? 它能做什么?而我又如何才能完成我的第一个C++程序?面对这些问题,我们所需要的同样是一张C++世界地图。它可以解答我们的这些问题,让我们清晰地认 识C++世界。同时,我们还可以通过这张C++世界地图更多地了解C++世界:有哪些好玩的地方,有什么有趣的故事,有哪些有用的知识与经验,又有什么危 险而需要注意的陷阱。这张C++世界地图,将带领我们畅游整个C++世界。
还等什么?让我们带上它马上出发吧!
1.1 C++是什么
C++是什么?
这几乎是每个第一次来到C++世界的旅行者都会问的第一个问题。在百科全书上,它的解释是“C++是一种静态数据类型检查 的、支持多种编程范式(面向过程与面向对象等)的通用程序设计语言”。虽然这里的静态数据类型、面向对象等修饰语我们还看不太懂,但这里我们至少知道了一 点——C++是一种语言,更确切地说,是一种用于程序设计的语言。就像现实世界中的自然语言是用来表达我们的思想一样,C++作为一门程序设计语言,同样 也是用来表达我们的思想的,只不过接受它的对象是计算机,所以它有着不同的语法和表达方式。只要我们学会了英语,就可以用英语跟老外交流。同样地,只要我 们学会了C++,也同样可以用C++跟计算机交流,让计算机去帮助我们做一些事情。
既然C++是一门语言,那么它也就必然有着自己的语法规则,也有自己的基本词汇和句型,也可以分成不同的段落和篇章等等。用自然语言描述一个事物,是作文,而用程序设计语言描述一个事物,就是编程。总之,我们可以把C++当作我们的第二外语来学习和运用。
知道更多:编程是怎么回事?
语言,是用来描述和表达现实世界的,C++作为一门编程语言也不例外。作为自然语言,为了描述现实世界中的事物,我们需要一些名词(陈老师、曾学 生)。这些名词在C++中就是变量(teChen、stZeng);同时这些名词都有自己的种类(老师、学生),表现在C++中就是变量的数据类型 (Teacher、Student);为了表达事物之间的关系,我们需要一些动词(指导),然后用这些动词将各个事物连缀成句子(老师指导学生)。这些动 词表现在C++中就是函数(Guide()),而由这些动词连缀而成的句子在C++中就成了表达式 (huTeacher.Guide(huStudent););将多个句子按照一定的逻辑关系组合起来,就可以形成一篇文章。同样,在C++中利用一定的 逻辑控制结构将多个表达式组合起来就形成了程序。
Teacher teChen; // 陈老师
Student stZeng; // 曾学生
teChen.Guide(stZeng); // 老师指导学生
// 用if条件控制结构组织表达式
if(stZeng.m_nScore >= 60) // 如果学生的成绩大于或等于60
{
stZeng.m_bPass = true; // 学生及格
}
通过C++编程语言与自然语言的对比,我们可以轻松地理解C++程序的含义。编程,就是将描述现实世界的自然语言翻译成C++语言的过程,如此而 已。而这也提示我们,在编写程序之前,不妨先把程序所要描述的事物(通常是某个数据处理过程)先用自然语言把它描述一遍,然后再翻译成对应的C++编程语 言,就得到了最后的C++程序。
1.2 C++的“前世今生”
读史可以使人明智。
C++作为一门高级程序设计语言,可说是历史悠久,算得上是程序设计语言中的“老革命”了。了解C++的发展历史,可以加深我们对这门语言的认识,了解C++的本质内涵,理解C++的文化,从而可以更好地学习和掌握这门语言。
传说,很久很久以前……
1.2.1 从B到C
1967年,著名的计算机科学家丹尼斯·里奇(Dennis Ritchie)进入美国AT&T的贝尔实验室工作。一开始,里奇和他的同事肯·汤普森(Ken Thompson)开始研究DEC PDP-7这种早期计算机,但是他们发现在这个机器上写程序很困难,只能使用繁琐的汇编语言编程。所谓的汇编语言(Assembly Language),是一种比较接近计算机底层的低级程序设计语言。在汇编语言中,它用助记符(MOV、PUSH、POP等)代替机器语言的操作码,用地 址符号或者标号代替机器语言的地址码。在执行的时候,用汇编语言编写的程序并不能被计算机直接识别和执行,我们还需要通过一个叫汇编程序的工具将汇编语言 重新翻译成机器语言,然后交由计算机执行。虽然,汇编语言借助助记符和地址符号在一定程度上降低了编写程序的难度,但是因为它接近计算机底层,因而它所编 写出来的程序依然难以阅读和理解,程序的开发效率非常低下。
为了解决这个难题,汤普森设计了一种高级程序语言来代替汇编语言,并将其命名为B语言。但是由于B语言本身设计的缺陷,使得 汤普森在内存的限制面前一筹莫展。到了1973年,里奇对B语言进行了改良,从而赋予了这门新语言强有力的系统控制能力,同时,新语言也做到了简洁而高 效。里奇把它命名为C语言,意为B语言的下一代程序设计语言。
知道更多:B语言又是从哪里来的?
C语言来自B语言,那么B语言是不是来自A语言呢?B语言之前并不存在A语言,之所以取名为B语言,是作者为了
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!