【知乎转载】一文读懂机器语言、汇编语言和高级语言三者之间的区别与联系

转载自 淮河两岸一文读懂机器语言、汇编语言和高级语言三者之间的区别与联系

1.前言


交流需要用到语言。人与人的交流使用的是汉语或者英语等,而人与计算机之间的交流则需要使用特定的语言,那就是编程语言。如果人们想让计算机做一些事情,就需要使用计算机能听懂的语言也就是编程语言,去告诉它做什么和怎么做。

编程语言按照层级可以分为机器语言、汇编语言和高级语言。

2.机器语言


机器语言是计算机使用的语言,它是一串二进制数字,计算机能够直接识别并读懂它,也就是说计算机是通过二进制来交流的。在计算机中,所有的程序和数据都是以二进制的形式存储的,我们通过计算机所看到的文字、图像、视频等信息在其内部都是一串串的二进制数字。如果我们想和计算机交流,那么就需要使用机器语言。

在早期的计算机编程中,人们确实使用的是一串很长的二进制代码来与计算机交流的,当时使用穿孔纸带的方式将二进制输入到计算机中,计算机通过识别孔洞的有无来判断是0还是1,其中,有孔代表1,无孔代表0,一段简单的程序往往需要很长的一段纸带。

举个例子,比如我们想让计算机帮我们计算1+2=?

可能需要编写以下代码:

010 0001 0010

这里的0001是十进制数字1的二进制表示,0010是十进制数字2的二进制表示。010代表的意思就是让计算机将这两个数相加。当然实际的二进制代码肯定与这个例子中的代码不同,这里仅方便讲解使用。

我们可以看到,使用这种编程方式无疑是一件费时又费力的事情。

因此,人们想到能不能编写出一个程序,它能像一位翻译官一样,将我们的语言翻译成机器语言。

3.汇编语言


最开始,人们创造出了汇编语言,它通过一系列有限数量的英文字母和数字组成一个个指令,例如,用ADD表示加,SUB表示减等等,接着上一个例子,如果我们想计算1+2=?,就可以写为:

ADD A,B

这里的ADD代表前面的010,A代表0001,B代表0010,通过人们事先编写好的程序,将这段汇编语言翻译成计算机能够听得懂的语言,也就是机器语言,这段程序我们称为汇编程序。

汇编程序输入的是以汇编语言编写的源程序,输出的是用机器语言表示的目标程序。

汇编语言具有如下优点:

1.能够很轻松读取存储器状态以及硬件I/O接口情况

2.编写的代码因为少了很多编译的环节,可以能够准确的被执行

3.作为一种低级语言,可扩展性很高

虽然汇编语言相比于机器语言在理解和使用上更加便捷易懂,但通过汇编语言编程仍然会出现代码过长,编写困难,出现bug难以修复等问题,并且由于不同计算机的指令集体系结构不同,很有可能出现在这一台计算机上编写的代码,在另一台计算机上无法运行的情况出现。

4.高级语言


因此,人们发明了更加接近于人类自然语言的编程语言,用人们更容易理解的方式来编写程序,也就是我们常说的高级语言。

同样的,我们编写的高级语言要想执行也需要相应的翻译官来帮我们翻译成机器语言,这样的程序就是我们常说的编译器,即编译程序。

在现代,绝大多数的程序都是通过高级语言来编写的,我们常用的高级语言包括C语言、Python、Java等。

在使用高级语言编程的时候,接着上面的例子,我们可以将1+2=?直接写成

Int a;

a=1+2;

这不仅贴合人们日常使用的语言习惯,并且是十分容易理解的一段代码。

高级语言的发明让计算机编程成为更多人能够掌握并使用的一项技能,因为它相比于汇编语言更接近于我们日常使用的语言,人们不用对计算机内部的寄存器等硬件组成作更深入的理解就可以直接上手编程,大大降低了编程的入门门槛。

5.总结


综上所述,机器语言是一串二进制代码,是计算机能听懂的语言;汇编语言是一系列有限数量的英文字母和数字组成一个个指令,是基于计算机的硬件组成来编程的语言;高级语言则更贴近于人类的自然语言,人们无需关注计算机的内部硬件就可以编写出想要的程序,是基于人类语言习惯来编程的语言。

2 个赞