计算机语言发展史的个人理解

来源:互联网 发布:条码检查软件系统 编辑:程序博客网 时间:2024/05/22 18:23

对现在如此之多的语言,它们是怎么来的?
现在很多语言都是基于某个平台的,那么这个平台是怎么来的?
为什么c/c++效率一般比较高?……
很多之类的问题我都不明白,不理解。现在就我个人理解发表下看法。


1. 汇编语言的形成

大家都知道最原始的语言是机器语言,每一串01代码代表不同的CPU指令,程序员要记这些01代码串代表的指令非常困难,编程也非常容易出错,所以为了解决这个问题,程序员就把这些01代码串用人一看就能懂得汇编语句一一对应,把它记在手册上,编程的时候就可以先用汇编语言写出来,然后对照手册输入01代码串到机器上运行程序,但这样效率非常不高,所以有人想我直接用汇编语言编写一个汇编语言编译器,这时还没有汇编语言编译器,所以还是要靠手工翻译成01代码串来形成汇编语言编译程序,这样汇编语言编译器就出来了,之后就不需要人工翻译了。(以我的理解,一门语言的形成应该是以该门语言编译器的形成为标志的)
特别注意,因为汇编语言是基于某个CPU指令集的,所以指令集不同的CPU就有不同的汇编语言编译程序,其他的汇编语言编译程序可以用相应的机器语言开发,也可以用已经有了的汇编语言(基于某个特定机器)开发。值得注意的是,用已经有了的汇编语言开发其他机器的汇编语言程序,产生的二进制文件是不能在本机器运行的,只能在目标机器运行,而目标机器的汇编语言编译器又只能在本机器运行。所以可以用目标机器的汇编语言编译器编译一个可以在目标机器执行的汇编语言编译器(有点绕……以上只是我的理解,不一定对)。

2. 高级语言的形成

汇编语言虽然比机器语言方便了,但对于一个复杂的程序,简便程度还是远远不够。并且用汇编语言编译程序有一个问题,通用性不够,编写的汇编源代码只能由相应的汇编编译器编译。所以产生了高级语言,如下图。
语言进化
这样就解决了通用性问题,用统一的高级语言编程格式。当然,高级语言编译器也有不同的版本。最开始出现的高级语言好像是C,然后用C开发的C++,这也是为什么操作系统大部分用C/C++开发的缘故,因为刚出现的C是不基于某个平台的,可直接调用的函数丰富(历史远),开发成本低。这也是C/C++适合做底层开发的原因吧?(因为很多操作系统内核都是用C/C++写的)现在很多高级语言也都有C/C++的影子,比如java。以后可能出现比高级语言更高级的自然语言,当然实现就越复杂。
再说一下效率的问题,为什么汇编语言产生的代码质量高,而越高级的语言产生的代码质量越低呢?我个人感性的理解(因为我说不出具体过程),汇编语言产生的代码就像刚出生的婴儿,非常纯洁,没有冗余代码,高级语言产生的代码就像给婴儿包了层层衣服,虽然本质没有变(还是个婴儿),但产生了冗余代码。
就像本来是a(a代表某东东),用高级语言就变成这样{{{a}}},结果没有变化,但过程复杂了。所以越接近a的语言效率越高。


当然,以上纯属我学习过程中的猜测,仅供参考。

原创粉丝点击