为了账号安全,请及时绑定邮箱和手机立即绑定

静态类型化和动态类型化语言之间有什么区别?

静态类型化和动态类型化语言之间有什么区别?

静态类型化和动态类型化语言之间有什么区别?我听说很多新的编程语言都是动态类型的,但是当我们说一种语言是动态类型的还是静态类型的时候,这到底意味着什么呢?
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

静态类型语言

如果在编译时知道变量的类型,则会静态地输入语言。对于某些语言,这意味着程序员必须指定每个变量的类型(例如:Java、C、C+);其他语言提供某种形式的类型推理,类型系统推导变量类型的能力(例如:OCaml、Haskell、Scala、Kotlin)

这里的主要优点是编译器可以完成所有类型的检查,因此在非常早期阶段就捕获了许多琐碎的bug。

例子:C,C+,Java,Rust,Go,Scala

动态类型语言

如果类型与运行时值相关联,而不是命名变量/字段/等,则该语言是动态类型的。这意味着作为程序员,您可以更快地编写,因为您不必每次指定类型(除非使用静态类型语言类型推理).

例子:Perl,Ruby,Python,PHP,JavaScript

大多数脚本语言都有这个特性,因为无论如何都没有编译器可以进行静态类型检查,但是您可能会发现自己在搜索一个错误,这是因为解释器误解了变量的类型。幸运的是,脚本往往很小,所以bug没有那么多地方可以隐藏。

大多数动态类型语言确实允许您提供类型信息,但不需要它。目前正在开发的一种语言,流氓,采用混合方法,允许在函数中进行动态类型,但对函数签名强制静态类型。


查看完整回答
反对 回复 2019-06-19
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

静态类型化编程语言进行类型检查(即验证和强制执行类型约束的过程)编译时相对于运行时间.

动态类型编程语言在运行时间相对于编译时.


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 987 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信