C++学习笔记之(一)
admin
2023-02-03 20:44:09
0

从今天开始学习C++,掌握一门编程语言,不管对于后续的语言学习,还是以后工作来说,都受益良多,所以,刻苦钻研,踏实进取。日后必有做为。


Key Point 1:C++的产生

(一)“C语言来源”

    C++来源于C,是C的超集。和C有着很深的渊源,所以介绍C++之前,先来介绍C.

    

    background:早期的程学设计语言,一种机器语言,(Machine Language),一种汇编语言(Assembly Language)。尽管这两种语言具有程序指令可以访问底层硬件,执行效率高的优点。但是它们从可读性、可移植性以及对于问题的描述性能上来说,就远不够了。而且,编码对于程序员来说简直就是中折磨。


    19世纪70年代,“C语言之父”Dennis Richite在贝尔实验室致力于开发Unix OS(Unix的产生这里不做描述)。为此,Ritchie需要一种语言,他必须简洁、高效,能够生成简洁、快速的程序,并能有效地控制硬件。


    传统上,程序员使用汇编语言来满足这些需求,汇编语言依赖于计算机的内部机器语言。But,汇编语言是low-level语言,就是说,他针对特定的计算机处理器。因此,要将汇编语言移植到另一台计算机上,必须使用不同的汇编语言重新编写程序。这就像是,每次购买新车时,都发现设计人员改变了控制系统的位置和功能,客户不得不重新学习驾驶这辆新车。不过,Unix是为在不同的计算机(或平台)上工作而设计的,这就意味着它是一种高级语言。高级语言致力于解决问题,而不是针对特定的硬件。

    

    一种被称为编译器的特殊程序将高级语言翻译成特定计算机的内部语言。这样,就可以通过对每个平台使用不同的编译器来在不同的平台上使用同一个高级程序语言了。


    Ritchie希望能有一种语言,可以既能将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性融合在一起,于是他在旧语言的基础上开发了C语言。


(二)“C++产生”

    C语言的出现取得了长足的发展,从Unix OS中便可以看出。但是随着技术的发展,他也遇到了瓶颈。(看来IT技术出现问题本来就是一种必然的情况,只是这种变化来的快了点罢了)C语言的风格决定了它的缺点。


    一般来说,计算机要处理两个概念:数据和算法。数据是程序使用和处理的信息,而算法是程序使用的方法。C语言是面向过程的语言(procedural language),它强调的是编程的算法方面。从概念上说,过程化编程语言首先要确定计算机采取的操作,然后使用编程语言来实现这些操作。程序命令计算机按照一系列流程生成特定的结果,就像菜谱制定了制作蛋糕的厨师应该遵循的一系列步骤一样。

但随着程序规模的扩大,早期的程序语言(FORTRAN & BASIC)都会遇到组织方面的问题。执行路径很混乱,可读性几乎不可能,而且修改起来一场麻烦。为解决这个问题,计算机科学家开发了一种更有序的编程方法,结构化编程。它将分支限制为一小组行为良好的结构(C中for loop,while loop,do while loop,if else sentence)。另一个原则是采用自顶向下的设计(top-down)。将问题分解为若干的子问题或者子模块,便于管理。


    但是编写大型程序时,仍然面临挑战。为应付这种挑战,OOP提供了一种方法。与过程性编程强调算法不同的是,OOP强调的是数据。OOP让语言来满足问题的要求,而不是过程性编程的那种使问题满足语言的过程性方法。OOP的理念还设计与问题的本质特性相对性的数据格式。


    在C++中,类是一种规范,它描述了新型数据格式,对象就是根据这种规范构造的特定数据结构。类准确表示了程序要处理的东西。从低级组织(类)到高级组织(程序)的处理过程叫做自下而上(bottom-up)的编程。


    基于此,C++产生于20世纪80年代的贝尔实验室,它的开发者是Bjarne Stroustrup("C++之父")。后续的标准化工作为C++的发展和应用范围提供了莫大的帮助。现实也证明了C++是一种功能强大的编程语言。(随着学习的深入逐渐体会它的强大之处)


注:1)Unix OS 日后研究

    2)top-down vs bottom-up

相关内容

热门资讯

急派超百名军医,美国准备地面战... 在加大空袭力度的同时,美军持续向中东增派战机、特种作战力量和后勤保障人员。与此同时,美军高层承认,单...
唐驳虎丨王虹、邓煜同获菲尔兹奖... 作者丨唐驳虎核心提要1. 本届国际数学家大会上,北大数院2007级校友王虹、邓煜同获菲尔兹奖,成为首...
菲尔兹奖获得者邓煜:爬山时破解... 作者:周盛楠 王僖妍·邓煜。(受访者供图)2026年7月23日,注定是改写中国数学历史的一天。邓煜、...
中国籍数学家王虹获菲尔兹奖 当地时间7月23日上午,2026年国际数学家大会在美国费城开幕,现场揭晓2026年菲尔兹奖得主。中国...
首次突破 屡创新高!一组数字解... 2026年上半年我国GDP同比增长4.7%经济韧性持续彰显在已经出炉的经济数据中更值得关注的还有“含...
男主播卖惨,66岁患癌老太花光... 今年3月,沈阳66岁的张阿姨在家养病期间刷视频时,被一名IP属地为湖北的男主播吸引。该主播主打演唱经...
松下智能马桶盖不喷水怎么回事 松下智能马桶盖不喷水怎么回事1、有时候新买的马桶在安装的时候工人有时候会不会告诉你需要开进水阀的,智...
松下智能马桶盖不喷水 1、有时候新买的马桶在安装的时候工人有时候会不会告诉你需要开进水阀的,智能马桶都是带有进水阀的,如果...
智能马桶盖不喷水故障维修方法 如果是出水口不喷水,先检查下是不是里面没水,或者水管出问题了,水管故障问题需找专业的维修师傅维修;若...
马桶水箱盖子碎了能换么 不能,建议更换整个水箱。方法:先检查排污管及产品内通道是否有异物;确定固定蹲便的安装位置、高度以及将...