我来自静态/强类型语言背景(java),最近开始学习 python,我想我看到了动态/强类型语言的价值。
现在我想知道弱类型是否是可取的。
通过stackoverflow,我只发现说它具有性能优势的解释。由于在当今的编程世界中这种性能优势的重要性正在下降,弱类型实际上已经死了吗?例如,将来有没有优秀的语言设计师会考虑将他/她的语言变成弱类型?
如果是这样,为什么?
我来自静态/强类型语言背景(java),最近开始学习 python,我想我看到了动态/强类型语言的价值。
现在我想知道弱类型是否是可取的。
通过stackoverflow,我只发现说它具有性能优势的解释。由于在当今的编程世界中这种性能优势的重要性正在下降,弱类型实际上已经死了吗?例如,将来有没有优秀的语言设计师会考虑将他/她的语言变成弱类型?
如果是这样,为什么?
弱类型主要用于低级编程。例如,从磁盘读取整数或字符串的函数必须获取字节序列并得出整数或字符串。这对于强类型来说要困难得多。
弱打字是必要的,而且永远不会是必要的。它不会以任何方式影响语义。它相当于自动调用转换函数。一个例子是将 int 与 C: 中的 float 进行比较1 == 1.0
。这将毫无怨言地编译。除了“方便”之外,没有其他理由,例如,如果有一个来自 int_to_float 的函数并且正在做intToFloat(1) == 1.0
,它显然会内置到 C 中,并且这段代码将执行与将 int 转换为 float 时完全相同的事情。弱打字是安全性和便利性之间的权衡。
虽然我真的不明白必须记住(运算符×操作数×操作数)(float / int),(float == int),(string + int),(int + string),( string + boolean)、(int + long) 等。
这不是火焰,而只是我的一般经验。在 10 多年的编写和维护代码中,我只遇到过不到六次与类型相关的错误。然而,在编写移动字节的低级代码时,我开始非常讨厌类型的想法。长期以来,当编程文化采用良好可读性的理想时,我一直认为不再需要打字的想法。
当然,取决于语言和编码风格,打字可以帮助或阻碍代码理解,所以我不太介意打字语言。
因此,只要有人像我一样看不到类型的任何优势,总会有设计为无类型或弱类型的语言。
考虑错误的记录与使用的语言(根据我的经验和我在开源代码中看到的)强类型或弱类型不会对代码质量产生太大影响。考虑到我在我的经验中实际阅读过的代码,我也会说它不会对代码的可读性产生太大影响。对我来说,这只是一个品味问题(虽然我知道坚强的人不同意,但他们无法用事实支持他们的分歧,这只是他们的直觉告诉他们不同意)。好吧,最后一句话几乎是在燃烧。我现在最好停下来。
如果您不必担心类型,似乎您可以更快地工作。有些语言不会强迫你担心它们。
这一切都取决于你想要完成的事情。
它减少了大量的编码时间,同时并没有增加太多的调试时间;在测试中发现类型错误的速度几乎与编译器发现它们一样快,但是您不必键入int fooBar = 2
它也有助于不使用 4+ 数字类型,但是...