计算机组成原理(三):编译型语言与解释型语言

一、五级层次结构

说明:

1.下层是上层的基础,上层是下层的扩展

2.汇编语言指令和机器语言指令一一对应(先把高级无言翻译成汇编语言)

3.高级语言可以是C/C++、Java;汇编程序可以当作一种助记符;机器语言是一串二进制代码

二、编译型语言与解释型语言的区别

2.1 编译型语言

         定义:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)。典型的就是它们可以编译后生成.exe文件,之后无需再次编译,直接运行.exe文件即可。

        以C语言为例子:

#include "stdio.h"

int main(int argc, char const *argv[])
{
    printf("Hello world!\n");
    return 0;
}
  • 若使用VS code进行编译,则在输出显示中可以看到如下显示:
[Running] cd "c:\Users\林xy666\Desktop\" && gcc test.c -o test && "c:\Users\林xy666\Desktop\"test
Hello world!

[Done] exited with code=0 in 0.208 seconds

        可以看到在运行的过程中使用了gcc编译器。

  • 若直接使用windows平台进行编译

        如下图所示

         使用gcc运行test.c文件,会直接生成一个test.exe文件,如下图:

         接着就可以直接运行test.exe,而无需再进行编译。如下图:

         就可以看到直接输出Hello world!

2.2 解释型语言

        定义:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译),因此效率比较低。在程序运行时才翻译,专门有一个解释器去翻译,每个语句都是执行的时候才翻译。依赖解释器,跨平台性好。

  • 以Java为例

        首先要下载安装JDK并配置环境变量。代码如下,通过javac.exe编译成.class文件,然后通过jvm加载.class文件。

public  class  Test{
    public static  void main(String args[]){
        System.out.println("Hello");
    }
}

        调用java.exe执行文件

 2.3 关于java     

        Java和其他的语言不太一样。因为java针对不同的平台有不同的JVM,实现了跨平台。所以Java语言有一次编译到处运行的说法。

        1.你可以说它是编译型的:因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。 

        2.你可以说它是解释型的:因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。 

        3.但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。

 

        虽然java也需要编译,编译成.class文件,但是并不是机器可以识别的语言,而是字节码,最终还是需要 jvm的解释,才能在各个平台执行,这同时也是java跨平台的原因。所以可是说java即是编译型的,也是解释型,但是假如非要归类的话,从概念上的定义,恐怕java应该归到解释型的语言中。

参考链接如下:

编译型语言和解释型语言的区别? - Tsingke - 博客园编译型语言和解释型语言的区别? 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。 https://www.cnblogs.com/tsingke/p/12285650.html

 编译型语言和解释型语言(一) - 简书首先,我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言...https://www.jianshu.com/p/c1ce70ccdb74

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值