JavaScript悟道
上QQ阅读APP看书,第一时间看更新

译者序

少小摘得即为通,

而立手作毋自明。

夏虫度伏难度九,

阡陌知雨不知春。

道爷虽道是语精,

听者但听须首灵。

泱泱巧匠阅此序,

清人自清迷人迷。

这是我的编程之路启蒙读物。

我从 2002 年开始接触 JavaScript。那个时候我尚在读小学,接触的途径是流传在商店里的各种名为《网页特效大宝库》之类的光盘。当时,我只会在 FrontPage 中写 HTML,并不懂 JavaScript,代码都是从“大宝库”中复制粘贴的。从此,这些炫酷的鼠标跟随特效、下雪特效就在我心中种下了一颗不知名的种子。

之后 5 年,我在捣鼓 ASP。这段时间里的 JavaScript 也还在“缝缝补补”。我真正开始使用 JavaScript 写代码是在 2007 年,在 jQuery 发布一段时间之后。也正是因为 jQuery,我至今对于原生的 Web API 并不那么熟悉,接触并知道 ECMAScript 规范也是在 2013 年前后,所以说我是一个“野路子 JavaScripter”一点儿也不错。

JavaScript 从 1995 年面世以来持续高速发展,尤其在近几年爆炸式地发展。道格拉斯在 2008 年写了第 1 版的《JavaScript 语言精粹》,经过赵泽欣(小马)和鄢学鹍(三七)前辈们的翻译,几乎成了现如今 JavaScript 从业者的必读之物之一。

作为一个后端工程师,我很高兴 Node.js 的出现让 JavaScript 的发展之路与我有了交集。JavaScript 以它独特的魅力成了一门随处可见的语言,甚至早在 2008 年就有工程师杰夫·阿特伍德提出了阿特伍德定律:

任何可以使用 JavaScript 来编写的应用,最终都会由 JavaScript 编写。

虽然可以把阿特伍德定律看成一段调侃,但它也体现了 JavaScript 的便捷、易用与流行。

诚然,JavaScript 并不完美,《JavaScript 语言精粹》的厚度也远不及《JavaScript 高级程序设计》的厚度,但这些问题仍无法阻止 JavaScript 成为现如今的热门语言之一。道格拉斯深知这一点,所以他痛恨并深爱着 JavaScript 这门语言,用渊博的知识与幽默的文笔“骂骂咧咧”地写完了本书。

刚接到本书的翻译工作时,我是惴惴不安的,生怕翻译不出它的神韵。好在最后我还是勉强完成了,虽不完美,但尽了我最大的努力去保持本书的原汁原味。而且在翻译的过程中,我得到了很多提升,也知道了挺多奇闻轶事。例如,JSON 是在奇普·莫宁斯达家后方的一间棚子中被发现的;又如,爱迪生发明的留声机原型在唱针每转一圈时就会发出一声怪音;再如,曼哈顿大街上的洛克希剧院最开始是以接待员统一的裤子为噱头的;还有,最初的罗马历一年只有 10 个月,剩下的日子全叫“冬季”。

道格拉斯自身也非常有特色,对于认定的理儿非常执着,特立独行。他坚持认为 one 应该按照发音写作 wun,并且在整本书中都是这样做的。受其感染,我也尽可能地为一些单词想出了特立独行的翻译,即使它们可能已经有约定俗成的中文翻译了。例如,我会将 truthy 翻译为“幻真”,falsy 翻译成“幻假”,是不是很梦幻呢?

除了奇闻轶事、特立独行,书中还有挺多值得品味的 JavaScript 干货和吐槽。道格拉斯帮我们复习了 JavaScript 中数值的一些原理(IEEE 754),并引申出了高精度数值的思想;介绍了各种 JavaScript 类型背后的思想,如几种基本类型、对象、函数等;还讲了 JSON 等背后的小故事。道格拉斯写本书的用心不止于此,他还介绍了 JavaScript 语言层面之外的一些内容,涉及计算机科学和软件工程中的各个领域,如测试、优化和编程语言等。最后,他还不忘再次回归点题,调侃 JavaScript 一番。

至于吐槽,的确充满了道格拉斯的个人主观色彩。如果对于一些观点有强烈认同感,大家一定会产生共鸣;而如果一些观点与你的不一致,大可一笑置之。甚至在本书翻译的时候,贺师俊(Hax)前辈还开玩笑地说:

孔子作春秋,大义微言,所以需要注释来阐发。道格拉斯过于言简意赅,以至于大家不清楚他到底站在哪边。你尽量不要加注,保持原汁原味,然后单独出个评注版。你自己、我,然后再找一个人,可以凑成三家注了。

如果真的可以,我其实很乐意做这么一件事,颇有“易中天品三国”的味道。

总之,本书非常有意思,我自己在翻译的时候就有这种感觉。更多的信息还是等大家自己来发现吧,相信你们不会失望的。

最后,我非常感谢 JavaScript 这门神奇的语言,感谢 Node.js 这个运行时让我有机会深入接触 JavaScript。感谢给本书中文版写推荐语的同行们,感谢在计算机之路上给我启蒙的王震老师。感谢我的妻子,她的支持是对我最大的鼓励,如果不是她,本书的问世也许会更晚。感谢我的父母在我的背后默默支持我的事业。从我小时候起,他们就一直支持我的梦想,这才让我能在编程领域一路走下来。最后,感谢图灵公司的岳新欣女士约我翻译本书,感谢本书的编辑谢婷婷和杨琳在翻译中的帮助。

 

死月

2021 年 2 月于杭州