为什么某些人说 JavaScript 是不成熟的语言?
共 990字,需浏览 2分钟
·
2022-02-09 09:04
语言这东西怎么评判成熟不成熟貌似可以有多种理解。一种视角是从语言本身设计的角度来看,另一种是从语言的实际应用的角度来看。
从设计的角度看,JS 的坑由于 ECMAScript 标准需要向后兼容,所以大部分永远也没法填了,ES6 和 ES7 都只是引入新的语法或是内建类。标准化的语言基于 committee 磨磨蹭蹭地讨论,进化速度向来慢得可以(想想过去10年 JS 有多少变化就知道了...),虽然近年来在 Google 和 Mozilla 的推动下整体速度有所加快,但浏览器的实现普及度又是一个问题... 5年以后能在所有浏览器里用上 ES6 就谢天谢地了。所以在这个角度上,JS 似乎确实算不上成熟。
从实际应用的角度来看,JS 倒是挺成熟的,因为只要做互联网你就得用它,大家都在用啊。用得多了,各种坑的解决办法也就大家都知道了。就算坑多,也不是多到不能搞定(你敢说 JS 的坑比 C++ 还多?),像那种什么 40 个 puzzler 之类的,你要在生产代码里写出这种东西估计早被开除了。大部分的常见坑只是在刚用 JS 的时候觉得不习惯,但规避它们的成本其实不高,时间长了并不会对开发者的生产力造成根本性的影响。web 上高质量的大型 SPA 应用有很多(当然烂的也多,但这主要是门槛低导致开发者水准良莠不齐),google 系的不说了,除此之外 3D 引擎也有,矢量作图应用也有,parser generator 之类的东西也有,总之 JS 的坑没能阻止大家用它写出各种稀奇古怪的东西。另外就是沾 Node 的光,在服务器端 JS 其实已经逐渐站稳了脚跟,现在已经有 Yahoo, PayPal,LinkedIn, Groupon,Walmart 这样的大型企业在生产环境里采用 Node,M$ 也在 Azure 上把 Node 作为重要的支持平台之一。除此之外,JS 是目前开源活跃度最高的语言,没有之一。所以你说 JS 是个成熟的语言吗?貌似又有点像。
所以综合一下,JS 确实坑挺多,但它不能做的事情还真挺少的(当然是横向和其他动态语言比),而且你花点时间知道怎么避开坑了以后,它的开发效率还挺高的,运行效率在动态语言里也算是相当快的(前提是现代的引擎)。最后,如果是在浏览器里,你没得选;在服务器端,Node 也决不是一个糟糕的选择;至于在其他地方,那就要具体分析了。
浏览
5从设计的角度看,JS 的坑由于 ECMAScript 标准需要向后兼容,所以大部分永远也没法填了,ES6 和 ES7 都只是引入新的语法或是内建类。标准化的语言基于 committee 磨磨蹭蹭地讨论,进化速度向来慢得可以(想想过去10年 JS 有多少变化就知道了...),虽然近年来在 Google 和 Mozilla 的推动下整体速度有所加快,但浏览器的实现普及度又是一个问题... 5年以后能在所有浏览器里用上 ES6 就谢天谢地了。所以在这个角度上,JS 似乎确实算不上成熟。
从实际应用的角度来看,JS 倒是挺成熟的,因为只要做互联网你就得用它,大家都在用啊。用得多了,各种坑的解决办法也就大家都知道了。就算坑多,也不是多到不能搞定(你敢说 JS 的坑比 C++ 还多?),像那种什么 40 个 puzzler 之类的,你要在生产代码里写出这种东西估计早被开除了。大部分的常见坑只是在刚用 JS 的时候觉得不习惯,但规避它们的成本其实不高,时间长了并不会对开发者的生产力造成根本性的影响。web 上高质量的大型 SPA 应用有很多(当然烂的也多,但这主要是门槛低导致开发者水准良莠不齐),google 系的不说了,除此之外 3D 引擎也有,矢量作图应用也有,parser generator 之类的东西也有,总之 JS 的坑没能阻止大家用它写出各种稀奇古怪的东西。另外就是沾 Node 的光,在服务器端 JS 其实已经逐渐站稳了脚跟,现在已经有 Yahoo, PayPal,LinkedIn, Groupon,Walmart 这样的大型企业在生产环境里采用 Node,M$ 也在 Azure 上把 Node 作为重要的支持平台之一。除此之外,JS 是目前开源活跃度最高的语言,没有之一。所以你说 JS 是个成熟的语言吗?貌似又有点像。
所以综合一下,JS 确实坑挺多,但它不能做的事情还真挺少的(当然是横向和其他动态语言比),而且你花点时间知道怎么避开坑了以后,它的开发效率还挺高的,运行效率在动态语言里也算是相当快的(前提是现代的引擎)。最后,如果是在浏览器里,你没得选;在服务器端,Node 也决不是一个糟糕的选择;至于在其他地方,那就要具体分析了。
评论