关于语言不可知:弱打字不再需要了吗?

Is weak typing not necessary anymore?

我来自静态/强类型的语言背景(Java),最近我开始学习Python,我想我看到了动态/强类型语言的价值。

现在我想知道弱小的打字是否永远是可取的。

经过StackOverflow,我只找到了一些解释,说明它具有性能优势。由于在当今的编程世界中,这样的性能优势的权重正在下降,那么弱类型实际上是死的吗?例如,将来有没有一个好的语言设计师会考虑让他/她的语言变得弱类型化?

如果是,为什么?


弱类型主要用于低级编程。例如,从磁盘上读取整数或字符串的函数必须获取一个字节序列并得到一个整数或字符串。用强输入法很难做到这一点。


打字不好是必要的。它不会以任何方式影响语义。它相当于自动调用转换函数。一个例子是将int与c:1 == 1.0中的float进行比较。这本书将毫无怨言地编纂而成。除了"方便"之外,没有理由这样做,例如,如果有一个从int-to-u float的函数并执行intToFloat(1) == 1.0,那么它显然将被构建到c中,并且此代码将执行与int转换为float时完全相同的操作。弱类型是安全性和方便性之间的权衡。

虽然我真的不明白(operator×operand×operand)(float/int)、(float==int)、(string+int)、(int+string)、(string+boolean)、(int+long)等每种情况都需要记住,这有什么方便呢?


这不是火焰,而是我的经验。在十多年的编写和维护代码的过程中,我只遇到过不到六次与类型相关的错误。但是,我非常讨厌在编写移动字节的低级代码时使用类型。我一直认为,当编程文化采用良好可读性的理念时,打字不再是必要的。

当然,取决于语言和编码风格,键入可以帮助或阻碍代码理解,所以我不太介意键入的语言。

所以,只要有人像我一样,没有看到类型的任何优势,总是会有设计成无类型或弱类型的语言。

考虑到bug的跟踪记录与所使用的语言(在我的经验中以及从我在开源代码中看到的)强类型或弱类型对代码质量没有太大影响。考虑到我在经验中实际读过的代码,我也会说它对代码的可读性没有太大的影响。对我来说,这只是一个品味问题(尽管我知道有很强的类型的人不同意,但他们只是不能支持他们对事实的异议,这只是他们的直觉告诉他们不同意)。好吧,最后一句话简直是火上浇油。我现在最好停下来。


它减少了大量的编码时间,但并没有增加太多的调试时间;在测试中发现类型错误的速度几乎和编译器发现的一样快,但您不必键入int fooBar = 2,但是不使用4+数字类型也有助于…


如果你不必担心类型的话,看起来你可以更快地得到一些东西。有些语言并不强迫你去担心它们。

这一切都取决于你想完成什么。