计算机如何识别计算机语言?为什么能识别特定的语言?为什么只能识别英语?

电脑教程026

计算机如何识别计算机语言?为什么能识别特定的语言?为什么只能识别英语?,第1张

计算机主要通过2进制码进行识别的,就是0和1,主要是有电和没电两种形式。识别特定的语言是因为特定的语言已经存在于计算机系统内部。比如说,a,b,c.....字母都有所代表的码,所以当你用键盘敲击这几个键位的时候,计算机会识别,然后在显示屏上显示。如果需要逻辑运算,比如说你用键盘输入like,计算机会先转换可识别的2进制码,然后计算机逻辑分析,对应汉字“喜欢”这个词的2进制码,然后在转换成我们能看明白的汉字(这里是有很大的数据库在里面的,都是一一对应关系)。之所以只能识别英文,是因为创造计算机的不是中国人。完全是按照人家外国的语音和习惯来的。

计算机内部执行的是机器语言。计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言基础。要命令计算机去干这干那,就需要写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种计算机能够认识的语言,就是机器语言。

程序就是一个个的二进制文件。一条机器语言成为一条指令。指令是不可分割的最小功能单元。而且每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,想要在另一台计算机上执行,必须另编程序,造成了重复工作。

但由于使用的是针对特定型号计算机的语言,所以运算效率是所有语言中最高的。机器语言,是第一代计算机语言。计算机语言发展到现在已经是第三代语言了,历经语言时代分别是:机器语言:由数字0和1组成的具有特殊含义的数字串,非常不利于记忆。

汇编语言:由特定的符号组成的一系列代码段,虽然比机器语言耗电,但是同样很难记忆。高级语言:由英文组成的一系列代码段,很好识别,同样很人性化,非常符合人的逻辑思维。很利于学习。

我们从图示可以看到,高级语言只有经过编译才能被计算机所识别,最后才能够执行。计算机是不认识英文单词,之所以能够识别出来是因为从高级语言到计算机能够识别的机器语言的过程通过了编译过程。汇编语言早期,为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进,用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”表示加法,“MOV”表示数据传递等。

这样,人们就很容易读懂并理解

程序在干什么,纠错及维护都变得方便了。这种程序设计语言就称汇编语言,即第二代计算机语言。汇编语言同样十分依赖

机器硬件,移植性不好,但效率十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高。

汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的

而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。高级语言BASIC(True

basic、Qbasic、Virtual

Basic)、C、C++、PASCAL、FORTRAN、智能化语言(LISP、Prolog、CLIPS、OpenCyc、Fazzy)、动态语言(Python、PHP、Ruby、Lua)等等都是属于高级语言。

高级语言是绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。由于省略了很多细节,所以编程者也不需要具备太多的专业知识。 高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言。

计算机语言(Computer Language)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。

计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。

计算机语言主要分为四类:

- 低级语言

- 高级语言

- 专用语言

- 脚本语言

1、低级语言

- 机器语言、汇编语言和符号语言。

- 汇编语言源程序必须经过汇编,生成目标文件,然后执行。

2、高级语言

- BASIC(True basic、Qbasic、Virtual Basic)、C、PASCAL、FORTRAN、智能化语言(LISP、Prolog)等等。

- 高级语言源程序可以用解释、编译两种方式执行。通常用后一种。

我们使用的C语言就是使用的后者。

3、专用语言

CAD系统中的绘图语言和DBMS的数据库查询语言。

1.1.机器语言

机器语言是指一台计算机全部的指令集合

电子计算机所使用的是由"0"和"1"组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由"0"和"1"组成的指令序列交由计算机执行,这种计算机能够认识的语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。

因此程序就是一个个的二进制文件。一条机器语言成为一条指令。指令是不可分割的最小功能单元。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。

1.2.汇编语言

为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用"ADD"代表加法,"MOV"代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。

汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。

1.3.高级语言

1.3.1.高级语言的发展

从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。经过努力,1954年,第一个完全脱离机器硬件的高级语言--FORTRAN问世了,40 多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、VC、VB、Delphi、JAVA等。

特别要提到的:在C语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语言——C语言。

高级语言的发展也经历了从早期语言到结构化程序设计语言,从面向过程到非过程化程序语言的过程。相应地,软件的开发也由最初的个体手工作坊式的封闭式生产,发展为产业化、流水线式的工业化生产。

60年代中后期,软件越来越多,规模越来越大,而软件的生产基本上是个自为战,缺乏科学规范的系统规划与测试、评估标准,其恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚至带来巨大损失,软件给人的感觉是越来越不可靠,以致几乎没有不出错的软件。这一切,极大地震动了计算机界,史称"软件危机"。人们认识到:大型程序的编制不同于写小程序,它应该是一项新的技术,应该像处理工程一样处理软件研制的全过程。程序的设计应易于保证正确性,也便于验证正确性。1969年,提出了结构化程序设计方法,1970年,第一个结构化程序设计语言--Pascal语言出现,标志着结构化程序设计时期的开始。

80年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一个模块被执行完成前,人们不能干别的事,也无法动态地改变程序的执行方向。这和人们日常处理事物的方式是不一致的,对人而言是希望发生一件事就处理一件事,也就是说,不能面向过程,而应是面向具体的应用功能,也就是对象(Object)。其方法就是软件的集成化,如同硬件的集成电路一样,生产一些通用的、封装紧密的功能模块,称之为软件集成块,它与具体应用无关,但能相互组合,完成具体的应用功能,同时又能重复使用。对使用者来说,只关心它的接口(输入量、输出量)及能实现的功能,至于如何实现的,那是它内部的事,使用者完全不用关心,C++、Virtual Basic、Delphi就是典型代表。

高级语言的下一个发展目标是面向应用,也就是说:只需要告诉程序你要干什么,程序就能自动生成算法,自动进行处理,这就是非过程化的程序语言。

计算机语言举例

(1)C语言:

/*This is a sample*/

#include<stdio.h>

void main()

{

printf("hello")

}

(2)D语言:

module hello.d

import tango.io.Console

void main(char[][] args)

{

cout("hello").newline

}

最简单的C语言如下所示:

main()

{ }

最简单的D语言如下所示:

void main()

{

}