当我还是一个年轻的程序猿时,我会学习我正在用的语言的所有功能,我也会在我写的时候尝试用到所有这些功能。我把它当做是秀的方式,我认为它很有效,因为当你想要知道怎样使用特定功能时,我就是你要找的人。
最后,我明白一些功能相对带来的价值,它带来更多的问题。其中一些很少被提到,所以也更容易带来可能的问题。一些会导致代码难以阅读或更改。一些诱使我使用很复杂且易于犯错的方式写代码。并且,一些功能是设计错误。有时候语言设计者也犯错误。
大多数编程语言都包含好的部分和坏的部分。我发现如果只是用好的部分,避免坏的部分,我可以成为更好的程序猿。毕竟,怎么能在坏的部分基础上建造好的东西呢?
对于一般人来说,从语言中移除不完美的地方是几乎不可能的。因为这样做会引起那些基于坏的部分的所有坏程序崩溃。它们通常什么也不能做,只会在不完美基础上堆积更多功能。并且新功能并不总能和谐地发生作用,因此产生更多坏的部分。
但是你可以定义自己的子集。你可以通过孤立依靠好的部分写更好的程序。
JS是这样一种语言,好的部分还是多于坏的部分。它从不存在到全球应用只用了很短时间。它并没有在实验室停留,来测试和雕琢。而是直接投入到网景浏览器2中,像以前一样,并且它很粗略。当Java小程序失败后,JS顺理成章成为默认的网页语言。JS的流行几乎完全不依靠它作为编程语言的质量。
幸运的是,JS拥有特别好的部分。在JS里,埋藏在一堆好的想法和错误中,有一个漂亮、优雅且高度具有表达能力的语言。JS最好的本质是如此的高效地隐藏着,以至于多年间人们对JS的观点是它是难看的、不胜任的玩具。JS是一块儿大理石,我把不漂亮的部分切掉,直到语言的真正本质显露出来。我相信我雕刻出来的优雅的子集比语言整体更加有效,变得更加可靠、易读和易维护。
这本书不会完全描述这种语言。相反它会集中于好的部分,避免坏的部分。这里要描述的子集可被用来建造可靠的、易读的程序,或大或小。通过集中于好的部分,我们减少学习时间,增加健壮性,拯救更多树木(说的是造纸吧)。
也许学习好的部分最大的益处就是,你可以避免需要忘记坏的部分。忘记坏的模式是很困难的。大多数我们面对极不情愿时是很痛苦的任务。有时候,语言被分成小子集,是为了更好为学生工作。但是,这里我将JS分成小子集,是为了更好为专业人士工作。