频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

22.4.2 函数式编程、公式化与数学模型

作者: 月影 出处:清华大学出版社  2008-06-19 11:42    砖    好    评论   进入论坛
阅读提示:《JavaScript王者归来》第二十二章介绍的是闭包与函数式编程,本小节为大家介绍的是函数式编程、公式化与数学模型。

22.4.2 函数式编程、公式化与数学模型

同面向对象的“道法自然”相比,函数式更贴近于数学,它是数学王国的代言人。而数学本身,是对自然界的一种“强力的抽象”,所以,一般我们认为,函数式编程表现出比面向对象更强的“抽象性”。我们说数学是一种“先验”科学,它对自然界的抽象是“与生俱来”的,目前已知的任何自然规律,都近乎完美地服从于数学定律。有意思的是,古往今来,数学定律的发现,往往要先于自然规律的发现。这样看起来似乎违背原离,不像是数学替自然规律说话,倒有点像是自然规律依附于数学王国了,不过,这正是数学魅力的所在。

我们说函数式是公式化的语言,它具有明显的数学特征。例如,在前面的例子中,我们已经见到过,JavaScript里可以这么定义抛物线方程(族):

例22.9 抛物线方程

 <html>
<head>
<title>Example-22.9 抛物线方程</title>
</head>
<body>
<script>
<!--
function parabola(a, b, c) //构造抛物线方程
{
return function(x)
{
return a * x * x + b * x + c;
}
}
var p1 = parabola(2,3,4); //抛物线y = 2*x^2 + 3*x + 4
alert(p1(15));
-->
</script>
</body>
</html>

仔细研究它,你会发现,这种函数定义方式,同数学语言的描述方式几乎完全一致!

这种数学形式上的一致性,在传统的过程式语言中,几乎是无法想象的。如果不利用JavaScript 的函数式特性,要定义和调用抛物线方程,只能以下面这种丑陋的方式:

function parabola(a, b, c, x)
{
return a * x * x + b * x + c;
}
var y = parabola(2, 3, 4, 15);
如果用面向对象来表示,则问题又有一点点差别:
 function Parabola(a, b, c)
{
this.evaluate = function(x)
{
return a * x * x + b * x + c;
}
}
var p1 = new Parabola(2,3,4); //抛物线y = 2*x^2 + 3*x + 4
alert(p1.evaluate());
面向对象把抛物线当作了“对象”,从自然界的角度来讲,这没有什么问题,然而从数学的角度来讲,它把问题复杂化了。抛物线本来就是一个方程(函数),不需要再定义成一个对象,然后用蹩脚的evaluate()来进行求值。
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   
专题
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
Java编程开发手册
Java基础教程
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
技术人求职简历完备手册
技术人求职简历完备手册
开源虚拟化技术Xen
开源虚拟化技术Xen
Windows Server 2008专题
Windows Server 2008专题
· Windows Server 2008专..
· 隐私保护技术探讨
· 绿色IT人健康生存手册
· 网络工程师职业规划与..
· 杀毒软件评测专题
· 访问控制列表(ACL)介绍
· Vista SP1对决XP SP3
· 华为员工自杀频频拷问..
· 2008中国互联网大会
· 微软出价446亿美元收购..
· 勇闯IT培训黑色围城
· CISSP认证成长之路
· 解析35岁技术人的价值..
· LAMP技术精解
· AMD Phenom三核处理器..
· 充电计划之热门IT认证..
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Apache技术专题
· 国际文档格式标准开战
· 路由器设置与口令恢复
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
· 了解统一威胁管理(UTM)..
· 专题:AIX操作系统管理..
· 访问控制列表(ACL)介绍
· 反垃圾邮件技术应用
· ASP.NET 2.0基础开发指..
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· 三层交换技术专题
· Apache技术专题
· 企业数据恢复指南
· 路由器设置与口令恢复
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用
· 访问控制列表(ACL)介绍
· PHP开发应用手册
· 专题:AIX操作系统管理..
· 交换机故障解决指南
· 三层交换技术专题