JavaScript%E8%AF%AD%E8%A8%80%E7%B2%BE%E9%AB%93%E4%B8%8E%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5

JavaScript%E8%AF%AD%E8%A8%80%E7%B2%BE%E9%AB%93%E4%B8%8E%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5

ID:33526688

大小:3.47 MB

页数:611页

时间:2019-02-26

JavaScript%E8%AF%AD%E8%A8%80%E7%B2%BE%E9%AB%93%E4%B8%8E%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5_第1页
JavaScript%E8%AF%AD%E8%A8%80%E7%B2%BE%E9%AB%93%E4%B8%8E%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5_第2页
JavaScript%E8%AF%AD%E8%A8%80%E7%B2%BE%E9%AB%93%E4%B8%8E%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5_第3页
JavaScript%E8%AF%AD%E8%A8%80%E7%B2%BE%E9%AB%93%E4%B8%8E%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5_第4页
JavaScript%E8%AF%AD%E8%A8%80%E7%B2%BE%E9%AB%93%E4%B8%8E%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5_第5页
资源描述:

《JavaScript%E8%AF%AD%E8%A8%80%E7%B2%BE%E9%AB%93%E4%B8%8E%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、动态函数式语言精髓与编程实践(JavaScript版)周爱民著前言1.1.语言我相信,在这个世界上无时不刻地在产生着新的语言。例如我刚才叫住我脚下的这只小猫,我喊了一声“嗨”,它就停下来望着我。如同我与猫一样,你可能正在用另外的一种语言——声音的,或者符号的——与另外一种个体进行着交流。无论这种个体是否是一个鲜活的生命,还是一堆电器元件,如果你们需要交流,那么唯一的方式就是创生一种语言,或者使用两种个体既有的语言之一进行交流。我们一边在创生着与计算机交流的语言,一边也不得不用既有的语言与之交流。这就是现

2、状。这与此时我跟脚下的猫,或者数千年前的铸剑师与一柄剑之间交流时的情状,是完全一样的。语言是一种交流的工具,这约定了语言的“工具”本质,以及“交流”的功用。“工具”的选择只在于“功用”是否能达到,而不在于工具是什么。在数千年之前,远古祭师手中的神杖就是他们与神交流的工具。祭师让世人相信他们敬畏的是神,而世人只需要相信那柄神杖。于是,假如祭师不小心丢掉了神杖,就可以堂而皇之地再做一根。甚至,他们可以随时将旧的换成更新或更旧的神杖,只要他们宣称这是一根更有利于通神的杖。对此,世人往往做出迷惑的表情,或者欢欣

3、鼓舞的情状。今天,这种表情或情状一样地出现在大多数程序员的脸上,出现在他们听闻到新计算机语言被创生的时刻。神杖换了,祭师还是祭师,世人还是会把头叩得山响。祭师掌握了与神交流的方法(如果真如同他们自己说的那样的话),而世人只看见了神杖。所以,泛义的工具是文明的基础,而确指的工具却是愚人的器物。计算机语言有很多种分类方法,例如高级语言或者低级语言。其中一种分类方法,就是“静态语言”和“动态语言”——事物就是如此,如果用一对绝对反义的词来分类,就相当于概含了事物的全体。当然,按照中国人中庸平和的观点,以及保守

4、人士对未知可能性的假设,我们还可以设定一种中间态:半动态语言。你当然也可以叫它半静态语言,这个随便你。所以,我们现在是在讨论一种很泛义的计算机语言工具。至少在眼下,他(在分类概念中)概含了计算机语言的二分之一。当然,限于我自身的能力,我只能讨论一种确指的工具,例如JavaScript。但我希望你看到的是计算机编程方法的基础,而不是某种愚人的器物。JavaScript的生命力可能足够顽强,我假定它比C还顽强,甚至比你的生命都顽强。但他只是愚人的器物,因此反过来说:它能不能长久地存在都并不重要,重要的是它能

5、不能作为这“二分之一的泛义”来供我们讨论。1.2.分类法新打开一副扑克牌,我们总看到它被整齐的排在那里,从A到K以及大小王。接下来,我们将它一分为二,然后交叉在一起;再分开,再交叉……完成了洗牌之后,我们便可以拿它新开一局了。但是你是否注意到在这个过程中:牌局的复杂性,其实不是由“分开”这个动作导致的,而是由“交叉”这个动作导致的。所以分类法本身并不会导致复杂性。就如同一幅新牌只有四套A~K,我们可以按十三牌面来分类,也可以按四种花色来分类。当你从牌盒里把他们拿出来的时候,无论他们是以哪种方式分类的,这

6、幅牌都不混乱。混乱的起因,在于你交叉了这些分类。同样的道理,如果世界上只有动态、静态两种语言,或者真有半动态语言而你又有明确的“分类法”,那么开发人员将会迎来清醒明朗的每一天:我们再也不需要花更多的时间却学习更多的古怪语言了。然而,第一个问题便来自于分类本身。因为“非此即彼”的分类必然导致特性的缺失——如果没有这样“非此即彼”的标准,就不可能形成分类。而特性的缺失又正是开发人员所不能容忍的。我们一方面吃着碗里,一方面念着锅里。即使锅里漂起来的那片菜叶未见得有碗里的肉好吃,我们也一定要捞起来尝尝。而且大多

7、数时候,由于我们吃肉吃腻了嘴,因此会觉得那片菜叶味道其实更好。所以首先是我们的个性,决定了我们做不成绝对的素食者或肉食者。当然,更有一些人说我们的确需要一个新的东西来使得我们更加强健。但不幸的是,大多数提出这种需求的人,都在寻求杀死人狼的纯质银弹或者混合毒剂。无论如何,他们要么相信总有一种事物是完美武器,或者更多的特性放在一些就变成了魔力的来源。我不偏向两种方法之任一。但是我显然看到了这样的结果,前者是我们在不断地创造并特化某种特性,后者是我们在不断地混合种种特性。更进一步的说,前者在产生新的分类法以试

8、图让武器变得完美,后者则通过混乱不同的分类法,以期望通过突变而产生奇迹。二者相同之处,都在于需要更多的分类法。函数式语言就是来源于另外的一种分类法。不过要说明的是,这种分类法是计算机语言的原力之一。基本上来说,这种分类法在电子计算机的实体出现以前,就已经诞生了。这种分类法的基础是“运算产生结果,还是运算影响结果”。前一种思想产生了函数式语言(如Lisp)所在的“说明式语言”这一分类,后者则产生了我们现在常见的C、C++等语言所在的“命令式语

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。