第一部分. 基本概念 首先在这里介绍一些非常基本的内容,注意,是非常非常基本的,如果你希望对语言有所理解,我推荐你仔细理解这段内容。 一、编译器与链接器 电脑如果将它划分层次体系,分为三层,分别是硬件层、系统层、软件层。这三个层各有各的优点。 硬件层,代表语言为汇编语言和C,举个例子,你的机器很多硬件(显卡、网卡、USB等)都需要驱动程序,而驱动程序是什么呢,就是指导这些硬件,如何工作的程序,这决定了驱动程序必须是速度最优、效能最优的,因此采用汇编语言或者C。 系统层,例如windows系统、linux系统(严格意义上linux不是系统,有兴趣自行百度)、mac系统等,这些系统提供了平台,可以让硬件层和软件层很好的连接起来,比如QQ就有windows版本、linux版本、mac版本等。 软件层,这应该是大家接触最多的了,QQ、360、office、浏览器、输入法还有各种游戏,这些都是软件,他们大多被设计成可以在特定的系统层上运行,仅有一少部分可以在多个不同的系统上运行,这是软件层。 电脑有几个非常重要的部分:CPU、内存(注:这不是全部),。其中CPU大家应该都知道,它负责计算(这里就不讨论多线程编程了,可能涉及数据竞争的代码向来让人郁闷)。而内存我们来举个例子,你在电脑里打开了计算器,输入了5,然后按下乘号,输入7,再按下等于号,就可以得到结果35,在这过程中,需要一个地方存放5和7,以便CPU计算结果,这个地方就是内存(注:真正的处理要复杂得多,CPU内部也有一级、二级、三级缓存,这些缓存的处理速度相比较内存要快得多,有兴趣的可以自行百度)。 了解这个后,我们来看语言方面的知识。这里依旧只谈特别基础的。你写好了代码(扩展名可以是.c, .cpp, .cxx 等等),现在要把它弄成可执行程序(.exe, .out),应该怎么做呢?写过代码的同学都知道,要先编译,然后运行。但是却很少有人去探究这是为什么。 C primer plus 以及 C++ primer plus 都对这个有解释,但这个解释过于术语化,我用另外一种方式来解释这个吧。你写的代码是软件的最初始的形式,它比较笨,不知道系统层是什么样子的;然后编译器很厉害啊,编译器就知道系统层是啥样,所以编译器把代码变成了系统层的语言;然后软件层又不满意了,说你这写的是啥东西,我看都看不懂的;然后系统层没办法,就只好利用链接器又把这些系统层的语言变成了软件层的语言,也就是windows上的exe格式文件或者linux上的out文件。 然后说说调试器。只要一写程序就都知道,刚开始写的时候,真是痛苦,错误满天飞,而调试器就是专门用来对程序进行调试的工具。不过,虽然话是这样说的,在刚开始入门的时候就不要尝试用调试器了,因为会疯掉!不仅多了大量术语,而且它对你前期所写的那些小程序没有任何用处!不过大家还是应该知道调试器的概念。 这样理解之后,大家对编译器还有链接器的工作还有调试器就有了了解。这也就是大家所能做到的第一步,了解这些之后,我们就可以正式开始入门了!