您的位置:首页 > 编程语言 > C语言/C++

C++学习笔记之(一)

2014-06-12 12:20 211 查看
从今天开始学习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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息