概述
今年是牛年,大家期盼已久的“犀牛书”《JavaScript权威指南》第7版的中文版也终于在牛年摆上书架,我觉得这可能就是所谓的冥冥中自有安排吧。众所周知,计算机类的技术书在图书市场竞争极为激烈,同为技术书作者,我对此深有体会。计算机技术更新迭代的速度实在太快,一本书上架还没多久,技术就更新,书很快就过时了,再加上同类书众多,这就导致很多新书连书名都还没来得及让大家记住,就默默消失在时间的长河里了。
但是,大浪淘沙,是金子总会发光的,总有那么几本书能够在众多书籍中脱颖而出,跨越时间的阻碍,成为让大家口口相传,经久不衰的长销书。这类书你也许以前从来没看过,以后可能也不会去看,但是只要你在这个行业里,你就一定听过它们如雷贯耳的大名。今天讲的“犀牛书”就是一本经过时间验证的长销书。
“犀牛书”本名《JavaScript:The Definitive Guide》,中文翻译为《JavaScript权威指南》,O’Reilly原版书的封面装帧风格统一,大都会在封面印上一只珍稀动物,本书的封面是一头爪哇犀牛,所以俗称“犀牛书”。而这本书在JavaScript的世界里,叫作“必读书”。
01 为什么要读“犀牛书”
我们开始学习一门编程语言,都会先问“学习这门语言,推荐看哪些书”?而每个过来人看的书不同,推荐的书单自然也是五花八门,但在JavaScript的世界里,不论什么书单推荐,都不会落下这本“犀牛书”。
那么,问题来了,为什么KOL都在推荐这本书?为什么一定要读“犀牛书”?
当你拿到“犀牛书”,第一印象相信大家都出奇的一致:书好厚,简直就像块砖头,这可叫人怎么读的下去啊。它不但外表长得像砖头,翻开里面开始读,你就会发现这真的就是一块砖头,很硬,不好读。所以,很多初学者都会产生一个困惑:为什么这本书会是JavaScript必读书?
每个人的学习方法都不一样,就我来说,学一门语言至少要读两本书,入门和进阶。入门是在你对这门语言一无所知的时候读的,摒弃各种旁枝末节,把最主干的知识快速过一遍,这时你对这门语言就有了初步了解。
但这只是开始,在编程世界里,“魔鬼藏在细节”是一句至理名言。当你真正使用这门语言去开发项目时,你才会发觉,消耗你大量时间、拖慢工程进度的,通常都不是什么大问题,而是你在入门时忽略的的各种旁枝末节导致的。
我们都听过一个段子,真正精通某某语言某某技术的人,是不太敢在简历中写下“精通”二字的。那何谓精通呢?我曾经和朋友很认真地讨论过这个问题,争执了很多轮,最后得到一个共同的结论:知道各种坑在哪里,也知道怎样从坑里爬出去。这就算精通了。
对于很多语言和技术,你可能读了很多书,还是很难找到一本书能把这些坑都讲明白的书,很多坑要耗费很大的精力才能弄明白。但JavaScript是幸运的,在JavaScript的世界里,你能很容易找到一本帮你填坑的书,它就是“犀牛书”。
“犀牛书”为什么厚?因为“犀牛书”大而全。有的初学者觉得“犀牛书”不好读,因为“犀牛书”几乎将JavaScript的所有枝枝蔓蔓都巨细无遗地写进了书里面。很多人说“犀牛书”不像是一本教材,而像是一本字典。我的感觉也确实是这样,当你需要找一本书去查JavaScript的某个知识的某个细节,你就去查“犀牛书”,不管多偏多细,它多半就在书里面。
02 为什么推荐读第7版
今年上市的《JavaScript权威指南》,已经更新到第7版了。技术书更新版本不奇怪,何况还是“犀牛书”这样的经典。但是正如开篇所说,我和大家一样,都对这个第7版期待了很久。不管你之前是否读过“犀牛书”,都推荐再读一读第7版。因为,第7版很重要。
如果你去查《JavaScript权威指南》的第7版更新了什么,可能得到的只是一个轻描淡写的答案:包含了ECMAScript 6,也就是一般简称的“ES6”的内容。基本上所有技术书的更新版,都会说包含了最新的XXX内容,技术出了名的就是更新快嘛。
但是,这个ES6不一样,把它称为JavaScript的里程碑也不为过。
本来这段我计划写一个对比表,对比一下第7版和第6版的不同之处,我也写了一大段内容,新增了很多全新的知识点,很多都是业界正在热议的话题,譬如说async/await。可是回头一看,皱眉头了:这不就都是ES6更新的内容嘛!ES6更新了太多的东西,我甚至开始怀疑“更新”这个词还适不适合用来描述这次大规模的升级,如果没有后向兼容,那ES6根本就是一条分界线,把之前和之后的JavaScript切分成两款语言。这就要从JavaScript本身说起。
03 ES6真的不一样
我最近越来越觉得,JavaScript不像是稳坐Web食物链顶端的大佬,而更像求生欲很强的萌新。ES6就是JavaScript求生欲点满的体现。
经常看到有人问要不要学Java,要不要学Python,但却很少见有人会问要不要学JavaScript。原因无他,其它语言无论多火多热,多多少少都有一些作用相同或相近的“竞品”,但对于Web特别是前端来说,JavaScript就是绕不开的话题。
不过,JavaScript有一个很大的问题:设计很糟糕。不是一般的糟糕,是出了名的糟糕,你要是遇到一位前端程序员,很内向什么话题都聊不起来,你担心气氛渐趋尴尬,那就向他请吐槽JavaScript,保证他犹如滔滔江水三日不绝。
已经不止一款新的前端编程语言因为JavaScript的糟糕打出了“苍天已死黄天当立”的旗号,不过,仍然没有半点要成功的迹象。也许你会觉得,这是因为JavaScript已经在Web中占据了大而不能倒的生态位,大家都是村霸家的好邻居,敢怒不敢言。但我认为JavaScript的求生欲也很重要。
ES6就是JavaScript的求生欲。
也许你很疑惑,不知道这个“ECMAScript”到底是什么。其实,JavaScript的官方名称就叫“ECMAScript”。原因很简单,商标权问题,不能直接叫“JavaScript”,所以,JavaScript的官方语言标准,就以ECMAScript命名。上面说的ES6,就是ECMAScript语言标准第6版,这也是最新一版的语言标准。
语言标准不是JavaScript特有的新东西,你可以简单理解为是编程语言的“功能更新”,很多编程语言都有语言标准或者起到类似作用的东西,这里就统一都叫“语言标准”。研究语言标准的变化是很有趣的事,譬如说在某个编程语言在正在当红的时候,它更新语言标准就像“挤牙膏”,会比较谨慎,往往是社区吹风吊足胃口,等真的跟新完一看,更了个寂寞,一问就是要维护设计的哲学。而等它到了快要过气的时候,以往一直不敢落实的各种方案现在悉数收下,还要看看市面上都流行些什么,也不管要不要哲学了,赶紧先抄过来,给人一种“我要凉了,可我还不想凉,可我又不知道怎么办,只好胡乱挣扎”的凄凉感。这就是编程语言的求生欲。
JavaScript还如日中天,求生欲就已经很强了。JavaScript是一门老语言,95后,年纪比不少学它的人还大。如果你看“犀牛书”作者的介绍,里面有一个细节,介绍说作者从1995年就开始使用JavaScript,单这么看好像没什么,不过如果你了解背景,就知道他就几乎是最早开始用JavaScript的那一批人。
语言老,坑又多,很多是因为先天不足。但也许也正是因为这些先天不足,让JavaScript即使今天坐稳了大佬的位置,仍然无时无刻都觉得自己还是个萌新,和完美仍然差距甚远。所以,JavaScript不怎么谈设计哲学,不过,从JavaScript的语言标准更新可以看出,它一直憋着一股劲:你们不是都说我坑多么?好,我改,我不但要改出你们期待的样子,而且比你们期待的还要好。
ES6就是这股劲的一次大爆发。大家都说ES6是JavaScript的一次大更新,甚至可以说这不是一次更新,这是一次换代,ES6前后的JavaScript,简直不像同一款语言。很多人担心ES6“步子迈得太大”,但是,这背后是有原因的。
04 从ES4到ES6
要说清楚ES6,要从ES4说起。如果你去查,你会发现ES4从来就没有正式面市,ES3直接就跳到了ES5。这不是中间跳过了一段剧情,这是中间剧情太复杂,结果ES4最终没法出来。
传统的说法是ES4太超前,或者说太复杂,不少特性就算在ES6这里,也仍然属于未曾设想的道路。JavaScript毕竟是Web语言,不是自家拍脑袋出标准就可以了,还得各家浏览器厂商支持。ES4太多革命性的设计,兼容成本太高,厂商们一看ES4的草案纷纷点了灭灯,于是ES4就胎死腹中了。当然,这段历史还有很多说法,大家可以自行查看。不管过程怎样,革命性的ES4最后是淘汰了,那还得有个标准顶上才行,于是有了ES5。
ES5也是一个替代方案。要知道制定语言标准是很费劲的事,ES4是从1999年2月就开始制定,原计划在2008年8月才正式完成,正儿八经的十年磨一剑。结果呢?2008 年 7 月 才决定废止ES4,根本不可能还有时间另搞一套,于是就在ES3的基础上,在ES4中拿了一点争议不这么大的东西,拼成一个版本叫ES3.1,后来改叫ES5。
如果你买了上一版也就是第6版的“犀牛书”,你会在书封的右上角看到“涵盖ECMAScript 5和Html 5”这么一段话,这里的ECMAScript 5就是上面说的ES5。从ES5原名叫ES3.1就可以知道,ES5只是ES3的威力加强版,改动不大是理所当然的事。
制定语言标准真是很费劲的事,过了近十年,终于,到了2015年,ES6面市了。据说很多原本的ES4党一看ES6都哭了,说ES6活脱脱就是ES4的精神续作,这个话题很大不展开了,就说一点:类。
现在主流的高级编程语言都支持类,JavaScript也是很早就支持类,但是JavaScript是从什么时候才开始正式支持class关键字的呢?是ES6。
感兴趣可以分别去翻第6版和第7版“犀牛书”的第9章,比较一下就会发现,最新的第7版也就是使用ES6的“犀牛书”,在这章新增了一个小节9.3,专门介绍class关键字的用法。这一节还能看到一个有趣的说法,前面我们说ES6继承了ES4的革命性,但也不少人觉得ES6没什么,只是多了些语法糖,而在9.3节“犀牛书”的作者在介绍完class关键字的用法之后,也加了一句评语,认为class语法确实“明确、方便”,不过功能上并没有创新,只是老机制的“语法糖”。
ES6推出来以后,JavaScript的语言标准也确立了一年一更的机制,于是你可以在查到有些网文作者给出诸如ES7、ES8这样的叫法,咋一看好像ES6都有点过时了,今年才上市“犀牛书”是不是面临了刚出就淘汰的命运呢?其实只是这些网文作者没搞清楚新机制是怎么一回事。
前面我们说,语言标准制定很费事,ES6在2015年才面市,这会正是风头正劲的时候,也根本没有啥ES7、ES8。那有什么呢?有ES2015、ES2016、ES2017、ES2018、ES2019、ES2020,前面我们说,ES6确立了一年一更的机制,这些就是一年一更的准确叫法,但这些都统称为ES6,可以简单理解为ES6的子版本迭代,譬如第7版的“犀牛书”说涵盖ES6,那具体涵盖到哪个版本呢?一看介绍,已经覆盖到了ES2020。现在ES2021还处于提案状态,ES2020已经是ES6最新的版本。这样就很清楚了。
想了解更多JavaScript具体知识,那么请看《JavaScript权威指南 原书第7版》。
作者简介:
莫凡,网名木羊同学。娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。
扫码关注作者
扫码关注【华章计算机】视频号
每天来听华章哥讲书
更多精彩回顾
书讯 | 4月书讯 | 好书和最美四月天一起来了...
资讯 | DB-Engines 4月数据库排名:Redis有望甩掉“千年老七”?
书单 | 8本书助你零基础转行数据分析岗
干货 | 什么是架构?网络架构中都有什么?终于有人讲明白了
收藏 | 终于有人把Scrapy爬虫框架讲明白了
上新 | 河马书来了!线上实验领域的“圣经”火热预售中
直播 | 筑牢“数据基座” 掘金数字经济——5位大咖畅聊金融科技
活动 | Book多得的奇遇,给爱读书的你们最大的优惠力度
点击阅读全文购买
最后
以上就是俊逸啤酒为你收集整理的大咖发声 | 聊聊火爆前端圈的“犀牛书”的全部内容,希望文章能够帮你解决大咖发声 | 聊聊火爆前端圈的“犀牛书”所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复