弱打字不再需要吗?

时间:2010-07-27 15:05:22

标签: language-agnostic strong-typing typing weakly-typed

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

现在我想知道弱打字是否可取。

通过stackoverflow,我只发现说它具有性能优势的解释。由于这种性能优势的重要性在今天的编程世界中正在下降,所以弱打字几乎已经死了吗?例如,未来任何优秀的语言设计师都会考虑让他/她的语言变弱吗?

如果是这样,为什么?

5 个答案:

答案 0 :(得分:4)

弱类型主要用于低级编程。例如,从磁盘读取整数或字符串的函数必须采用一系列字节并提出整数或字符串。强打字很难做到。

答案 1 :(得分:3)

弱打字是,而且从来没有必要。它不会以任何方式影响语义。它相当于自动调用转换函数。一个例子是在C:1 == 1.0中比较int和float。这将编译没有任何投诉。除了“方便”之外,没有其他理由,例如,如果有一个来自int_to_float的函数并且正在执行intToFloat(1) == 1.0,那么它显然会内置到C中,并且这个代码将完成与int相同的事情。转换为浮动。弱打字是安全和便利之间的权衡。

虽然我真的不明白必须记住(操作符×操作数×操作数)(float / int),(float == int),(string + int),(int + string)的每一个案例都很方便),(string + boolean),(int + long)等。

答案 2 :(得分:1)

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

当然,根据语言和编码风格的不同,打字可以帮助或阻碍代码理解,所以我不太介意输入语言。

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

考虑到错误的跟踪记录与使用的语言(根据我的经验和我在开源代码中看到的内容),强类型或弱类型不会对代码质量产生太大影响。考虑到我实际阅读的代码,我也会说它不会影响代码的可读性。对我而言,这只是一个品味问题(虽然我知道强势类型的人不同意,他们只是不能支持他们对事实的分歧,这只是他们的直觉告诉他们不同意)。好吧,最后一句话几乎是火红的。我现在最好停下来。

答案 3 :(得分:0)

如果您不必担心类型,似乎可以让您的工作更快。有些语言不会让你担心它们。

这一切都取决于你想要完成的事情。

答案 4 :(得分:0)

它减少了大量的编码时间,同时不会增加调试时间;在测试中发现类型错误几乎与编译器找到它们一样快,但您不必键入int fooBar = 2它也有助于不使用4 + Number类型,但是......