在上篇文章中,我谈了些个人学习python的一些方法的手段。有的小伙伴就会问了,你说的东西到的确挺多的,但是我现在其实连计算机语言究竟是什么东西都不知道。所以今天我就和大家分享一下我所理解的计算机语言。
在计算机发展的短短几十年的时间里面,计算语言经历了三次具有跨域性质的转变,同时也诞生了三代不同的计算机语言,分别是:
机器语言汇编语言高级语言机器语言:
计算机的硬件作为一种电路元件,它的输出和输入只能是有电或者没电,也就是所说的高电平和低电平,科学家通过1和0分表代表高电平和低电平,这也是计算机采用二进制的一个重要的原因。在计算机发明的初期人们为了去控制计算机完成自己的任务或者项目,只能去编写“0”、“1”这样的二进制数字串去控制电脑,其实就是控制计算机硬件的高低电平或通路开路,这种语言就是机器语言。它的命令都是1和0的组成的数字集,但是由于其太过繁琐,记忆太过麻烦,对于代码的维护也很不友好,所以科学家就在其基础上进行优化,从而诞生的汇编语言。
汇编语言:
汇编语言其实就是在机器语言的基础上用一些容易理解和记忆的字母,单词来代替一个特定的指令,从而减轻代码的书写难度,提高编程的效率,但是本质上来说汇编语言仍然是面向机器的一种语言,其书写的复杂程度仍然较高,同时和机器语言一样,它只针对特定的底层,不同的系统实现相同的操作其指令不一定相同,因此其可移植性较差。所以随着计算机的不断发展,代码的书写量也不断增加,汇编语言的弊端也逐渐显示出来,为了解决这种困境,高级语言便开始发展起来了。
高级语言:
高级语言是一种统称,它包含了我们包括很多编程语言,如流行的java,c,c++,C#,pascal,python等等,它基本脱离了计算机的硬件,不需要我们去记忆复杂的机器指令,同时它的书写也与人的思维模式相近,不过由于我们所写的代码不能直接在计算机上运行,需要通过解释器或者编译器将其翻译成二进制代码,因此其运算速度会叫机器语言和汇编语言慢。
也许你们看完上述内容还是云里雾里的,没关系,因为上面的内容都是我通过查资料,用相对比较专业的术语来解释计算机语言,接下来我会用一些通俗易懂的方式加上我自己的一些“艺术加工”来解释计算机语言。也就是说一下内容纯属个人扯淡,如有错误,还请大家指出和谅解。
计算机语言可以归类为语言的一种,就像英语,汉语一样,是用来沟通,交流,传递信息的一种手段。唯一的区别在于英语,汉语等是人和人之间的交流,而计算机语言就是机器和人之间的交流。
如果一个美国人和一个英国人之间交流的话怎么办呢?有小伙伴会说,这两个国家都说的是英语,所以直接交流就可以了呗。的确,这两个国家都是说英语的,但是它们的在英语的使用上还是有些许的差异,例如在英式英语中颜色使用colour,而在美式英语中怎样color。美式英语要比英式英语要简化了一些东西。
这就像机器语言和汇编语言之间的关系,两者都是直接面对的底层系统,但是汇编要比机器语言简洁。当然这个例子有些不恰当,因为虽然美式英语和英式英语有一定的差别,但是这种差别基本不会影响到美国人和英国人之间的交流。可是机器语言和汇编语言不行,虽然汇编语言仍然保留了一些机器指令,但是在实际的操作中,如果你不把汇编语言转换为机器语言的话,程序是无法运行的。
好的,如果是一个中国人和一个英国人之间要交流怎么办呢?这两个国家的语言无论从形状,发音,语法结构上来说都有着千差万别。要想解决这个问题,主要有两个途径可以选择。
一
其中一个人懂另一个国家的语言,也就是说,如果中国人他会说英语,那么他自然可以用英语和英国人进行交流,这就是计算机刚诞生的时候,我们和计算机交流的方式,直接使用机器指令控制计算机。也是目前一些大佬们的独门绝技。这就是人用机器的话和机器进行交流。使用这个方法可以快速,有效地实现两者间的交流,但是它需要其中一个花费大量的时间,金钱来学习,同时还只能针对特定的语言,如果下次是俄语,西班牙语的话,又要重新学习,这就相当于机器语言在不同的系统中其对应的指令不同一样导致其可移植性较差。(汇编语言和机器语言类似)
二
通过翻译人员或者工具进行交流。这个很好理解,如果中国人和英国人相互之间不懂对方的语言,那么双方可以让一个既懂汉语,又懂英语的人进行翻译,这样就可以实现双方的交流。这就类似高级语言和机器语言之间的关系,我们利用入c,Java,python等高级语言写的程序,需要经过解释器和编译器将它转化为机器语言后·,程序才能执行,这其中解释器和编译器就充当翻译的角色。
这种方法的优势是我通过翻译人员帮我翻译所花费的成本小,而且请翻译人员要比自学一门语言的难度底。同时面对其他语言,我只需要换个翻译,而且翻译都是经过特定的培训,同种语言的翻译其翻译的差别不会很大。前者表示高级语言的学习成本小,难度低;后者则表示高级语言的可移植性好,所写的代码可以在不同的系统上运行。
同样的,它也存在着弊端,首先它需要特定的解释器和编译器,就像我和英国人交流要英文翻译,和法国人交流要法语翻译一样,其次便是它的运行速度慢,我们可以想象和外国人进行交流是直接和他用相同的语言交流快,还是通过翻译人员的翻译后交流快呢?这也是为什么高级语言的运行速度要远低于机器语言和汇编语言。
至于高级语言中具体的编程语言,例如java,c,c++,C#,pascal,python等等,它们就像是汉语中的方言,每种方言都有其独特的地方,同样的每一个不同的高级语言也有其不同于其他语言的独特之处。
以上便是我个人理解的计算机语言,可能有些地方没有说清楚,希望大家能多多包涵,可能有些地方说得不对,也欢迎大家指出错误。
最后,计算机语言没有优劣之分,所谓高级,低级并没有任何褒贬之意,每一种语言都有其存在的价值,虽然我是主要写python的小白作者,也希望各位小伙伴能学习python来多多