使用强类型的编程语言是否更有利于编程和数据分析?
在使用 python 编程写项目、做数据分析和深度学习任务的过程中感觉如果可以把 python 这样的语言设计成为强类型的语言。 在各种使用 import 各种第三方库时可以更准确地给出 api 的提示,同时也不再依赖于类库开发者的源码注释,就可了解需要传哪些参数进去。在写代码的时候也能防止类型不匹配的 bug 出现。 v 友们有没有这种感觉呢?
在使用 python 编程写项目、做数据分析和深度学习任务的过程中感觉如果可以把 python 这样的语言设计成为强类型的语言。 在各种使用 import 各种第三方库时可以更准确地给出 api 的提示,同时也不再依赖于类库开发者的源码注释,就可了解需要传哪些参数进去。在写代码的时候也能防止类型不匹配的 bug 出现。 v 友们有没有这种感觉呢?
如果可以:那么普通 python 库如果就是你说的 “没有使用 type annotation 的第三方库”,那它怎样变成 staticPy ?
如果不行:那么意味着全部第三方库都需要重写,岂不是比目前的 type annotation 更麻烦?
第一层比较浅的,是你指定关键位置的特定类型,满足两个最小目标,其一是 runtime 可以动态检查是否所有输入都满足该类型,其二是使用 IDE 可以看到提示。这个就是目前 python 使用的方案,虽然 runtime 检查没有杀手级产品,mypy 并不好用,不过仅满足项目需求的侵入式检查框架自己实现成本也不太大,而 IDE 补全在 pycharm 里已经有,虽然对 sublime 用户并不友好,但总体来说堪用。
第二层完全静态,对于 python 是愚蠢且无意义的,动态是一项伟大的发明,这是动态语言后发但能逐渐蚕食静态类型语言的原因,因为它确实解决了静态的痛点。python 的设计哲学是高动态与强大的描述能力,对比 c++的哲学( Zero-Overhead Abstraction )可以明显感受到本质不同。别的不说,假如存在静态 python,它有良好的优化空间和高速的 JIT 解释器,但写代码时不是光标注`lst: list`就完事了,大多数时候你还要标注数组中储存对象的类型,比如`lst: list[int]`,从此以后你只能往 list 里面增加 int 类型,甚至无法添加 float 。你能接受吗?如果如此为什么我不使用其他语言?