计算机本质上是数字电路组成的计算机器,只有电信号才有可能驱动电路工作,那为什么程序员编写的代码可以控制计算机工作呢?代码只是一串字符而已。
在回答这个问题前,先想一下,程序员编程时,是否要严格遵守某种编程语言的语法呢?答案是肯定的,每种高级语言,无论是C语言,还是java、python、php,都是有自己的关键字和语法结构的。这些关键字是设计编程语言时约定的,也就是说,程序员编写的代码是按照某种约定规则进行的。这就可以回答上面的问题了,假设一组数字电信号可以完成“蜂鸣”动作,既然它是数字信号,当然可以用数字表示它,下次程序员输入这组“数字”,就相当于输入了让计算机做“蜂鸣”动作的数字电信号,这就是机器码编程
。
举个例子,假设有以下 5 盏灯。灯由开关控制着,只有开关两种状态。我们约定 1 表示开灯,0 表示关灯。那么,当电灯管理员得到“01000”这样一组数字时,他就知道了应该开第二盏灯,其他的关掉。
机器码编程
是不方便的,程序员想要完成某种计算功能,往往需要从非常庞大的指令表查找到相应的数字功能码。因此,后来人们设计了很多助记符,用有意义的单词来表示机器指令
,这就形成了汇编语言
。
就像上面的例子中,我们约定用 set_light_2
来表示 01000
,那么,下次我告诉电灯管理员:“set_light_2”,他就明白了应该怎样开关灯。
顺着这样的思路,更复杂的符号和结构被设计成有意义的单词,高级语言如C语言,C++语言出现了。所以,说代码控制计算机不是特别恰当,因为代码只是我们约定的与电信号对应的符号而已。事实上,计算机并不能直接执行代码,代码要首先翻译为计算机认识的机器码(即数字信号序列),这一过程就叫做编译
。
当然,现在还有一些脚本语言,比如 python,它是依赖解释器逐行执行的。不过归根结底,代码要首先翻译为计算机认识的机器码(即数字信号序列)。