zoukankan      html  css  js  c++  java
  • 解释语言与编译语言

    一种编程语言能被计算机执行的前提是它在执行前被翻译成机器码. 根据这个翻译过程发生的时间不同, 可以将编程语句分为解释语言(Interpreter)与编译语言(Compiler). Interpreter还有口译的涵义. 在这里, 解释器就是口译者, 它将用户写的脚本语句口译成机器码给计算机"听".


    我理解的的解释语言即脚本语言, 写完代码后可以直接运行而无需编译过程. 例如, Javascript, Python, Matlab, Shell. 而用编译语言写完代码后需要有编译操作, 然后才能执行. 不过, 这两个操作已经被很多IDE合并成一个(用户可见的)操作, 例如, 在Eclipse里面, 只需要$F_{11}$一下, Build与Run/Debug过程就可以自动无缝进行了.

    Python 有点例外, 因为它在运行之前会产生一个pyc文件, 是一种介于Python代码与机器码的中间代码. 所以不能简单用是否会产生中间代码文件来判断一个语言是解释语言还是编译语言. 但是还是有一个简单直观的判断方法的: 可执行的代码文件一定是解释性的, 否则是编译性的. 可执行的含义限定为linux系统中文件权限控制码的最低位为1(例如001/1, 101/5, 111/7), 而不是IDE里可执行.

    一般来说, 解释语言因为在执行时: (1)需要同时运行解释器, (2)边解释边运行, 在速度上有些慢. 而编译语言则将解释过程放在运行之前, 且运行时无其他overhead, 所以速度上有优势.

    不过,听说python又是例外. 至于其原理, 暂时没有兴趣去了解.


    # Reference Thinking in C++, 2nd, Chapter 2.
  • 相关阅读:
    js原型链原理看图说话
    this关键字
    ECMAScript 继承机制实现
    Javascript闭包模拟私有成员
    关于javascript中apply()和call()方法的区别
    arguments.callee
    有用的工具函数
    ECMAScript的世界
    JavaScript 技巧与高级特性
    自定义控件不让在界面拖放。
  • 原文地址:https://www.cnblogs.com/dengdan890730/p/6217266.html
Copyright © 2011-2022 走看看