脚本语言和编译语言的区别 什么是解释器? 什么是编译器 ?解释器和编译器有什么区别?

我一直没搞明白什么是脚本语言 

网上的解释有一大段 看都看不懂 感觉说的都不是人话

其实就是解释器和编译器的区别。

当然这里就要衍生出来个 非常经典的问题

什么是解释器 什么是编译器?

首先 解释器和编译器都是翻译官

计算机只能识别1和0 这样二进制的数字

你编程的时候是不是都写的英文比如while循环 for循环

那你觉得系统能识别吗 肯定不能啊

所以要翻译

翻译有两种,一种是编译,另外一种是解释。两种方式之间的区别在于翻译的时间点不同。编译器以解释方式运行的时候,也称之为解释器。

解释性语言又叫脚本语言 python javascript

编译性语言 c,c++ 二者最大的不同 你从感知上来讲 其实最明显的就是  编程难度和规范

还有就是跨平台性

运行的速度

其他你也感知不出来

编译性语言 比如 现在你写了三行语言

#include<iostream>

using namespace std;

int main()

{
int a=0;

int b=0;

int c=a+b;

cout<<c<<endl;

}

那么如果是编译性语言  那他会一次性把这些你写的 永久打包生成exe可执行文件 但只能在这个win系统上运行 然后你每次想用 点一下这个exe就行了 但是你要是换成mac系统 他还能继续运行吗? 不行了 你要换一个编译器 重新编译 重新打包成mac格式的可执行文件 每次想用再重新点

编译型语言不能跨平台表现在两个方面:

1) 可执行程序不能跨平台

可执行程序不能跨平台很容易理解,因为不同操作系统对可执行文件的内部结构有着截然不同的要求,彼此之间也不能兼容。不能跨平台是天经地义,能跨平台反而才是奇葩。

比如,你不能将 Windows 下的可执行程序拿到 Linux 下使用,也不能将 Linux 下的可执行程序拿到 macOS 下使用(虽然它们都是类 Unix 系统)。

注意:相同操作系统的不同版本之间也不一定兼容,比如不能将 x64 程序(Windows 64 位程序)拿到 x86 平台上(Windows 32 位平台)运行。但反之一般可行,因为 64 位 Windows 对 32 位程序做了很好的兼容性处理。

2) 源代码不能跨平台

不同平台支持的函数、类型、变量等都可能不同,基于某个平台编写的源代码一般不能拿到另一个平台直接运行。下面以C语言为例进行说明。

【实例1】在C语言中,要想让程序暂停,我们可以使用“睡眠”函数。在 Windows 平台下该函数是 Sleep() ,并以毫秒为时间单位,而在 Linux 平台下则是 sleep(), 以秒为单位。可以看出,首先两个函数的首字母大小写不同,再者 Sleep() 的参数是毫秒,而 sleep() 的参数是秒,单位也不一样。

以上两个原因导致具有暂停功能的C语言程序不能跨平台,除非在代码层面对平台的兼容性做出处理,但这非常麻烦。

【实例2】虽然不同平台的C语言都支持 long 类型,但不同平台下 long 类型所占用的字节长度却不相同。例如 Windows 64 位平台下的 long 占用 4 个字节,Linux 64 位平台下的 long 却占用 8 个字节。

如果在 Linux 64 位平台下编写代码时,将 8 字节的值赋值给 long 类型的变量,这是完全没有问题的,但如果是在 Windows 平台下就会导致数值溢出,让程序产生错误的运行结果。

但是如果上面是解释性语言 ,那他会一行一行的运行。而且 比如你今天运行完了 电脑关机了 你第二天起来 又想运行 他又要重新从第一行开始 一行一行地运行。 

但是 同样的代码 你在win上可以运行 在mac上怎么办呢 你要安装mac的解释器 源代码需要修改吗 不需要修改 然后又可以用了 

部分参考编译型语言和解释型语言的区别Python 是一门解释型的编程语言,因此它具有解释型语言的运行机制。 计算机程序,其实就是一组计算机指令集,能真正驱动机器运行的是机器指令,但让普通开发者直接编写机器指令是http://c.biancheng.net/view/4136.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 编译器解释器都是用来处理计算机程序的工具,但它们之间有几个区别编译器是一种将高级语言代码转换为计算机可执行代码的程序。编译器读取整个程序并将其转换为目标代码,这是一种计算机可以直接执行的形式。一旦编译器生成了目标代码,就可以独立地执行该代码,而不需要编译器的帮助。编译器通常会产生比解释器更快和更有效的代码。 解释器是一种直接执行高级语言代码的程序。解释器一次只能处理一行代码,它会将其翻译成机器代码并立即执行。因此,解释器在执行程序时需要一直存在,并在每个代码行上执行。解释器通常会产生比编译器更慢的代码。 因此,编译器解释器之间的主要区别在于它们转换代码的方式和它们执行代码的方式。编译器在执行程序之前将其转换为目标代码,而解释器则在执行程序时逐行翻译和执行代码。 ### 回答2: 编译器解释器是两种常见的软件开发工具,用于将高级语言代码转换为计算机可以执行的机器语言代码。 编译器是一种将整个源代码文件一次性转换为机器语言的工具。编译器将高级语言代码作为输入,经过词法分析、语法分析、语义分析、代码优化等多个阶段的处理,生成目标机器语言程序。这个目标程序可以在不同的时间和计算机上重复执行,不需要重新翻译源代码。因此,编译语言的执行速度较快,但是生成目标程序的过程相对较慢。 解释器是一种逐行解释执行源程序的工具。解释器在运行时逐行解释源代码,将其翻译成机器语言并立即执行。解释器不需要生成目标程序,因此可以更快地开始执行,并且在调试过程中更容易定位错误。解释型语言的执行速度相对较慢,因为需要逐行解释执行源代码。 编译器解释器的主要区别在于源代码转换成目标机器语言的时间点不同。编译器在程序执行前进行源代码转换,将源代码一次性转换为机器语言,而解释器在程序执行时逐行解释并执行源代码。 综上所述,编译器解释器区别在于编译器将整个源代码一次性转换为机器语言,而解释器逐行解释执行源代码。编译器执行速度快,但转换时间长;解释器无需转换时间,但执行速度较慢。 ### 回答3: 编译器解释器是两种常见的程序执行方式,它们之间有着明显的区别。 首先,编译器是将源代码一次性地翻译为目标代码,然后将目标代码保存起来,由计算机直接执行。编译器在运行前需要一个额外的编译过程,这个过程将源代码分析、优化和翻译为可执行代码。编译器生成的目标代码可以直接在计算机上运行,效率高,但需要预先编译。 与之相对,解释器是逐行执行源代码,解释器将源代码逐行翻译为机器语言并直接执行。解释器无需预先编译源代码,它会边解析边执行。当解释器遇到某一行源代码时,它会将其翻译为机器语言然后立即执行,然后逐行地执行下一行代码。解释器的劣势在于执行速度相对较慢,因为解释器在每次执行时都需要重新解释源代码。 此外,编译器解释器还有以下区别: 1. 编译器编译过程中会进行词法分析、语法分析和语义分析,检查代码错误;解释器会实时解释源代码,并在发现错误时立即报告。 2. 编译器将源代码翻译为低级语言或机器语言,生成可执行文件;解释器在运行时边解析源代码边执行,不会生成可执行文件。 3. 编译器通常生成的目标代码无法修改,除非重新进行编译解释器可以实时修改和调试源代码。 4. 编译器适合编译大型程序,执行效率高;解释器适合用于简单的脚本语言和动态语言,易于调试和修改。 综上所述,编译器解释器的最主要区别在于编译器在运行前对源代码进行一次性的编译,生成可执行代码,而解释器则是源代码边解析边执行。它们各有优缺点,适用于不同的程序需求和开发环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨骅麟(Patrick Young)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值