什么是编程语言
了解了程序的概念,下面我们来看看程序是怎样编写出来的。
在上面的例子中,乐谱是音乐家创作出来的,音乐家就好比编程人员。要创作一首乐谱,首先他头脑里必须有想法,然后通过音符把头脑中的想法表达出来。“头脑中的想法”就相当于解决问题的思路和步骤,在计算机领域我们把它叫做“算法”。音符是表达音乐家思维的载体,在计算机领域我们把它叫做“编程语言”。概括起来就是:编写程序首先需要有解决问题的思路——即算法,然后使用特定的符号——编程语言将算法描述出来。这里对算法先不作详细讨论,主要看看编程语言的概念。
乐谱是用音乐符号来呈现的,菜谱是用文字(自然语言)来呈现的,拳谱是用圆圈和箭头之类的图画来呈现的。乐符、文字、图画是他们各自的“编程语言”,而钢琴家、厨师、拳师则好比是计算机,他们按照乐谱、菜谱、拳谱上的指令执行相应的操作,这个过程就好比是程序执行的过程。这里需要注意的是,如果把菜谱拿给钢琴家,他肯定无法弹奏出美妙的音乐。也就是说,输入给钢琴家的指令必须是钢琴家能够理解得了的。对于计算机来说,情况差不多。每台计算机在被生产出来的时候,它能够理解并执行的指令随之也确定了。这些指令是由二进制的0、1组成的。例如,使用了某种类型CPU平台的计算机中求一个变量与一个数的和的指令长这样:
一条加法机器码指令,功能是把一个变量的值加上350,结果保存在另一变量中
这是单独一条指令,多条指令组合在一起就是一个完整的程序了。下面给出一个二进制程序片段让大家感受下(中文部分是对指令的解释,不是程序内容):
0000,0000,000000010000 表示 从16号存储器中将内容读入到A寄存器 0000,0001,000000000001 表示 从1号存储器中将内容读入到B寄存器, 0001,0000,000000010000 表示 将A寄存器的数据保存到16号寄存器 0001,0001,000000000001 表示 将B寄存器的数据保存到1号寄存器
这种直接用0、1指令来编写的程序叫做机器语言程序。很显然使用机器语言编写程序是非常困难、繁琐的一件工作,需要耗费大量的时间。程序阅读、维护起来也很吃力。于是人们想到了一种让编程变得简单一些的方案,这种方案的思路大致可以概括成:
这种方法就是制定一套容易理解记忆的助记符号(包括其使用规则)来代替机器语言指令(以及指令操作规则),然后再开发一套翻译工具(软件),翻译工具负责把助记符号编写的指令翻译成机器语言指令。使用助记符编写的程序经翻译后得到机器语言程序,输入给计算机就可以直接运行了。例如上面的加法指令,可以用汇编语言、C语言等不同形式的助记符来编写指令,然后编译得到CPU能够执行的机器指令:
使用这种方案的好处:
- 助记符号比0、1串更容易理解记忆
- 程序员只需要掌握助记符号的用法就可以方便、快速地编写程序,翻译的事情交给翻译工具
- 翻译工具由专门人员编写,一种助记符翻译工具可给所有使用这种助记符的程序员使用。
可以看出来,助记符号相当于一种特殊的语言,是我们人类和计算机沟通的桥梁,我们把助记符叫做编程语言,如汇编语言、C语言、Java语言等。像C、Java这些语言非常接近人类自然语言,所以把他们称之为高级语言,其它不太接近自然语言的就叫低级语言。