他十年前的书在前端圈人手一本,豆瓣评分9.1。现在,王者归来了!
循着标题点进来的朋友,或许已经猜到图灵君说的「他」是谁了吧?
没错!他就是道格拉斯·克罗克福德(Douglas Crockford)——在前端圈里的名气可能比JavaScript之父Brendan Eich还大的老道。
道格拉斯·克罗克福德
图源:crockford.com
道格拉斯最大的成就——用他自己的话说——就是让世人相信,JavaScript这门语言居然还有好的一面!
2008年,时任雅虎Senior JavaScript架构师的道格拉斯,通过O'Reilly出版了JavaScript: The Good Parts,书名直译为「JavaScript:好的部分」(中文版名为《JavaScript语言精粹》)。因为封面上有一只蝴蝶,所以这本书被大家亲切地称为「蝴蝶书」。
蝴蝶书出版后大获成功,豆瓣获千人打分9.1分。说它影响了一整代前端人也不为过。
十多年来,道格拉斯成为JavaScript发展史的深度参与者。他认为JavaScript「仍然表面一团糟」,精粹变得越来越少,但留下来的那些精粹更显闪耀。
当萌生更新蝴蝶书的想法时,他却惊奇地发现自己和O'Reilly都不是那本书的版权所有者。雅虎才是!而雅虎早已销声匿迹了。
既然无法更新,那就写一本新书吧!这便有了图灵君今天要重点介绍的这本《JavaScript悟道》。
道格拉斯·克罗克福德 ————著
死月(朱凯迪)————译
虽然英文名为How JavaScript Works,但这绝非中规中矩讲JavaScript运行机制的书。
那么这究竟是怎样的一本奇书呢?图灵君愿称它为JavaScript葵花宝典。
道格拉斯在「导读」中这样写道:
编程语言的重要设计目标之一就是尽可能使其简洁、优雅、逻辑性强,没有各种奇怪的极端情况。然而事实上,JavaScript远没有达到这个目标。随着越来越多的特性加入,每一次新版的发布都会使其变得越来越糟糕。
我们应当尽量待在这门语言干净阳光的一面,这里已经有能让你写出好程序所需的一切了,不要让自己堕入无边黑洞。
寥寥数语,精辟地总结了道格拉斯对JavaScript又爱又恨的纠葛情感。诚然,JavaScript既有阳光面,也有黑暗面。如果你曾走过弯路、踩过深坑,如果你曾无数次在心里骂这门「烂语言」,那就捧起这本书,和道格拉斯一起痛并快乐地用好JavaScript吧!
来看看这本书都有什么内容。作为JSON之父,道格拉斯用特别的方式来呈现目录:
[{"编号": 0, "章": "导读"},{"编号": 1, "章": "命名"},{"编号": 2, "章": "数值"},{"编号": 3, "章": "高精度整数"},{"编号": 4, "章": "高精度浮点数"},{"编号": 5, "章": "高精度有理数"},{"编号": 6, "章": "布尔类型"},{"编号": 7, "章": "数组"},{"编号": 8, "章": "对象"},{"编号": 9, "章": "字符串"},{"编号": 10, "章": "底型"},{"编号": 11, "章": "语句"},{"编号": 12, "章": "函数"},{"编号": 13, "章": "生成器"},{"编号": 14, "章": "异常"},{"编号": 15, "章": "程序"},{"编号": 16, "章": "this"},{"编号": 17, "章": "非类实例对象"},{"编号": 18, "章": "尾调用"},{"编号": 19, "章": "纯度"},{"编号": 20, "章": "事件化编程"},{"编号": 21, "章": "日期"},{"编号": 22, "章": "JSON"},{"编号": 23, "章": "测试"},{"编号": 24, "章": "优化"},{"编号": 25, "章": "转译"},{"编号": 26, "章": "分词"},{"编号": 27, "章": "解析"},{"编号": 28, "章": "代码生成"},{"编号": 29, "章": "运行时"},{"编号": 30, "章": "嚯!"},{"编号": 31, "章": "结语"}
]
二十年真知灼见
在《JavaScript悟道》这本书中,道格拉斯分享了自己写好代码的「不传之法」:对于一门语言,只使用它能满足自己的最小集。
本书正是记录了他所使用的这个JavaScript最小集,以及到目前为止对这门语言的全部思考。是的,有些观点会令你惊呼!
未来的终极语言是什么模样
道格拉斯犀利地指出,JavaScript一定不是我们学习旅程的终点,而是引领我们抵达终极语言的过渡语言。
终极语言应该是全球通用、安全的。JavaScript的设计初衷是成为这样一门语言,可惜在其发展过程中,人们不停地给它「整容」,拼命地往其中注入各种新特性来防止它老化,或者说稳住其流行地位。
在本书中,道格拉斯用了数章篇幅来描绘他心目中的终极语言。他给它起了一个名字:Neo。
读完本书,或许你会发现,道格拉斯起的这个名字,和《黑客帝国》中的Neo有千丝万缕的联系。
道格拉斯与中国读者隔空对话
在书中,你会读到道格拉斯特意为中文版读者准备的内容。他回答了10位中国读者的提问。
他如何看待TypeScript?
他如何看待JavaScript在非前端领域的发展?
怎样才能具备创造一门热门语言的能力?
他是否信仰阿特伍德定律?
……
Wun More Thing
道格拉斯反复提到,JavaScript充满了各种奇怪的用法。他在书中详解了个中缘由,并给出了建议。堪称JavaScript版十万个为什么。
为什么JavaScript(以及大多数编程语言)不允许变量名中存在空格,以及为什么这是早应被打破的规则?
为什么JavaScript不擅长处理小数,尤其是与金钱相关的小数?
为什么你最好永远不要用某些比较运算符,比如==和!=?
为什么1 < 2 < 3 // true,而3 > 2 > 1 // false?
为什么"2" + 1 // "21",而"2" - 1 // 1?
以及……为什么one不应该拼作one,而应该拼作wun?!
总之,这本奇书将带你以全新的视角看待JavaScript这门你以为自己已经十分熟悉的语言。现在就下单,准备好大开眼界吧!
#留言·互动#
你在用JavaScript时踩过什么坑?
图灵君将从留言区选出3位幸运小伙伴,每人赠送《JavaScript悟道》1册。
统计截止时间:2021年7月20日
题图来源:Designed by starline / Freepik
喜欢这篇文章?点个“在看”吧~▼
他十年前的书在前端圈人手一本,豆瓣评分9.1。现在,王者归来了!相关推荐
- 备受期待!机器学习“蜥蜴书”最新版来了!豆瓣评分9.9!
传说中的机器学习"四大名著"中最适合入门的一本--"蜥蜴书"新版来了! 这本书的英文原版是美国亚马逊AI霸榜图书,在人工智能.计算机神经网络.计算机视觉和模式识 ...
- 种一棵树最好的时间是十年前,其次是现在
作者 | http://www.wuage.me 地址 | 伍阿哥 声明 | 本文是 伍阿哥 原创,已获授权发布,未经原作者允许请勿转载 前言 最近经常被朋友问到的两个问题. 问题一:"从事 ...
- 前端大牛贺师俊与 360 劳动纠纷引前端圈巨震,技术人维权有多难?
[CSDN 编者按]过去一年,互联网裁员事件层出不穷,企业.技术人均受波及,作为一名程序员,我们该如何正确维护自身权益?那些程序员"前辈们"在不断地为之努力. 作者 | 何苗 出品 ...
- 十年前,他如何自学技术进阿里?
阿里妹导读:最近,阿里妹经常收到在校大学童鞋的留言,询问如何加入阿里巴巴.今天,阿里妹邀请了阿里云高级DBA专家玄惭,讲述十年前通过校招加入阿里的经历和心得,希望对大家有所帮助(注:文末有小惊喜). ...
- 十年前你绝对没有看懂的《大话西游》.
注: 无意中在飞信上看到这篇文章,感觉不错.本科毕业10年了,还记得毕业典礼那天系里组织大家看<大话西游>,跟文章作者描述的情况差不多,不同的是自己写不出这么好.转载一下,以作纪念! [原 ...
- 【思维进阶】如果回到十年前你会做哪些事情?
回顾过去,才能更好把握当下,面向未来,才不至于当下的前行漫无目的!亦仁老大提出了回到十年前及十年后对自己有哪些建议的会员日活动,总结了以下比较有共性的30条建议,希望对一些人有所帮助. 1.不要犹豫, ...
- 十年前他在马王堆送快递,如今当上航空主管,拯救客户亿元大单
梁可今年30岁了,十年前,当他放弃上海月薪三千的工作回到家中,父母说,只要你回去,给你买张机票都行.梁可没答应,他在长沙马王堆做了一名普通快递员,今天,他已经是圆通速递湖南地区的航空主管. 航空主管 ...
- 十年前只想混一个Apache邮箱装逼,十年后却成了顶级项目创始人
\u003cp\u003e正式采访 Luke 之前,我们跟他进行了一次电话上的长谈.在那次长谈中,Luke 谈到了他对中国开源三个阶段的看法,谈到了浙大中控的经历对他的影响,谈到了他现在的人生只有工作 ...
- 杨元庆十年前指明SMB电脑方向
中小企业(SMB)需要什么样的电脑?上周联想发布中小企业市场策略,推出包括扬天台式电脑机及ideapad笔记本几大系列几十款机型,一方面说明联想对中小企业市场的重视,也说明联想中小企业市场必胜的决心. ...
最新文章
- 解决spring配置c3p0连接池,tomcat无法正常启动
- 流式计算中为什么需要时间戳和WaterMark
- jyputer notebook 、jypyter、IPython basics
- 三、比特币白皮书:一种点对点的电子现金系统
- 【转】深入理解JavaScript闭包(closure)
- 一个用户的上级部门的上级部门对用户也有修改权限,怎么判断?
- php中向数组添加值,如何使用array_push向数组添加值和键 - php
- WDA基础七:TABStrip
- python中哈希是什么意思_python 中倒是什么事可哈希的意思那?
- 一个很好的makefile例子(经典)
- php中理解print EOT分界符和echo EOT的用法区别
- Server2012 下 部署ADFS IFD
- Linux系统之CentOS和Ubuntu的对比
- 关于EJB,为什么用EJB?为什么不用EJB?
- uniapp 子组件 mounted 刷新
- D2550运行Linux,也发一个128*128的相框lcd4linux的conf
- 朱有鹏:对嵌入式工程师的一些小建议
- 路由器pppoe拨号服务器无响应,pppoe服务器无响应
- 瞎搞!你真的懂什么是ERP、中台和低代码吗?
- 在微信里点击链接无跳转