你说的那个镜像问题其实已经说明了js的处境,因为python有的问题js一样有
先说结论:这么说吧,不是js是个烂语言(虽然js本身确实不咋地,ES6之前尤其烂)。而是所有无法进行“输入输出变量类型检查”的语言,在大型项目上都很垃圾。
大型项目有什么特别的?特别之处就在于大型项目的工作量你必须找人协作,你再NB大型项目的工作量也很难一个人完成(你够牛你当然可以做完,猴年马月之后对不?)。于是多个人写代码,约束非常重要,否则就是一个人一个样。光有约束还不行,还得有工具来帮助工程师检查漏洞。那个镜像问题不也说了吗,Facebook的HHVM有一大堆顶尖工程师写的代码检查工具,帮助你解决诸如“变量传来传去后就不知道是啥玩意了”的这一类问题,而这种问题对于绝大部分静态语言来说就是编译器和IDE的工作。这也是为啥知乎还有1个问题:
为什么 2010 年前后诞生的语言(如 Golang, Rust, Swift)都是强类型 + 静态?总有人嘲笑,说静态语言的类型检查是弱者的护身符,这类“牛逼程序员”我在知乎看到过不止一个,然而这些自以为是的人忘记了,像他们“这么牛逼(假设他们真的牛逼好了)”的程序员始终是少数,世界上绝大部分代码都是由普通人写成,最重要的是——我们是人类,人类的特长在于会制造和使用工具;而类型检查这种重复工作完全应该交给工具完成,因为自己的大脑比较突出所以能完成这种对其他人来说心智负担过重的工作而炫耀,和野兽炫耀自己牙尖爪利没啥区别,历史倒退尔。
PS1:没有自带类型检查的语言,不过是当初人们需要类型推导功能而做的第一次动态语言尝试时,一个历史错误罢了。别说大型项目,小型项目我都不乐意用这类语言写,除非没办法。
PS2:“前端没有大项目”,这句话可是前端界的同学自己自嘲的,所以js的弱点暴露的不够明显,很多人还没感觉到
PS3:就算有PS2,前几年前端界是这么说的“能被JavaScript重写的,都将被JavaScript重写”。结果从去年开始就变成了:“能被JavaScript重写的,都将被TypeScript重写”。为啥?我说各位还没闻出点味道来 |