
道格拉斯·克罗克福德
本书结合当前JavaScript语言现状,深入剖析了JavaScript语言的运行原理、应该如何演进、怎样才能将其发挥至极致。这些深邃、极具前瞻性的论述不仅适用于JavaScript,也适合其他语言。学习、理解、实践大师的思想,能让开发者站在巨人的肩上,看得更全面。
很喜欢读这类脱离具体 api 谈设计的书籍,读完收获还是挺大的。 本书并非干巴巴的讲解,各种类型都会追溯到最早的设计(背景)及所参考的标准。估计这也只有作者这种见证了这门语言诞生的老程序员才能写出的内容 初读过程,还是常常有「原来如此」的感觉,将产生此感觉的话题记录如下: JS 这门语言为什么这么设计 1. 变量名中没有空格、存在保留字等的历史原因是为了给编译器节省字节 2. Math对象,从Java处习得的糟粕。该对象中有三角函数(trigonometric function)和对数函数(logarithmic function),以及一些本该是运算符的函数 3. 幻真幻假借鉴自 C 语言着门类型不足的语言 4. ++ \ — 这两个运算符都是早期设计出来用于操作指针的 5. 从例程(指令列表)讲到函数的历史 6. JavaScript的异常管理借鉴于Java,而Java的异常管理则借鉴于C++。C++是一门没有现代化内存管理特性的语言,所以在程序执行出错的时候,调用链中的每个函数都要自行显式释放自己分配的内存。JavaScript有一套成熟的内存管理机制,却错误地引用了C++的内存模型含义; 对 JS语言依赖的标准进行了分析 1. 如数值:实现借用自IEEE 754标准,一种为英特尔iAPX-432处理器设计的标准,设计很精妙,但是不够简洁 2. 字符串在本质上是16位无符号整数(0过65 535)的不可变数组 3. 闭包在Scheme语言中被首次使用,然后通过JavaScript成为主流。JavaScript也因它而神奇 4. Date 历法的设计 对 JS 语言中的部分特性进行了重新设计 - 生成器:重构后的生成器对流程的控制真的很赞 - 事件化编程 - 更纯粹的Date 对 JS 语言中的各种类型的设计优缺点进行了分析 如 1. 数组未找到时,返回 -1,依旧是数值,导致错误可能不能很快发现;数组中很多方案本应纯洁,单不够纯洁 2. 幻假布尔值 3. 如何让 JS 变得更纯 - 应当抛弃什么,保留什么 除此之外,也补全了一些知识点盲区 如 1. 活跃对象 - 闭包的底层机制; 2. 尾递归 - 复用活跃对象 - 当一个函数返回另一个函数的返回值时,我们就称其是一个尾调用; 3. 本书作者是 JSON 的作者,讲述了JSON 的设计历史及初衷、其为推广 JSON 做的事情以及 JSON 为什么没有版本; 4. 关于编译的示例,很值得手写一次; 再次回顾划线内容,还是有很多东西值得更深入去理解(比如编译相关示例),此书值得二刷。
冲着老爷子的名气,匆匆翻完。作为一个只是用Js写过几个玩具的小白,这书其实看不太懂,特别是许多技术细节。这本书是给技术扎实的技术人员写的,通过大师的点拨,或许可以实现对技术理解的阶段性跨越。而对于像我这样的小白,更像是围观看热闹,听大佬侃技术八卦。
既然是译作,我只看到了译者的自嗨。毫不顾及信与达,就是要雅!但雅里又透着俗,这亦俗亦雅,亦黑亦白,俨然一只斑点狗。我是结合着英文原版看的,译者的自我演绎令人震惊,感觉就是踩着“老道”的脚,布着自己的道,借鸡下蛋。每章开头的名言、名句硬要用文言来译,真正地成了微言大义,只是这文言语法堪忧。书中列举的那些点赞、作序大神都堪称当代阿炳,让我很无语!就这样吧!嚯!
这本书对大部分人来说起到的作用并不大,后半段更是倾向于如何在js的糟粕上建立一种新的编程语言。
我不知道这么好一本书前面,放一堆不关痒痛的人,说些不三不四的话,想吹都不知道从哪吹起,到底是谁蹭了谁?
花了一个周末通读了全书,于我而言,只有第2章讲的浮点数、第12章函数中讲的活跃对象及第18章讲的尾调用优化让我有一种学到东西的感觉,还有其他章节比如高精度整数、高精度浮点数、高精度有理数以及最后实现的Neo语言,我相信也是很有价值的,但对只花了两天通读的我,并没有花时间去看这些代码的细节。尤其是最后实现一门语言,对于想学编译原理的同学,可以当作一次lab。另外,虽然是一本翻译的书,但完全看不出是翻译过来的,可见译者的功底,不像有些翻译书,读起来总给人一种别扭的感觉。
Douglas Crockford 是 Javascript 早期的布道者,社区里流传了一些他关于创建 object 和原型链方面的经典代码(让 ECMAScript写入下一版本的那种)。他在Javascript 的发展过程中扮演的角色并非主导者(就像张国荣不能撑起一台戏,但黄晓明可以)。作者是一个很有小聪明的人,时不时撕掉别人的皇帝的新衣。由他发起的最牛一战是他发现了 XML 的废物性质。于是买下 json.org,为 JSON 制定了标准,成为ECMA404(也许是自选的恶趣味编号)和 ISO/IEC 21778。并为 javascript 提供了 JSON.parse 和 JSON.stringify。Douglas Crockford 以前只是个前端程序员,虽然没有参与制定标准(误),但为这门语言攻城略地。这本书就是作为大师的作者写个散文集让你们观摩的——如果 Douglas Crockford 不写这本书的话,他会被脑子里飘荡的想法憋死。需要注意的是,不要企图从本书获得编程技巧上的提升,这本书纯粹由作者本人的偏见(你可以认为是建议)组成,有时候甚至他为了文法说了反话而你不一定能注意。我对作者的所有想法大体上持赞成态度,从某些句子获得启发。 ps,作者其实还是 ECMA 委员会成员。
《JavaScript语言精粹(修订版)》:爱上 JavaScript 的“好” 《JavaScript 悟道》:理解 JavaScript 的“差” 该书列举了 JavaScript 不太合理的“特性”,并介绍了如何避免错误行为。 同时推荐《JavaScript语言精粹(修订版)》,了解 JavaScript 的优点。
太高深了,脑子要过载了,要把程序应用于人类世界,感觉是不可能百分百的纯粹的
即便你写的JavaScript 很烂,你也该知道烂在哪里,如果你不知道,读一读这本书,你会找到答案!