《C++ Primer Plus》《1、预备知识》

文章目录

  • 0、前言
  • 1、C++简介
  • 2、C++简史
    • 2.1C语言
    • 2.2C语言编程原理
    • 2.3面向对象编程
    • 2.4C++和泛型编程
    • 2.5C++的起源
  • 3、可移植性和标准
    • 3.1C++的发展
    • 3.2遵循的C++标准
  • 4、程序创建的技巧
    • 4.1源代码创建
    • 4.2编译和链接
  • 5、总结
  • 6、参考

0、前言

本人目前刚入职,之前一直学的C语言,现在需要学习C++。用输出倒逼输入,我会在CSDN上更新自己的学习心得与体会,督促自己对C++进行学习。
首先,要明确,是先有C语言,然后再有C++语言。C++可以看作是C语言的超集;C++是为了应对复杂程度不断提高的现代编程任务而进行设计的。与C语言面向过程编程不同的是C++是面向对象编程的。

1、C++简介

C++融合三种不同的编程方式:1)C语言代表的过程性编程;2)面向对象的语言;3)泛型编程;谈一下我个人的理解,面向过程性编程,思维上偏向机器思维,从程序实现的角度进行编程,注重功能的“机器方法“上的实现。面向过程性编程,思维上更人性化一些,从解决问题的角度进行编程,更便于理解。所谓的“泛型编程”,抛弃对输入格式上的限制,突出了对“处理方法”的强调,使得解决问题的灵活性得到加强。

2、C++简史

但凡学习一个语言,总得介绍一下他的历史。就像我刚入职,高低得整个自我介绍,不然以后工作咋展开啊。会用的觉得这玩意鸡肋,没啥用,但是吧,先给结果,再解释理由。做语言开发,语言会不断发展迭代,知晓了他的过去,现在,才可以预判他未来的发展。计算机语言的发展经历了三个阶段1)机器语言,2)汇编语言,3)高级语言,C++就属于高级语言的范畴。
机器语言是最方便被计算机接受并执行的语言,简而言之只有0,1;电子管只有通或者不通;那时候的电子管数字计算机也很庞大,可以说是又笨又重,听说程序输入还要打卡纸,出现问题的“bug”,是物理世界的bug。
接着出现了汇编语言,汇编语言用一些英文缩写单词来标识一些操作,例如“ADD”表示运算符“+”,同时也出现了一些助记符。汇编语言本质上是直接对计算机硬件(寄存器)进行操作的语言。汇编语言相对于机器语言,克服了难编,难懂,难记的问题,但同样存在重复造轮子的过程,区别是,造重复的轮子的效率有所提高。一大段汇编语言,这个项目能干,但是换到其他项目,一切都得推倒重来。
不论是机器语言还是汇编语言,都是对计算机语言直接进行操作的语言,过分依赖于计算器硬件,而不是编程本身。懒人造福世界,高级语言应运而生。高级语言例如C,C++,Java,Python等。他们在一定程度摆脱了“重复造轮”,提高了代码的复用率。同时,无论是何种计算机,只要配备上相应的编译或者解释程序,则高级语言编写的程序便可以通用。

2.1C语言

要说C++,就不得不谈到C语言,C语言首先定个性,他是系统编程语言。20世纪70年代,贝尔实验室Dennis Ritchie(C语言之父,UNIX之父)致力于开发UNIX操作系统,这时候它需要一种语言能快速,有效地控制计算机硬件(非汇编)。
之前说过,汇编语言是直接对硬件进行操作的语言,移植性较差,换个硬件,硬件上的寄存器内存单元位置都换了,一切都得重新开始,这谁受得了。偏偏UNIX操作系统是为了在不同计算机上工作而设计的,这意味着,必须消除硬件上的差异性,有点秦始皇统一度量衡那味。这个Ritchie就希望有这么个语言,既能访问硬件,又能消除计算机硬件上的差异性。此时,天空一声巨响,C语言闪亮登场!

2.2C语言编程原理

无论是哪种语言,总要处理两个概念,数据和算法;数据是程序使用和将要处理的信息,算法是程序使用的方法;打个比方,数据是米,算法就是巧妇烹饪的手法,两者缺一不可。C语言是过程性语言,这意味着他强调编程的算法方面,

2.3面向对象编程

面向对象程序设计(Object Oriented Programming)简称OOP,他是应对大型程序提出来的概念,过程性编程是使问题满足语言的过程性行为,而OOP试图让语言来满足问题的要求,其核心理念是设计与问题本质相对应的数据格式。
因此出现了类,类是一种规范,描述了新型数据格式。通常情况下,类规定了可以使用哪些数据,以及可以对这些数据执行什么样的操作。这就从解决问题的思维来处理程序。
除了将数据和方法合并为类定义,OOP创建了可重用的代码,极大提高了效率。信息隐藏保护了数据;多态为运算符和函数创建多个定义,通过上下文确定使用哪个定义;继承使得在旧类的基础上,派生出新类等。

2.4C++和泛型编程

泛型编程是C++的一大特色,所谓泛型,指的是创建独立于类型的代码,不拘泥于数据类型的限制。之前讲过所谓函数,对输入的形参做一定的说明,只能处理这个类型的输入,而泛型完全不受限于此,他对语言进行了扩展,并能用于处理各种实际类型。

2.5C++的起源

与C一样,C++起源于贝尔实验室,是因为开发者不满足于机器语言,汇编语言,甚至C语言而开发的语言。C++之父更关注C++的实用性,而不是编程原理及其风格,在C语言简洁的基础上,加入了OOP特性和对C的泛型编程支持。C++来自于C的自增运算符,意味着比C更进一步,是C的超集。
OOP部分赋予了C++语言将问题所涉及的概念联系起来的能力,C部分予了C++语言联系硬件的能力,这种结合成就了C++的广泛传播。

《C++ Primer Plus》《1、预备知识》_第1张图片
C++的二重特性

3、可移植性和标准

所谓的可移植性,有两个方面需要考虑,一个是硬件上的差异,一个是语言上的差异。为了增强程序语言的可移植性,制定了一个国际标准ISO/IEC 14882:1998,并在1998年获得了ISO、IEC、ANSI的批准,通常人们叫作C++98;2003年,发布了C++标准第二版(ISO/IEC 14882:2003),这个版本是技术性的修订,但没有改变语言特性,所以人们还是用C++98表示C++98/C++2003;
在2011年8月批准了新的标准:ISO/IEC 14882:2011,简称C++11新增了众多特性,消除了不一致性,让C++学习起来更加容易。

3.1C++的发展

C++有两个标准,
1)Strousstrup编写的《The Programming Language》是最初事实上的标准;
2)Ellis和Strousstrup编写的《The Annotated C++ Reference Manual》是另一个事实上的标准,C++98标准新增了大量特性,C++11对旧标准做了大量补充。

3.2遵循的C++标准

C++98。

4、程序创建的技巧

编写一个C++程序,并使其运行,具体步骤如下:

  • 1)使用文本编辑器编写程序;
  • 2)编译源代码,将源代码翻译为主机使用的机器语言;
  • 3)将目标代码与其他代码链接起来;

《C++ Primer Plus》《1、预备知识》_第2张图片

4.1源代码创建

IDE(integrated development environments)集成开发环境,让使用者能够在主程序中管理程序开发的所有步骤。创建源文件,需要使用正确的后缀,将文件标识为C++文件。例如:Hello.cpp。

4.2编译和链接

在初始时,Stroustrup为了实现C++,使用了一个C++到C的编译器程序,而不是开发直接C++到目标代码的编译器,我个人觉得,这是一个过渡性的开发。
叫作cfornt(c from end),后来随着C++的普及,便出现了从C++源代码直接生成目标代码的编译器。
1)Windows编译和链接
在Windows上创建好项目后,需要对程序进行编译和链接,IDE提供了多种选项,下面对这些选项进行一定的解释。

  • a.Compile 对当前文件中的代码进行编译;
  • b.Build和Make意味着编译项目中所有源代码文件的代码,其中一个文件被修改,则只重新编译该文件;
  • c.Build All 意味重新编译所有源文件代码;
  • d.Link意味着将编译后的源代码与所需的库代码组合起来;
  • e.Run与Execute意味着运行程序,运行run,会将之前的操作都执行一遍;
  • f.Debug表示以“步进”方式执行程序。

5、总结

以后计算机的发展的方向:计算机的功能越来越强大,计算机的程序越来越复杂;为了应对这些变化,计算机语言也会有相应的改进:C语言新增控制结构,函数特性,C++增加了面向对象编程和泛型编程的支持,这样有助于提高模块化和创建可重用的代码,从而节省时间,提升程序的可靠性。

6、参考

《C++ Primer Plus》

你可能感兴趣的:(#,《C++,Primer,Plus》,c++,开发语言)