脚本语言与编译型语言

不同

  • 编译型语言:

    • 编译型程序所生成的指令时二进制形式的机器码和操作数, 就是所谓的二进制流, 二进制程序是CPU可以直接识别执行的
  • 解释性语言:
    • 脚本语言的解释器是二进制形式的, 可以被CPU直接识别的, 但是脚本解释器的输入是脚本语言字符串, CPU执行脚本语言解释器, 而脚本语言解释器去执行脚本语言, 中间隔了一层, 脚本程序是通过CPU间接运行的
    • 脚本语言的两大类:
      • 一边解释一边执行-->所以不会有opcode生成
      • 分析整个文件后创建抽象语法树生成opcode, 有了指令之后让解释器去执行opcode(包括操作码和操作数), 这就相当于CPU执行汇编语言一样
      • ==== 华丽的分割线 =====
      • 解释器可以理解为一个虚拟机, 虚拟机的有两类, 一个是类似于Python的虚拟机一样只模拟CPU; 另一个是类似于VMware一样, 用来虚拟操作系统的, 使用数组作为寄存器, 文件作为硬件

为什么脚本语言会慢

  • 脚本语言需要两次IO, 而编译型则需要一次IO

    • 在脚本语言中, CPU将脚本解释器从硬盘加载到内存中, 脚本解释器又将脚本程序从硬件中加载到内存中; 而编译型语言本身就是一个二进制程序, CPU将其加载到内存中, CPU就直接执行了
    • 另一个原因还跟脚本语言的解释方式
      • 在一边解释一边执行的脚本语言中:

        • CPU操作的是字符串, 没有编译的操作, 我们只要比较字符串需要时间复杂度为O(n), 而数字为O(1), 所以需要比较n次才能确定一个操作码, 太慢了
      • 在先编译再执行中(Python)
        • 将文件编译, 里面的字符串都转换为数字, 这样时间复杂度就是O(1)了, 更快了

原文地址:https://www.cnblogs.com/megachen/p/9775845.html

时间: 2024-07-29 19:28:51

脚本语言与编译型语言的相关文章

Shell脚本语言与编译型语言的差异

大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言. 编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”. 运行程序时,直接读取目标代码(object code).由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点. 但是,由于编译型语言多半运

【转】shell 教程——03 Shell脚本语言与编译型语言的差异

大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言. 编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”. 运行程序时,直接读取目标代码(object code).由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点. 但是,由于编译型语言多半运

Shell 学习3 - Shell脚本语言与编译型语言的差异

大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言. 编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作"编译". 运行程序时,直接读取目标代码(object code).由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点. 但是,由于编译型

python——静态语言、动态语言、强类型语言、弱类型语言、脚本语言、解释型语言、编译型语言

静态语言 在编写代码时,必须为变量指定一个明确类型的语言.比如Java.C/C++ 动态语言 在编写代码时,不必为变量指定一个明确的类型,而是由解释器在运行时根据变量的使用情况确定变量的类型.比如python.javascript #python的动态特性 m = 10; m = 'hello' print m #print 'hello' 强类型语言 变量必须有一个确定的类型.比如Java.C/C++.python 弱类型语言 在运行时,变量不必按它原来的类型使用,可以当做其他类型来使用,比如

标记语言 脚本语言 编译型语言

1.标记语言 标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码.与文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行标识.如:HTML.XML 2.脚本语言 脚本语言是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言.它的命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复.早期的脚本语言经常被称

编译性语言、解释性语言和脚本语言

1.计算机不能直接理解高级语言,只能理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序.(计算机只能执行机器语言:我们要执行高级语言编的代码,就只能用编译器把它变成机器语言) 2.翻译有两种方式:a.编译b.解释.两种方式主要是翻译的时间不同 3.编译语言:编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成机器语言文件:比如,exe文件,以后运行的话就不用重新编译了,直接使用编译的结果就行了:因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序

编程语言 标记语言 脚本语言分别有哪些? 区别是什么?

著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:蔡超凡链接:http://www.zhihu.com/question/22443881/answer/48223449来源:知乎 一.各自的定义标记语言 标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码.与文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行标识. 如:HTML.XML 脚本语言 脚本语

常用的脚本语言有哪些

1.Tcl/TkTcl 的最大特点我觉得就其语法格式极其简单甚至可以说僵化,纯粹的 [命令 选项 参数] 形式,名副其实的 Tool Command Language.不过正因为如此,学习掌握起来就极为容易了,而且这种形式上的简单却大大简化了解析器的复杂性,使得对Tcl 脚本的支持非常容易实现,这些应该也是大多数EDA工具采用Tcl 为其脚本环境的原因吧.但另一方面说,这种形式的简单不太对一些很喜欢使用语法技巧的人的胃口.Tcl 的另一特点就是通过Tk对跨平台用户界面的支持了,一来有丰富的用户界

编译性语言、解释性语言和脚本语言的区别

http://www.cnblogs.com/wvvv/p/5227318.html计算机是不能理解高级语言,当然也就不能直接执行高级语言了.计算机只能直接理解机器语言,所以任何语言,都必须将其翻译成机器语言,计算机才能运行高级语言编写的程序. 一.翻译和解释的不同 翻译的方式有两种,一个是编译,一个是解释. 两种方式只是翻译的时间不同.编译型语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(