为什么函数式编程在Java中很危险?

发表于:2013-1-23 09:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:夏梦竹    来源:51Testing软件测试网采编

  摘要:函数式编程这个不温不火的语言由来已久。有人说,这一年它会很火,尽管它很难,这也正是你需要学习的理由。那么,为什么函数式编程在Java中很危险呢?也许这个疑问普遍存在于很多程序员的脑中,作者Elliotte对此发表了一些见解,我们一起来看看他是怎么说的。

  在我的日常工作中,我身边的开发者大多是毕业于CS编程顶级院校比如MIT、CMU以及Chicago,他们初次涉及的语言是Haskell、Scheme及Lisp。他们认为函数式编程是一种自然的、直观的、美丽的且高效的编程样式。但奇怪的是,我和我的同事并没有为Haskell、Scheme、Lisp、Clojure、Scala而编程,这个行业里的绝大部分人都会使用PythonRuby、Java或C#等编程,因为它们用起来比较顺手。但在Java中,函数式编程却是低效且危险的。

为什么函数式编程在Java中很危险呢?

  每隔几个月,我都会在调试中发现问题,究其原因最终可追溯到滥用函数的想法以及编程算法,更重要的原因是这个虚拟机无法创建这种编程样式。

  最近Bob Martin想出一个很好的例子并说明了原因。Clojure (一个真正的函数式编程)返回到25整数列表:

(take 25 (squares-of (integers)))

  此代码运行和响应速度都很快,输出结果:

(1 4 9 16 25 36 49 64 … 576 625)

  现在,假设我们想要在Java中重写,如果我们以Gosling的方式来编写Java,那么该代码是简单、快速且明显的:

for (int i=1; i<=25; i++)
System.out.println(i*i);
}

  但是,现在假设我们让它变得多功能性,在特定的假设范围内重置上面的Clojure样式:

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号