编程语言的诞生与发展

来源:互联网 发布:新闻门户后台 php 编辑:程序博客网 时间:2024/05/16 15:50

本文讲编程语言的诞生和发展,同样我尽量把内容故事化。

 

在讲解编程语言的诞生之前先来解释一下“程序”和“指令”这两个词汇。

 

什么是程序?

我们知道,计算机只是一个机器,它就是一堆物理零件的组成,它本身不会思考,不会自己行动。但计算机却能完成很多很多的工作,这样感觉好像计算机是万能的。但事实上计算机的任何行为都是根据人们事先指定的指令进行的。而所谓的程序,就是一组计算机指令。写程序的目的就是要让计算机接收到这些指令后去完成某些工作。

 

那什么是指令?

指令就是指示命令,例如上级领导给我们下达了一个指令让我们去干一件事情,我们理解了领导的指示然后动手去做。而程序员是对计算机下指令让它去做事情,同样我们也是通过传达指令让计算机知道我们要它干什么,那么计算机就必须能读懂我们下达的指令。因为计算机只认识0和1两个数字,所以每一个指令就是一串0和1的序列,比如010101就可以是一个指令,101010又是另一个指令。一个指令完成一个动作,一组动作就完成一个行为。所以一组指令就组成一个程序。

至于为什么计算机只能识别0和1,这是由于计算机的物理组成决定的,计算机能识别的都是对应的两个物理状态。为什么是两个状态而不是三个四个?主要原因如下

1、由两个或两个不一样的形态组成的序列就已经可以衍生出无数种可能,就好比脱氧核苷酸虽然只有4种,但是由成千上万的脱氧核苷酸组成的一条核苷酸链就可能产生无数种情况。所以只要计算机能识别两个不一样的状态就可以衍生出无数种可能。

2、物理上很容易实现两个对应的物理状态,如电平的高低,电路的通断等。如果要能识别三种、四种或更多种状态那么对物理零件的组成要求就会更高。

3、两种相对的状态非常清晰明了,这样可以很好的实现是非、对错等逻辑结构,例如高电平代表是,低电平代表非。

所以,根据以上所说这些我们就知道,计算机认识的是两种状态,并不是说认识0和1,也可以用3和4或者是A和B来代表两种状态。但是如果使用0和1的话,首先它们是数字,可以将信息数字化,其次0和1代表二进制,方便人们计算。所以计算机设计元老都采取0和1来代表两种物理状态,一直沿用至今。

 

编程语言的出现

由上述内容我们已经知道计算机只认识两种物理状态,人们分别用0和1表示。那么人们就通过对计算机传达0和1组成的序列让计算机知道它需要做什么。至于为什么计算机收到了一串指令之后为什么就知道看懂了呢?那是因为在计算机的制造过程中,在它的cpu里已经保存了一套指令系统。至于一台计算机的指令系统有哪些指令,自然是由它的cpu决定。总之这套指令系统明确的告诉计算机当接收到什么指令时该干什么,例如010101是做一件事,101010是做另一件事。所以早期的程序员们就使用0和1这样的二进制指令(也称为机器语言)和计算机进行沟通。那么人们怎么把这些指令告诉计算机呢?早期的程序员是通过在一条纸带上打洞,有洞代表1没洞代表0,然后让纸带穿孔卡片机进行扫描,于是计算机就接收了指令知道你要它干什么了。当然随着科技的发展现在幸福的程序员们已经不需要在纸带上打洞了,直接在键盘上敲字符就行了。但是,虽然可以用机器语言和计算机进行沟通,却很快就出现了一个很严重的问题。计算机能做的事情越来越多越来越复杂,所要记的01序列也越来越多。而且很容易出错,例如:

10001001110110001000100111001000之间哪里出错了很难发现。于是人们就开始琢磨着怎么能简化这些01序列。后来人们就发明了使用助记符,也就是英文字母来取代机器语言。例如用“MOV AX,BX”取代“1000100111011000”,这样就好记多了,这些助记符随着时间的推移逐渐扩充和完善最后形成汇编语言。所以汇编语言就是早期的编程语言。


高级语言

汇编语言出现后,人们不再需要使用难记、易错的机器语言编写程序。但是后来IBM公司一名名叫约翰·贝克斯(John Backus)的工程师还是觉得汇编语言的的助记符依然很难记,而且无法满足在数值计算上的一些较高难度的需求。于是开始开发新的计算机语言,于1957年开发出了Fortran语言,这也是第一门高级语言。所谓高级语言,就是代码不再是机器语言的01序列或汇编语言简单的助记符,而是在语法上更接近英文句子,这样的好处是容易记忆,而且新人们很容易学习。缺点是远离了硬件,速度比机器语言和汇编语言要慢。(这些在这里只需了解一下,如果不理解以后自然会体会到)。