我一直没搞明白什么是脚本语言
网上的解释有一大段 看都看不懂 感觉说的都不是人话
其实就是解释器和编译器的区别。
当然这里就要衍生出来个 非常经典的问题
什么是解释器 什么是编译器?
首先 解释器和编译器都是翻译官
计算机只能识别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的解释器 源代码需要修改吗 不需要修改 然后又可以用了