每一门编程语言的作者都希望自己创造的语言是美的,而每门语言在发展的过程中的每个路口,都需要做出自己相应的选择。当越来越多这样的选择叠加在了一起之后,一门语言的独特的特性和味道就渐渐确定了。
这些个选择当中,有一些是值得赞美的,有些是应该回避的。但无论是前者还是后者,在该特性稳定之后就有对应的项目在使用它,于是出于兼容性的考虑以及对语言标准的实现,后者也没法从语言中去除出去。
众所周知,JS 的坑以及不确定行为相当多。所以为了写出美的 JS 代码来,就要求我们知道那些部分是 JS 中美的部分,哪些是不美的。具体参照《JavaScript: The Good Parts》就好了。
其实中国的语言文字——即中文,也不算是什么特别美的东西。网上的资料说,“1994年冷玉龙等的《中华字海》,收字数更是惊人,多达85000字”。而人们常用的汉字数目是 3000 个,如果把每个汉字都看成中文的一个特性的话,那么中文有用的特性只有 1/20。这多出来的 8w 多个汉字,里面的每一个字相信都可以用对应的 3000 字里面的汉字来做解释。且做这个解释的机会不多,我相信我读过的书不算很少,但其中出现的生僻字也并不多。
相比来说,JS 漂亮多了。
Node.js 真正美的东西是 NPM。在 Ruby 和 Python 中,它们的包管理工具都不如 NPM 好理解以及好用。Python 的包管理工具无论是 pip 还是 easy_install 都是个残废,这就不说了;Ruby 里面的话,bundle 并不像 NPM 一样可以每个包依赖固定的版本号,而是需要全部包都依赖相同的版本号,这就对包的兼容性提出了不小的挑战,所以也不如 NPM 优雅。NPM 虽然牺牲了不少的多余的硬盘空间,可是这年头谁在乎硬盘空间。就算多占用点内存空间都是小问题,人的时间虽然并不是越来越值钱,但机器的消耗确实是越来越廉价。
俗话说“一白遮三丑”,对应 JS 来说,则是“一快遮三丑”。很多时候,我遇到一些有关语言解析或者局部优化的问题,都喜欢用 JS 写测试代码来试试性能,而 v8 也从来没让我失望过。快得不可言喻。
参考资料:https://lee134134134.github.io/page/10/