一篇文章让你知晓你的开发语言到底是什么类型

强类型和弱类型

  • 强类型语言也称为强类型定义语言,是一种总是强制类型定义的语言。
    JAVA.NETPython等都是强制类型定义的。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。
    例如你有一个整数,如果不显式地进行转换,你不能将其视为一个字符串。

  • 弱类型语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
    JavaScriptPHPC/C++等就属于弱类型语言·

  • tips:
    Python是强类型语言,但一般脚本语言都是弱类型。
    C/C++是弱类型语言,是因为C++int i = 0.0;是可以编译运行的;
    在这里插入图片描述

动态语言和静态语言

  • 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。如PythonRuby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

  • 静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译期间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#JAVA等。

编译型和解释型

在这里插入图片描述
在这里插入图片描述

  • 编译型
    C/C++Golang就是典型的编译型语言。这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”。
    运行程序时,直接读取目标代码(object code)。由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点。
    但是,由于编译型语言多半运作于底层,所处理的是字节、整数、浮点数或是其他机器层级的对象,往往实现一个简单的功能需要大量复杂的代码。
    例如,在C++里,就很难进行“将一个目录里所有的文件复制到另一个目录中”之类的简单操作。

  • 解释型
    解释型语言也被称作“脚本语言”,比如 PythonJavaScriptPHP。执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再由计算机运行。因为每次执行程序都多了编译的过程,因此效率有所下降。

  • 编译和解释结合
    但既然编译型与解释型各有优缺点又相互对立,所以一批新兴的语言都有把两者折衷起来的趋势。
    例如Java语言虽然比较接近解释型语言的特征,但在执行之前已经预先进行一次预编译,生成的代码是介于机器码和Java源代码之间的中介代码,运行的时候则由JVM(Java的虚拟机平台,可视为解释器)解释执行。
    它既保留了源代码的高抽象、可移植的特点,又已经完成了对源代码的大部分预编译工作,所以执行起来比“纯解释型”程序要快许多。
    总之,随着设计技术与硬件的不断发展,编译型与解释型两种方式的界限正在不断变得模糊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值