每日一书丨他十年前的书在前端圈人手一本,豆瓣评分9.1。现在,王者归来了

 循着标题点进来的朋友,或许已经猜到图灵君说的「他」是谁了吧?

没错!他就是道格拉斯·克罗克福德(Douglas Crockford)——在前端圈里的名气可能比JavaScript之父Brendan Eich还大的老道

道格拉斯最大的成就——用他自己的话说——就是让世人相信,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这门你以为自己已经十分熟悉的语言。现在就下单,准备好大开眼界吧!

声明:本文转自“图灵教育”公众号。

点击「链接」或「扫码」,《新程序员003》抢先看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值