您的浏览历史

JAVASCRIPT语言精髓与编程实践

促销活动
精彩评论

基本信息

编辑推荐

◆ 《大道至简——软件工程实践者的思想》作者周爱民先生的最新作品.
◆ 详细讲述混合式语言JavaScript多种特性..
◆ 深入探讨JavaScript的本质及其应用...

推荐阅读
JavaScript语言精粹..

市场价:¥35.00
4-5星价:¥26.25
[购买] [收藏]
JavaScript & DHTML Cookbook中文版(第二版..

市场价:¥98.00
4-5星价:¥78.40
[购买] [收藏]

内容简介回到顶部↑

本书详细讲述JavaScript作为一种混合式语言的各方面特性,包括过程式、面向对象、函数式和动态语言特性等,在动态函数式语言特性方面有着尤为细致的讲述。本书的主要努力之一,就是分解出这些语言原子,并重现将它们混合在一起的过程与方法。通过从复杂性到单一语言特性的还原过程,读者可了解到语言的本质,以及“层出不穷的语言特性”背后的真相。
  本书主要的著述目的是基于一种形式上简单的语言来讲述“语言的本质及其应用”。本书详细讲述了通过框架执行过程来构造一个JavaScript扩展框架的方法,并完整地讲述了框架扩展中各种设计取舍,因此可以作为学习研究计算机程序设计语言时的参考,用以展示现实系统如何实现经典理论中的各种编程范型。

作译者回到顶部↑

本书提供作译者介绍

周爱民,国内软件开发界资深软件工程师,从1996年开始涉足商业软件开发,历任部门经理、区域总经理、高级软件工程师、平台架构师等职。周爱民先生在软件开发、软件工程、团队建设以及部门管理方面经验丰富,是Borland Delphi产品技术专家,也是Qomo开源项目(JavaScript)的发起者。在JavaScript开发方面,有超过9年的实践经验。

  2003年5月,被美国Borland公司授予“Borland Delphi产品专家”称号,并授予“论坛特别贡献奖”。

  2004年8月,出版软件开发专著《Delphi源代码分析》,被业.. << 查看详细

作者: 周爱民
周爱民(Aimingoo),有十余年的软件开发、项目管理、团队建设的经验。曾任多家软件公司高级程序设计师、项目经理、部门经理、区域总经理等职,现任上海盛大网络平台架构师。目前主要从事软件工程、体系架构和语言基础方面的研究与实践。
■2001年,主持完成的“极光数据处理仓库中心系统”被河南省信息产业厅授予省高新技术产品二等奖。
■2003年,被美国Borland公司授予 “Borland Delphi产品专家”称号。
■2004年,出版《Delphi源代码分析》,被誉为“Delphi领域精品著作”。
■2005年,发布《.. << 查看详细

[同作者作品]
Delphi源代码分析
大道至简:软件工程实践者的思想
JAVASCRIPT语言精髓与编程实践

目录回到顶部↑

第1部分 语言基础
 第1章 十年JAVASCRIPT
  1.1 网页中的代码
   1.1.1 新鲜的玩意儿
   1.1.2 第一段在网页中的代码
   1.1.3 最初的价值
  1.2 用JAVASCRIPT来写浏览器上的应用
   1.2.1 我要做一个聊天室
   1.2.2 Flash的一席之地
   1.2.3 RWC与RIA之争
  1.3 没有框架与库的语言能怎样发展呢?
   1.3.1 做一个框架
   1.3.2 重写框架的语言层
   1.3.3 富浏览器端开发(RWC)与AJAX
  1.4 为JAVASCRIPT正名
   1.4.1 JavaScript
   1.4.2 Core JavaScript
   1.4.3 SpiderMonkey JavaScript
   1.4.4 ECMAScript
   1.4.5 JScript

前言回到顶部↑

语言
语言是一种交流的工具,这约定了语言的“工具”本质,以及“交流”的功用。“工具”的选择只在于“功用”是否能达到,而不在于工具是什么。.
在数千年之前,远古祭师手中的神杖就是他们与神交流的工具。祭师让世人相信他们敬畏的是神,而世人只需要相信那柄神杖。于是,假如祭师不小心丢掉了神杖,就可以堂而皇之地再做一根。甚至,他们可以随时将旧的换成更新或更旧的神杖,只要他们宣称这是一根更有利于通神的杖。对此,世人往往做出迷惑的表情,或者欢欣鼓舞的情状。今天,这种表情或情状一样地出现在大多数程序员的脸上,出现在他们听闻到新计算机语言被创生的时刻。
神杖换了,祭师还是祭师,世人还是会把头叩得山响。祭师掌握了与神交流的方法(如果真如同他们自己说的那样的话),而世人只看见了神杖。
所以,泛义的工具是文明的基础,而确指的工具却是愚人的器物。
计算机语言有很多种分类方法,例如高级语言或者低级语言。其中一种分类方法,就是“静态语言”和“动态语言”——事物就是如此,如果用一对绝对反义的词来分类,就相当于概含了事物的全体。当然,按照中国人中庸平和的观点,以及保守人士对未知可能性的假设,我们还可以设定一种中间态:半动态语言。你当然也可以叫它半静态语言,这个随便你。
所以,我们现在是在讨论一种很泛义的计算机语言工具。至少在眼下,它(在分类概念中)概含了计算机语言的二分之一。当然,限于我自身的能力,我只能讨论一种确指的工具,例如JavaScript。但我希望你由此看到的是计算机编程方法的基础,而不是某种愚人的器物。JavaScript的生命力可能足够顽强,我假定它比C还顽强,甚至比你我的生命都顽强。但它只是愚人的器物,因此反过来说:它能不能长久地存在都并不重要,重要的是它能不能作为这“二分之一的泛义”来供我们讨论。
分类法
新打开一副扑克牌,我们总看到它被整齐的排在那里,从A到K及大小王。接下来,我们将它一分为二,然后交叉在一起;再分开,再交叉……但是在重新开局之前,你是否注意到:在上述过程中,牌局的复杂性其实不是由“分开”这个动作导致的,而是由“交叉”这个动作导致的。
所以分类法本身并不会导致复杂性。就如同一副新牌只有四套A~K,我们可以按十三牌面来分类,也可以按四种花色来分类。当你从牌盒里把它们拿出来的时候,无论它们是以哪种方式分类的,这副牌都不混乱。混乱的起因,在于你交叉了这些分类。
同样的道理,如果世界上只有动态、静态两种语言,或者真有半动态语言而你又有明确的“分类法”,那么开发人员将会迎来清醒明朗的每一天:我们再也不需要花更多的时间去学习更多的古怪语言了。
然而,第一个问题便来自于分类本身。因为“非此即彼”的分类必然导致特性的缺失——如果没有这样“非此即彼”的标准就不可能形成分类,但特性的缺失又正是开发人员所不能容忍的。
我们一方面吃着碗里,一方面念着锅里。即使锅里漂起来的那片菜叶未见得有碗里的肉好吃,我们也一定要捞起来尝尝。而且大多数时候,由于我们吃肉吃腻了嘴,因此会觉得那片菜叶味道其实更好。所以首先是我们的个性,决定了我们做不成绝对的素食者或肉食者。
当然,更有一些人说我们的确需要一个新的东西来使我们更加强健。但不幸的是,大多数提出这种需求的人,都在寻求纯质银弹 或混合毒剂 。无论如何,他们要么相信总有一种事物是完美武器,或者更多的特性放在一起就变成了魔力的来源。
我不偏向两种方法之任一。但是我显然看到了这样的结果,前者是我们在不断地创造并特化某种特性,后者是我们在不断地混合种种特性。
更进一步地说,前者在产生新的分类法以试图让武器变得完美,后者则通过混淆不同的分类法,以期望通过突变而产生奇迹。

二者相同之处,都在于需要更多的分类法。
函数式语言就是来源于另外的一种分类法。不过要说明的是,这种分类法是计算机语言的原力之一。基本上来说,这种分类法在电子计算机的实体出现以前就已经诞生了。这种分类法的基础是“运算产生结果,还是运算影响结果”。前一种思想产生了函数式语言(如LISP)所在的“说明式语言”这一分类,后者则产生了我们现在常见的C、C++等语言所在的“命令式语言”这一分类。
然而我们已经说过,人们需要更多的分类的目的,是要么找到类似银弹的完美武器,要么找到混合毒剂。所以一方面很多人宣称“函数式是语言的未来”,另一方面也有很多人把这种分类法与其他分类法混在一起,于是变成了我们这本书所要讲述的“动态函数式语言”——当然,毋庸置疑的是:还会有更多的混合法产生。因为保罗·格雷厄姆(Paul Graham) 已经做过这样的总结:

序言回到顶部↑

学两种语言.
—《我的程序语言实践》节选—
《程序设计语言——实践之路》一书对“语言”有一个分类法,将语言分类为“说明式”与“命令式”两种。Delphi以及C、C++、Java、C#等都被分在“命令式”语言范型的范畴;“函数式”语言则是“说明式”范型中的一种。如今回顾自己对语言的学习,其实十年也就学会了两种语言:一种是命令式的Pascal/Delphi,另一种则是说明式的JavaScript。当然从语言的实现方式来看,一种是静态的,一种是动态的。
这便是我程序员生涯的全部了。
我毕竟不是计算机科学的研究者,而只是其应用的实践者,因此我从一开始就缺乏对“程序”的某些科学的或学术层面上的认识是很正常的。也许有些人一开始就认识到程序便是如此,或者一种语言就应当是这样构成和实现的,那么可能他是从计算机科学走向应用,故而比我了解得多些。而我,大概在十年前学习编程,以及在后来很多年的实践中,仅被要求“写出代码”,而从未被要求了解“什么是语言”。所以我才会后知后觉,才会在很长的时间里迷失于那些精细的、沟壑纵横的语言表面而不自知。然而一如我现在所见到,与我曾相同地行进于那些沟壑的朋友,仍然在持续地迷惑着、盲目着,全然无觉于沟壑之外的瑰丽与宏伟。..
前些天写过一篇BLOG,是推荐那篇“十年学会编程”的。那篇文章道出了我在十年编程实践之后,对程序语言的最深刻的感悟。我们学习语言其实不必太多,深入一两种就可以了。如果在一种类型的语言上翻来覆去,例如不断地学C、Delphi、Java、C#……无非是求生存、讨生活,或者用以装点个人简历,于编程能力的提高是不大的。更多的人,因为面临太多的语言选择而浅尝辄止,多年之后仍远离程序根本,成为书写代码的机器,把书写代码的行数、程序个数或编程年限作为简历中最显要的成果。这在明眼人看来,无过是熟练的砌砖工而已。
我在《大道至简》中说“如今我已经不再专注于语言”。其实在说完这句话之后,我就已经开始了对JavaScript的深入研究。在如此深入地研究一种语言,进而与另一种全然有别的语言比较补充之后,我对“程序=算法+结构”有了更深刻的理解与认识——尽管这句名言从来未因我的认识而变化过,从来未因说明与命令的编程方式而变化过,也从来未因动态与静态的实现方法而变化过。
动静之间,不变的是本质。我之所以写这篇文章,并非想说明这种本质是什么抑或如何得到,只是期望读者能在匆忙的行走中,时而停下了脚步,远远地观望一下目标罢了。
而我此刻,正在做一个驻足观望的路人甲。...
周爱民

媒体评论回到顶部↑

“这是一本闪烁着思考光芒的作品,它的精彩就在于作者深入的思考。”
                            ——蒋涛
  “停下来,思考才是进步的本质。”
                            ——李维
  “传达了探究工程本质的独立思考精神。”
                            ——谭群钊
评论交流

共有41人开贴评论  52人参与评论  36人参与打分 查看

21人
 58%
用户平均打分
我要写评论 help如何参与评论和打分
7人
 19%
2人
 5%
1人
 2%
5人
 13%

lee576

二级评论员
该会员在china-pub购买过此书 精彩书评
评价等级:  
发表于:2008-7-30 16:31:00
这本书的用词有些晦涩难懂,有点学术化,有些地方需要反复看,再看书中的例子才能明白是怎么回事,希望在语言上更加通俗易懂一点。就深度而言,感觉这本书就一把手术刀,把javascript来了个深度解剖,该书着重的是javascript的语言特点,作者对JS的引擎也非常熟悉,其精深的专业知识令人折服.另外阅读此书的人最好也熟悉delphi语言,作者经常把delphi和javasript作比较,甚至在后面几章中也用delphi中的思想来设计Qomo框架,这对熟悉delphi语言的人是件好事,但对不熟悉的人加高了阅读此书的门槛,不过总的来说,影响不是很大.
回复 ( 1条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得1支)  扔鸡蛋 (得0个)

frankqnj

一级评论员
该会员在china-pub购买过此书 精彩书评
评价等级:  
发表于:2009-2-16 22:39:00
好书. 另外 我觉得 封皮设置很好看. 为什么 大家都说不好看呢?
这本书是讨论 js语言本身 以及各个 js引擎 等 书...
看透彻了 以后对于 编写 高效 的js 代码 非常有帮助! 如果你的需求只是 简单写写片段化的脚本.或者 用js应付工作. 则本书对你帮助不大. 但如果想深入研究 js 并且 有 用js写复杂应用的 需求. 则 你确实需要 这一本来做 理论支撑!
回复 ( 1条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得1支)  扔鸡蛋 (得0个)

felixyan
一级评论员
该会员在china-pub购买过此书 精彩书评
评价等级:  
发表于:2009-5-19 9:26:00
总体评价:这是一本好书,是作者的心血之作。充分展现了作者在javascript语言方面的深厚功底。在javascript领域绝对是一本不可替代的高级读本。

从个人角度来讲我有些不习惯作者的写作风格,局部语句确有拗口之嫌疑。
回复 ( 1条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得1支)  扔鸡蛋 (得0个)

longyaya1314

五级评论员
该会员在china-pub购买过此书
  
发表于:2010-2-9 16:10:00
http://www.china-pub.com/38730
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

assjjwz123

专家级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2010-1-30 17:56:00
我一直觉得周爱民应该是一个文人:博学、健谈、幽默以及写起文章来妙笔生花,无一不向你展示着一份比文人还更加文人的修养和气质。你看他:从池小水浅的河南到水深火热的大上海、从别人眼中的草蟒程序员到盛大架构师的专家级人物、从名不见经传的代码工人到响当当的动态函数式语言编程界的泰山北斗,甚至,从《大道至简》到眼下的这本《JAVASCRIPT语言精髓与编程实践》,
《JAVASCRIPT语言精髓与编程实践》之所以吸引我,其原因就在于此,我讨厌一本书开篇即谈如何如何生产出"Hello World",因为这本应该在生命之始说的一句话容易让我联想到此人要开始谈人生,我宁可你在第一章跟我谈"Fuck World",这或许能令我稍稍安慰觉得适逢知己。《JAVASCRIPT语言精髓与编程实践》没有一开始就"Hello world",哦不能这么说,是没有一开始就讲如何生产出"Hello world"。作者没有落入俗套地从语法开讲,而是首先以自己使用这门语言的亲身经历为视角,以时间顺序如一部编年体史书般娓娓道来,然后在一个水到渠成的地方嘎然而止切入正题,接着......接着当然还是有"Hello world"的,但要比"你可以通过XXXX来输出Hello world"讲得更动听一些。

  当然这只是粗浅的理解,事实上《JAVASCRIPT语言精髓与编程实践》涵盖的有用知识远超过你的想象,这些知识基于作者长期研究这门语言而形成的结果,不懂怎么声明"对象直接量"?不懂怎么列举对象成员?不懂标签的二义性?不懂如何在JavaScript中实现模块化?等等等等,这些貌似高深的知识作者在书中都做了浅显易懂的解释,而事实上,无论是语言组织还是技术含量,这本书都有理由成为国内最好的一本行业教材。
  JavaScript其实也是一种道,觉知总在发生,开悟却难成必然,也许你苦学半年一无所成,也许你code半日即能开悟,而这往往取决于能否触发你灵感的点。说一个我看完《JAVASCRIPT语言精髓与编程实践》这本书之后的趣事,有一天我问一个朋友说:考你一个简单的JS问题:
function (){
//……
}();

function(){
//……
};();
有啥区别?
  朋友是一个JS高手,他想都没想就说:"后面的会出错,前面是一个匿名函数,顺便执行。"我说:"错,你看,区别就在于:后面那段代码比前面那段代码多了一个分号。"一时朋友被我弄得哭笑不得。当然这只是偶然无聊的闲侃,而我想告诉你的是:在《JAVASCRIPT语言精髓与编程实践》这本书里,处处都是这种极富灵性的轻巧的例子。那么,想找寻进入JavaScript神秘世界的灵感?也许在《JAVASCRIPT语言精髓与编程实践》你会有所发现。
您觉得呢? 送鲜花 (得3支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共41条)