如何理解静态-动态-强-弱类型语言之间的差异

首先,这些单词是什么-静态-动态-强-弱类型语言?
这是对编程语言进行分类的方法:

  • 静态类型与动态类型的编程语言
  • 强类型与弱类型编程语言。

我们将理解这些术语的含义,因此您不必在下一次火焰战争中查找它们。

因此,让我们直接进入:

类型检查

这是验证和强制类型约束的过程。 通常由编译器或解释器在编译或运行时执行。 例如,您不能将字符串除以浮点数(如果可以,请不要这样做)。

用简单的术语来说,类型检查只是查看变量及其类型,然后说这个表达式有意义。

因此,现在我们知道什么是类型检查,理解这些术语真的很简单。

静态类型语言中,类型检查在编译时进行。 而在动态类型语言中 ,类型检查在运行时进行。

这对您意味着什么?

类型声明
静态的:必须明确声明所有变量类型,因为在编译时需要此信息。
例如在Java中float f = 0.5;

动态:不需要显式声明,因为类型是在运行时分配给变量的。
例如在Python中f = 0.5

性能
静态的:在编译时进行更多处理,但可以提供更好的运行时性能。

动态的:效率更高的编译器/解释器,但是在运行时进行类型检查会影响性能。

灵活性和错误
静态的:不太容易发生运行时错误,但为程序员提供的灵活性较小。

动态:提供更大的灵活性,但更容易出现运行时错误。

记住它
记住静态类型和动态类型语言的一种快速技巧是用它们的全名来称呼它们

==>静态类型检查的语言。

==>动态类型检查的语言。

语言云。 礼貌: Mayank Bhatnagar

但是什么是强类型和弱类型语言?

这是一个频谱*(底部免责声明)。 因此,我们将继续学习常用术语。

强类型语言中,一旦在运行时或编译时将类型分配给变量(例如,变量),它将保留该类型,并且无法轻松地将其与其他类型的表达式混合。

例如在Python中
data = “string1” //Type assigned as str at runtime
data = 5 //Type assigned as int at runtime
data = data + “string2” //Type-error str and int can't be concatenated

而在弱类型语言中 ,一旦在运行时或编译时将类型分配给变量,例如,就可以轻松地将其与其他类型的表达式混合在一起。

例如在Javascript中
$data = “string1” //Type assigned as str at runtime
$data = 5 //Type assigned as int at runtime
$data = $data+“string2” //str and int get concatenated

结论

类型检查可确保正确的变量类型是表达式的一部分。 在静态类型检查的语言中,类型检查在编译时进行,而在动态类型检查的语言中,类型检查在运行时进行。

强类型语言具有更强的类型检查并强制执行分配的类型(在编译或运行时),而弱类型语言具有较弱的类型检查,并允许各种不同类型之间的表达式。

(好玩吗?)免责声明

如果你进入细节问题,并尝试找到正确的答案,你会回来搞乱了 (正好!)。

事实证明,整个行业都没有对这些术语的正式划分 。 这是一个频谱。

但是这些术语仍然很多。 所以,我去挖了。 Java语言规范将Java称为强类型语言。

但是C编程语言第一版没有使用这样的术语。

参考文献

  • 在Twitter,Facebook,Linkedin,Quora,Github,Medium,Gmail @ jarpit96上找到我

From: https://hackernoon.com/actually-understand-statically-dynamically-strongly-weakly-typed-languages-axbpi3za2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值