一文彻底明白编译型语言和解释型语言、动态语言和静态语言、强类型语言和弱类型语言、脚本语言的区别

1.编译型语言和解释型语言

编译型语言:编译型语言首先是将源代码直接编译成二进制机器码,再由机器运行二进制机器码。

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

下面打个比方:

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

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

首先将源代码(.java文件)编译生成字节码(.class文件),再通过 JVM(Java虚拟机)解释运行生成二进制机器码,由机器运行二进制机器码。

2.动态语言和静态语言

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

动态类型语言:指数据类型的检查是在运行时(如解释阶段)做的。用动态类型语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部记录数据类型。优点是代码相对简洁,省略了编写大量的关于数据类型的代码,缺点是数据类型不安全。

静态类型语言:指数据类型的检查是在运行前(如编译阶段)做的。优点是数据类型安全,缺点是需要编写大量的关于数据类型的代码。

3.强类型语言和弱类型语言

强类型语言:一旦一个变量被声明了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量 a,那么程序根本不可能将 a 当作字符串类型处理。强类型语言是类型安全的语言。

弱类型语言:它与强类型定义语言相反, 一个变量可以被赋与不同数据类型的值,不需要强制转换。弱类型语言是类型不安全的语言。

强类型语言在开发速度上可能略逊色于弱类型语言,但是强类型语言带来的严谨性能够有效的避免许多错误。

4.脚本语言

脚本语言,实际上讨论的是程序代码的入口和执行顺序,默认情况下,脚本语言按照脚本中的代码的出现顺序依次执行,传统的静态编译型语言C#或Java会查找程序代码的入口点main()方法。

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

(1)
上一篇 2020年3月1日 22:23
下一篇 2020年3月6日 23:55

相关推荐

  • 计算机字节和位的区别

    计算机内存储和处理信息的最小单位是bit(位或比特),它是BInary digiT(二进制数)的缩写,一个位的值可以是0或1,计算机通常不会每次只对一个二进制位进行操作,它们会对一组二进制位进行操作,8个二进制位为一个字节(Byte),现在的微处理器都是面向字节的,所以说计算机存储信息的最小单位是字节也是对的,它的二进…

    编程哲学思想 2021年3月1日
    01.1K0
  • IEEE 754二进制浮点算术标准

    计算机是不能理解十进制整数的,将十进制整数转换成计算机能够理解的二进制数是很容易的,但是如果将十进制浮点数转化成计算机能够理解的二进制形式还是相当有困难的。 1.科学记数法 IEEE 754 的开发者最终想到的方法是使用了科学记数法的思想。 科学记数法是表示数字的标准方法,您可能熟悉以 10 为基数的科学记数法。 其中…

    编程哲学思想 2021年3月2日
    09240
  • GMT、UT、UTC时间的区别

    1.GMT 格林尼治标准时间:Greenwich Mean Time,简写GMT,以地球自转为基础的时间计量系统。 格林尼治(Greenwich)是英国伦敦的一个区,位于伦敦东南、泰晤士河南岸。1675-1948年设皇家格林尼治天文台,天文台地处地球本初子午线的标界处,世界计算时间和经度的起点。1884年,世界20多个…

    编程哲学思想 2020年12月24日
    03.9K0

发表回复

登录后才能评论