1.啥叫编程
编程乃编写程序的简称,所以要想知道啥叫编程,首先要清楚什么是程序(Program)。
普及一点计算机小知识:从根本上说,计算机是由数字电路组成的运算机器,处理的数字也仅限于0和1组成的数字串,也就是二进制范围内的运算,至于运算的具体细节在这里就不细说了。
回到程序上来,什么是程序呢?
程序由一系列指令(Instruction)组成,指令是指示计算机做某种运算的命令。
程序就是通过一系列指令的集合,告诉计算机应如何完成一个计算任务。这里的计算可以是数学运算,比如解方程,也可以是符号运算,比如查找和替换文档中的某个单词,甚至可以处理声音和图像。
根据前面提及的计算机小知识,相信大家也能得出结论:除了数学运算,程序之所以能做符号运算,声音和图像处理,是因为这些内容在计算机内部也是用数字表示的。这些数字经过专门的硬件设备转换成我们的所见所闻。(如显卡、声卡等硬件设备)
到这里,我们大体上就知道啥叫编程了。编程就是编写能够让计算机完成某项任务而执行的程序。
2.用啥编程
人类语言的产生是为了人与人之间的沟通,计算机编程语言的产生则是为了人与计算机之间的沟通,我们正是用计算机编程语言进行编程。
与人类语言一样,计算机编程语言也是逐步发展丰富的。那就先从最原始的编程语言,即机器语言开始说起。
所谓机器语言,通俗讲就是计算机能够直接理解并执行的语言,也就是由0,1组合串构成的语言(原因可从前文获知^_^)。这些0,1的组合并不是任意的,而是受到限制的。那具体是什么限制呢?受指令集限制。
所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。换言之,不同的CPU它的指令集是有差别的。
我们在用机器语言编写程序时,只能用它完成当前指令集的描述和组合,超出这个范围CPU自然就无法识别程序意图了。
现在我们下这样两个结论:a.机器语言写出来的程序满篇都是0和1;b.在张三型号CPU环境下写的机器语言代码拿到李四型号CPU的计算机上去,多半是无法运行的。(指令集不同所致)
由于原因a,机器语言太难写难记,更难改----想象一下一万行0,1组成的代码里有某个1错写成0了,你找找试试。于是发展出了汇编语言,它给0,1组合而成的指令起了好记的名字,如指令“1010000100011100”(十六进制表示)起名叫mov,“100000111100000000001”起名叫add。这样一来,指令就好记了也好用好改了。不过问题是,计算机无法直接读懂了(它可不知道啥叫mov,add)。怎么办?想想你如果想跟火星人沟通怎么办?找个懂火星语的好翻译呗。这里也是,把汇编语言翻译成机器语言即可,这个翻译工具就叫汇编器。
汇编语言跟机器语言的关系决定了它也具有b的特征,此特征在计算机界有个术语叫“可移植性差”。谁都想为了解决某个难题写的程序拷贝到其他的计算机上也能运行。于是计算机编程又进一步发展,诞生了高级编程语言,C语言就是其中灰常灰常经典的一个。
高级编程语言克服了a,b两点,但由于将高级语言翻译成机器代码的过程很复杂,耗时多,所以执行效率高级语言比不上前面的两种低级语言。不过由高级语言带来的便利那可是数不胜数的,so,由此计算机编程开始遍地开花,进入寻常百姓家。
至于高级语言翻译成机器代码的过程这里略过,只提两个翻译有关的名词,编译和解释,具体介绍诸君可以看维基,阅百度,找Google。
3.程序好编吗
简单的好编复杂的难(这不废话吗)。编程能力是日积月累,不断提高的一个过程。
计算机指令通常只包括以下5类:
输入(Input)类:从键盘、文件或者其它设备获取数据。
输出(Output)类:把数据显示到屏幕,或者存入一个文件,或者发送到其它设备。
基本运算类:执行最基本的数学运算(加减乘除)和数据存取。
测试和分支类:测试某个条件,然后根据不同的测试结果执行不同的后续指令。
循环类:重复执行一系列操作。
我们编程就是用对应的五类语句组合起来去解决问题,而组合的思路我们称为算法。
C语言中对应的这五类语句,以及应试类程序设计所涉及的算法,后面会逐一介绍。