信息学奥赛知识点(四)----计算机语言

程序是一系列的操作步骤,计算机程序就是由人事先规定的计算机完成某项工作的操作步骤,每一个步骤具体内容由计算机能够理解的指令来描述,这些指令告诉计算机“做什么”和“怎么做”

通常分为三类:机器语言、汇编语言和高级语言。

1.机器语言

计算最早出现的语言就是机器语言,它是计算机能够直接识别的语言,而且速度快。机器语言用二进制代码来编写计算机程序的。因此又称二进制语言。例如用机器语言来表示“8+4”,是一串二进制码“00001000 00000100 00000100”。机器语言书写困难,记忆复杂,一般很难记忆。

2.汇编语言

由于机器语言的缺陷,人们开始用助记符编写程序,用一些符号代替机器指令所产生的语言称为汇编语言。但是,用汇编语言编写的程序不能被计算机所识别,必须使用某种特殊的软件用汇编语言写的源程序翻译和连接成能被计算机直接识别的二进制代码。

img

汇编语言虽然采用了助记符来编写程序,比机器语言简单,但是汇编语言仍属于低级语言,它与计算机的体系结构有关。工作量大,繁琐,而且程序可移植性差。

3.高级语言

计算机并不能直接接受和执行高级语言编写的源程序,源程序在输入计算机时,通过“翻译程序”翻译成机器语言形式的目标程序,计算机才能识别和执行。这种“翻译”通常有两种方式,即编译方式和解释方式。

编译方式:编译方式的翻译工作由“编译程序”来完成,它是先将整个源程序都转换成二进制代码,生成目标程序,然后把目标程序连接成可执行的程序,以完成源程序要处理的运算并取得结果。

img

解释方式: 源程序进入计算机时,解释程序边扫描边解释,对源程序的语句解释一条,执行一条,不产生目标程序。解释方式的翻译工作由“解释程序”来完成。

img

编译性语言:C/C++、Pascal/Object Pascal

解释性语言:ASP、PHP、Java、JavaScript、VBScript、Prel、Python、Ruby、MATLAB

使用编译性语言程序将整个源程序编译连接为可执行的文件,这种方式效率高、可靠性高、可移植性好。不过,当源程序修改后,必须重新编译。

面向对象的语言借鉴了20世纪50年代的人工智能语言LISP,引入了动态绑定的概念和交互式开发环境的思想;始于20世纪60年代的离散事件模拟语言Simula67,引入了类的要领和继承,成形于20世纪70年代的Smalltalk

面向对象语言的发展有两个方向:一种是纯面向对象语言,如Smalltalk、EIFFEL等;另一种是混合型面向对象语言,即在过程式语言和其他语言中加入类、继承等成分,如C++、Objective-C 等。

面向对象的编程语言:Smalltalk、Java、C++、C#、Python。

面向对象的三大特点:继承、封装、多态

面向过程的编程语言:C

通过示例来理解三种语言的区别:

假设我们有一个非常简单的程序,其功能是计算两个数的和。我们将通过三种不同的语言层次来展示这个程序的实现方式。

1. 机器语言

假设我们有一个非常简单的处理器,它可以执行加法运算。对于这个处理器来说,执行加法的指令可能是一个特定的二进制序列。这里我们假设有一个指令,它接受两个操作数并将它们相加,结果保存在一个特定的位置。

例子: 假设我们需要计算 5 + 3,并将结果存储在内存地址 1000H 中。在机器语言中,这可能表示为以下指令:

  • 0001010100000011 - 加法指令,前四位表示指令类型,接下来的四位是第一个操作数的地址(0101 -> 5),再接下来的四位是第二个操作数的地址(0011 -> 3)

2. 汇编语言

在汇编语言中,我们会用助记符来表示机器指令,这样代码就更容易阅读了。对于上面的加法指令,我们可以这样写:

例子:

ADD 5, 3, 1000H  ; 将 5 和 3 相加,结果存入内存地址 1000H

这里,“ADD”是一个助记符,代表加法操作;后面的三个数字分别表示两个操作数和结果存储的位置。

3. 高级语言

在高级语言中,我们可以使用更接近自然语言的语法来编写程序。例如,在 Python 中,我们可以这样写:

例子:

result = 5 + 3  # 计算 5 + 3
memory[0x1000] = result  # 假设 memory 是一个字典,用来模拟内存

在这个例子中,我们首先计算了 5 + 3 的结果,并将其存储在一个变量 result 中,然后将 result 的值存储在内存地址 1000H(以十六进制表示为 0x1000)中。

通过这个简单的例子,我们可以看到不同语言层级之间的差异:

  • 机器语言 是最底层的,直接与硬件交互,但很难直接理解。
  • 汇编语言 使用助记符使代码更易于理解,但仍然与硬件紧密相关。
  • 高级语言 更加抽象,易于编写和维护,可以处理复杂的逻辑结构,但需要编译器或解释器转换成机器可执行的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值