java属于指令式语言_跟我学java编程—简单了解编程语言

语言是人类交流的工具,是人们沟通的主要表达方式。不同的民族有不同的语言,每种语言有自己的语法规则和词汇,只有在规定的语法规则和词汇范围内,人们才可以相互理解之间的对话和语句文字要表达的内容。超出这个范围,就会出现语言理解困难现象,例如:不同语言之间的人对话就会发生理解问题,就需要翻译人员的协助才能完成正常交流。

编程语言是人类与计算机的交流工具,为了让计算机能够准确无误地完成任务,人们需要使用计算机能够读懂的语言与之交流,编制任务指令交给计算机,计算机才能够按部就班地执行指令,完成人们交给的任务,编写计算机指令的语言就是编程语言。

编程语言和人类语言一样,不是先天就有的,是随着科技和计算机技术的发展,人们为了更好地控制计算机,帮助人们完成更多任务,提高编程和工作效率而不断对语言进行创新、完善和改进而来的。最初的编程语言是机器语言,也是计算机唯一能直接读懂的语言。计算机只能识别二进制代码,所以机器指令也是由二进制代码组成的,所谓的机器语言,就是直接用二进制代码编写计算机的指令序列(程序)。

假设编写一个计算直线方程的程序,给出方程的斜率、变量系数和变量X的值,求Y值,将计算结果存储到以Y为地址的存储单元中。

直线方程为 Y = AX + B,其中A、X、B已经分别存储到A、X、B存储单元,机器指令可以直接寻址到该存储单元。A单元的存储地址为26H,X的存储地址为34H,B的存储地址为36H,Y的存储地址为56H,其中26H、34H、36H、56H均为16进制,该算法流程图见1-13图。

d56b2857a2ca7eb27d479e1a3c3815ed.png图 1-13 计算直线方程流程图

根据流程图编写的机器指令序列(参考了IBM-PC指令集,可能有出入,主要是为了说明编程语言的演变过程):

(1)1011 AX 26H

存取指令,读取指定地址26H的存储内容到AX寄存器;

(2)1001 34H

乘法指令,将34H存储地址的内容与AX寄存器内容相乘;

(3)1011 26H AX

存取指令,将AX寄存器内容存储到26H地址的存储单元;

(4)1011 AX 36H

存取指令,读取指定地址36H的存储内容到AX寄存器;

(5)0011 AX 26H

加法指令,将AX寄存器内容和26H地址存储内容相加;

(6)1011 56H AX

存取指令,将AX寄存器内容存储到56H地址的存储单元。

上面就是用机器语言编写的计算直线方程的计算机指令序列,是不是特别难记、难懂,完全是看天书的感觉。为了提高编程的工作效率,在1949年,人们将助记符和机器代码关联起来,并编写了转换程序,转换程序可以把助记符转换为机器代码,这就是汇编语言。

根据流程图编写的汇编程序指令序列(参考了IBM-PC指令集,可能有出入,主要是为了说明编程语言的演变过程)。

(1) MOV AX A

存取指令,读取A地址的存储内容到AX寄存器;

(2) IMUL X

乘法指令,将X存储地址的内容与AX寄存器内容相乘;

(3) MOV A AX

存取指令,将AX寄存器内容存储到A地址的存储单元;

(4) MOV AX B

存取指令,将B地址的存储内容读取到AX寄存器;

(5) ADD AX A

加法指令,将AX寄存器内容和A地址存储内容相加;

(6) MOV Y AX

加法指令,将AX寄存器内容存储到Y地址的存储单元;

用助记符代替了机器码,编程是不是相对简单了一些,转换程序可以帮助编程人员从繁重的机器码编写劳动中解脱出来,转换程序也称之为汇编编译程序,其工作原理如下图所示:

0141dfbf71998d71237643a2d7a8a43e.png图 1-14 汇编编译程序原理图

汇编代码完成后,需要运行编译程序,将汇编代码转换为机器代码,由于不同CPU架构的计算机,其提供的指令集不同,支持运行的机器代码也不同,因此,要运行在不同CPU架构的计算机上,就需要运行支持该CPU架构的汇编编译程序。例如IBM-PC机采用了Intel X86系列处理器,单片机一般采用ARM架构的系列处理器,如果要让编写的汇编程序运行在IBM-PC机上,就需要调用支持IBM-PC指令集的汇编编译程序,如果要让编写的汇编程序运行在ARM架构的计算机上,就需要调用支持ARM指令集的汇编编译程序。

汇编语言相对机器语言来说,编程效率和可读性都有了较大提高。但编写程序还是过于繁琐,并且汇编语言对应一条条指令集,当指令集改变时,就得修改相应汇编语言,导致其可移植性和维护性很差,不能跨平台使用。为了解决这个问题,计算机工程师们继续创新和改进编程语言,随着计算机技术和科技的发展,计算机对语言的处理能力进一步提高,计算机工程师试图用人们能够容易识别和易懂的语言去编写程序,在20世纪50年代,出现了第一批高级语言,包括FORTRAN 、LISP、COBOL等语言,随后相继出现了C语言、C#、Java、PHP、Perl等高级语言。

高级语言的优点是其语法和结构更类似汉字或者普通英文,并且由于远离对硬件的直接操作,使得一般人经过学习之后都可以掌握编程技术。

● 根据计算直线方程流程图编写的C语言程序

void line(double a,double x,double y)

{

a = ax;

y = a + b;

}

● 根据计算直线方程流程图编写的Java程序

public class LineQuation

{

void line(double a,double x,double y)

{

a = ax;

y = a + b;

}

}

Java语言和C语言都属于高级语言,其语法和规则有相同之处,但也有很大的不同,Java是面向对象的语言,C语言是函数式语言,Java是编译兼解释性语言,C语言是编译性语言,关于语言的特性面会有陆续介绍。

我们写程序用的是高级语言,要让我们写好的程序能够在计算机上运行,就必须要把高级语言转换成计算机能够理解的机器语言,该转换程序称为该语言的编译程序,例如C语言的转换程序可以称之为C语言编译程序,C语言编写的程序编译为Windows程序的工作过如下图所示:

2f8dc06f743c5e55708aa2c677bc04cc.png图 1-15 编译性语言编译过程

编写完成的C语言源代码,首先经过编译预处理器规范代码和预编译,然后通过编译器转换为汇编代码,再由汇编器转换为机器代码,最后由链接器将有关的机器代码文件进行相互链接,构建Windows程序。

0f4d9c6539a3e7d4e8ebb9fd05905e4a.png

编程语言是人们与计算机的交流工具,各种编程语言语法规则虽有不同,但其核心思想都是人们通过编程语言来控制计算机,让计算机帮助人们解决各类问题。学习编程语言的目的是掌握利用计算机解决问题的能力,包括分析问题、算法设计、数据架构等能力,有了这些能力,只要学会一种编程语言,其它语言都可以无师自通。后面的学习过程,也重点讲述分析问题、解决问题的能力。

edc03bb83330048fc518520dcc59cc42.png

(1)请简要叙述高级语言、汇编语言、机器语言的区别。

(2)请描述C语言的编译过程。

(3)汇编程序编译的机器代码为什么不能运行在不同CPU架构的计算机上?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值