您现在的位置是:首页 > 文章详情

脚本语言与编译型语言

日期:2018-10-10点击:334

不同

  • 编译型语言:
    • 编译型程序所生成的指令时二进制形式的机器码和操作数, 就是所谓的二进制流, 二进制程序是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://yq.aliyun.com/articles/670300
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章