2.彻底明白编译型和解释型、动态语言和静态语言区别

1.编译型和解释型的区别

先来看看编译型语言定义:

编译型语言首先是将源代码编译生成机器指令,再由机器运行机器码(二进制)。

再来看看解释型语言的定义:

解释型语言的源代码不是直接翻译成机器指令,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。

咋看一眼,还是一脸懵逼。下面打个比方:

  • 编译型相当于用中英文词典(翻译器)将一本英文书一次性翻译(编译)成一本中文书。以后查看直接就是中文了。可想而知,以后读书(运行)会非常非常方便。
  • 解释型相当于用中英文词典(翻译器)将一本英文书读一段翻译一段(解释)中文。以后查看时还是需要重新翻译。这样效率会低一些,必须依赖解释器,但是跨平台性好。

1.1扩展

编译型和解释型的定义是对立存在的,但也可以在一个语言中同时存在。比如 java 语言同时兼有编译型和解释型特点。整个流程如下:

将源代码(.java 文件)编译生成字节码(.class 文件),再通过 JVM(java 虚拟机)运行生成机器指令,由机器运行机器码。注意,此处生成机器语言前的操作是解释型,每次运行都要重新解释。因此,此处表明 java 是解释型
但是,部分 JVM(java 虚拟机)有一种 JIT(Just in time)机制,能够将部分已经解释翻译的常用机器指令保存。下次不需要解释,直接运行即可。此时 java 是编译型

因此,现在用编译型和解释型区分语言是行不通的。

2.动态语言和静态语言

我们常说的动态语言和静态语言,其实是指动态类型语言和静态类型语言。先来看看动态类型语言:

动态类型语言,是指数据类型的检查是在运行时做的。用动态类型语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部记录数据类型。

再来看看静态类型语言的定义:

静态类型语言,是指数据类型的检查是在运行前(如编译阶段)做的。

2.1小结

  • 动态类型语言的优点是不需要写多种数据类型的代码,代码相对简洁一些,方便代码阅读。缺点是不方便调试,代码命名也容易混淆;
  • 静态类型语言的优点是方便调试,代码相对规范。缺点是需要写很多数据类型相关的代码,代码不够简洁。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/basic/programming/1151.html

(0)
上一篇 2020年3月1日 22:23
下一篇 2020年3月3日 16:35

相关推荐

  • 7.形参的分类和实参的传递方式

    形参的分类 1.值参数 没有默认值也没有特殊修饰符的参数。 2.默认值参数 可以为形参赋默认值,当实参为可选参数的时候,将调用这个形参的默认值传递。 3.引用参数 默认情况下,在函数内部改变参数的值,它并不会改变函数外部的值,所以引用传递当形参改变的时候,实参的值也会同步改变。 4.可变参数 实参的数量一般需要与形参一…

    编程哲学思想 2020年3月7日
    04280
  • 3.强类型语言与弱类型语言的区别

    (1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量 a,那么程序根本不可能将 a 当作字符串类型处理。强类型定义语言是类型安全的语言。 (2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定…

    编程哲学思想 2020年3月3日
    02.9K0
  • 1.编程范式:声明式编程(Declarative)、命令式编程(Imperative)和函数式编程(Functional)

    1.声明式编程 声明式编程是以数据结构的形式来表达程序执行的逻辑。它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做。 SQL 语句就是最明显的一种声明式编程的例子,例如: 除了 SQL,网页编程中用到的 HTML 和 CSS 也都属于声明式编程。 2.命令式编程 命令式编程的主要思想是关注计算机执行的步骤,即一…

    编程哲学思想 2020年3月1日
    01.0K0

发表回复

登录后才能评论