猿问

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

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

我听说很多新的编程语言都是动态类型的,但是当我们说一种语言是动态类型的还是静态类型的时候,这到底意味着什么呢?



小怪兽爱吃肉
浏览 988回答 3
3回答

HUX布斯

静态类型语言如果在编译时知道变量的类型,则会静态地输入语言。对于某些语言,这意味着程序员必须指定每个变量的类型(例如:Java、C、C+);其他语言提供某种形式的类型推理,类型系统推导变量类型的能力(例如:OCaml、Haskell、Scala、Kotlin)这里的主要优点是编译器可以完成所有类型的检查,因此在非常早期阶段就捕获了许多琐碎的bug。例子:C,C+,Java,Rust,Go,Scala动态类型语言如果类型与运行时值相关联,而不是命名变量/字段/等,则该语言是动态类型的。这意味着作为程序员,您可以更快地编写,因为您不必每次指定类型(除非使用静态类型语言类型推理).例子:Perl,Ruby,Python,PHP,JavaScript大多数脚本语言都有这个特性,因为无论如何都没有编译器可以进行静态类型检查,但是您可能会发现自己在搜索一个错误,这是因为解释器误解了变量的类型。幸运的是,脚本往往很小,所以bug没有那么多地方可以隐藏。大多数动态类型语言确实允许您提供类型信息,但不需要它。目前正在开发的一种语言,流氓,采用混合方法,允许在函数中进行动态类型,但对函数签名强制静态类型。

摇曳的蔷薇

静态类型化编程语言进行类型检查(即验证和强制执行类型约束的过程)编译时相对于运行时间.动态类型编程语言在运行时间相对于编译时.
随时随地看视频慕课网APP
我要回答