如何将AI能力与大数据技术结合,助力数据分析治理等工作的效率大幅提升,优化大数据引擎的性能及成本? 了解详情
写点什么

函数式编程语言时代已经来临

  • 2017-11-08
  • 本文字数:998 字

    阅读完需:约 3 分钟

英国著名计算机科学家、微软首席研究员及 Haskell 编程语言主要贡献者 Simon Peyton Jones 在一次访谈中说,函数式编程语言的时代已经来临。

函数式编程语言不同于大多数人所熟知的编程范式,它没有了维护全局状态的麻烦,只需要将输入数据传给函数,然后等待输出结果,就这么简单。

Simon 说,“大部分编程语言都是命令式(imperative)的,程序员需要告诉代码先做什么再做什么。而函数式编程语言则不然,它会直接告诉程序员输出的结果是什么。比如 Excel 表格里的方程式,它并不包含一系列的步骤,它只会告诉你某个格子经过计算之后的值是多少”。

Simon 认为,函数式编程语言是开发者验证新想法的有力工具,比如 Haskell。他说,“函数式编程语言有一颗智慧的心,它易于驾驭,只要你善于驾驭它,它就能助你一臂之力”。

在过去几年,函数式编程语言的很多语言特性已经被其他编程语言所模仿,而函数式编程语言领域的新想法也如雨后春笋般不断涌现。

函数式编程语言 Haskell 和 OCaml 几乎成为新想法的摇篮,它们当中有一些已经成为主流编程语言的一部分。垃圾回收和参数化多态就是其中最好的例子。Java 的泛型是在 2000 年初引入的,但它在函数式编程语言中早已存在了 20 年。Linq 的设计思想直接来自 Haskell,F#的 workflow 设计灵感则来自 Haskell 的 monadic I/O story。

随着摩尔定律的放缓,计算机用户开始更多地依赖软件能够并行地运行于多个核芯片之上,以此来获得更快的处理速度。毫无疑问,函数式编程语言特别适合用于并行执行,因为它们很少有机会发生崩溃。

Simon 说,“在使用函数式编程语言时,可以通过避免运算单元之间发生交互来实现并行运算。这就要求程序员对程序各个部分之间的交互细节了如指掌,从而降低 bug 出现的几率”。

函数式编程语言的市场仍然相对较小,但毕竟已经存在了 27 年,它们的用户群还是很强大的。很多公司也开始使用函数式编程语言,比如,Facebook 就在用 Haskell 进行垃圾过滤,而 Bloomberg 和谷歌也在使用 Haskell。

Simon 说,“编写软件最主要的一方面就是要管理好复杂性,而唯一能够阻碍写出好软件的就是我们管理复杂性的能力。函数式编程语言为我们提供了最有力的工具用于管理复杂性,这是命令式编程语言无法比拟的”。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-11-08 18:0010942
用户头像

发布了 321 篇内容, 共 123.0 次阅读, 收获喜欢 132 次。

关注

评论

发布
暂无评论
发现更多内容

再谈任务分解

松花皮蛋me

Java 精益开发

分布式缓存架构

Jeannette

week05-作业

seki

一致性哈希算法Java实现

dapaul

架构师

直接赋值,深拷贝和浅拷贝

Leetao

Python Python基础知识

架构学习第5周作业

乐天

架构训练营week05-总结

尔东雨田

架构师训练营第5周作业

aoeiuvzcs

架构师训练营 week05 学习总结

GunShotPanda

架构师训练营第五周总结

总斌

极客大学架构师训练营

架构师训练营第5周总结

aoeiuvzcs

[架构师训练营] Week02 - 作业

谭方敏

架构师训练营 week05 作业

GunShotPanda

Spring Boot 最流行的 16 条实践解读,值得收藏!

Java小咖秀

spring 学习 Spring Boot SpringBoot 2 经验分享

功利学习法:我为什么要这么功利?

非著名程序员

学习 程序员 程序人生 提升认知

week05-总结

seki

架构师训练营第五周 - 作业

桔子

架构师训练营第五周 - 总结

桔子

架构师训练营 0 期第五周

Blink

小师妹学JVM之:Dirty cards和PLAB

程序那些事

Java JVM 小师妹 性能调优 签约计划第二季

架构师训练营总结 -5

River Tree

极客大学架构师训练营 个人总结

深入理解CAS:以AtomicInteger为例

itlemon

Atomic CAS AtomicInteger 自旋

week5 总结

GAC·DU

架构学习第5周作业总结

乐天

实现一致性 hash 算法

Jeannette

你真的在做持续集成吗?

Winfield

DevOps 持续集成 CI/CD

Homework-我的一致性Hash算法

River Tree

Homework

架构师第五周

Tulane

第四周课后练习

秤须苑

极客大学架构师训练营

创业使人成长系列 (1)- 从失败中学习

石云升

创业 个人成长 成长

Atlassian Team Playbook | OKR 好的不只是逼格

Atlassian

开发

函数式编程语言时代已经来临_函数式编程_薛命灯_InfoQ精选文章