现在极其厌恶弱类型语言,弱类型就不适合中国的职场环境

查看 312|回复 22
kenvix   
你要不先区分一下弱类型和动态类型...
ciderzero   
Python 是强类型动态语言吧,虽然我觉得写着也不舒服。
akira   
都一样, 赶工期出来的东西,用啥写 都是屎山。。。
Pzqqt   
以下内容摘自《流畅的 Python 》第 11 章“接口:从协议到抽象基类”的延伸阅读
Python 是弱类型语言吗
由于缺少统一的术语,讨论语言类型方面的话题时有时会让人不明其意。有些人(例如扩展阅读中提到的 Bill Venners 对 Guido 的访谈)说 Python 是弱类型语言,把 Python 与 JavaScript 和 PHP 归为一类。讨论类型时,最好考虑两条不同的坐标线。
强类型和弱类型
如果一门语言很少隐式转换类型,说明它是强类型语言;如果经常这么做,说明它是弱类型语言。Java 、C++ 和 Python 是强类型语言。PHP 、JavaScript 和 Perl 是弱类型语言。
静态类型和动态类型
在编译时检查类型的语言是静态类型语言,在运行时检查类型的语言是动态类型语言。静态类型需要声明类型(有些现代语言使用类型推导避免部分类型声明)。Fortran 和 Lisp 是最早的两门语言,现在仍在使用,它们分别是静态类型语言和动态类型语言。
强类型能及早发现缺陷。
下面几例体现了弱类型的不足:
```javascript
// 这些是 JavaScript 代码(在 Node.js v0.10.33 中做了测试)
'' == '0' // false
0 == '' // true
0 == '0' // true
'' < 0 // false
'' < '0' // true
```
因为 Python 不会自动在字符串和数字之间强制转换,所以在 Python3 中,上述 == 表达式的结果都是 False (保留了 == 的意思),而< 比较会抛出 TypeError 。静态类型使得一些工具(编译器和 IDE )便于分析代码、找出错误和提供其他服务(优化、重构,等等)。动态类型便于代码重用,代码行数更少,而且能让接口自然成为协议而不提早实行。
综上,Python 是动态强类型语言。“PEP 484—TypeHints”( https://www.python.org/dev/peps/pep-0484/)无法改变这一点,但是 API 作者能够添加可选的类型注解,执行某种静态类型检查。
cmdOptionKana   
古语有云:动态一时爽,重构火葬场。
unbridle   
只是不方便 javaboy 转 java 而已
highf4324   
是的,没有 Type Annotation 的代码不是好代码,阅读、维护起来真的是灾难。
willx12123
OP
  
@Pzqqt “很少隐式转换”这个概念很模糊啊,比如 JS 现在也不会有人写 == 了,都是 ===,然后 Python 里面也会经常在 if 里面直接放一个字典或者数组,`if dict` `if arr` 这样,这不算隐式转换吗
DOLLOR   
我写 Python 都会写 type hints ,写 JS 都会写 jsdoc 。
有的人嫌弃写 type 浪费时间,我觉得不然。写 type 能让编辑器自动提示对象里的成员,反而更能节约调试时间。
以前写 JS 的时候,最烦的事情,比如对象成员的字段名拼写错误,或者调用 async 函数忘记 await ,写一段代码,还要花同等的时间来调试。后来坚持写 TS/JSDOC ,代码跑起来经常都是一次通过,效率高多了。
willx12123
OP
  
@akira 万恶之源还是魔法字符串
您需要登录后才可以回帖 登录 | 立即注册

返回顶部