==函数编程范式更适合用于Map/Reduce和大数据模型

Scala更适合用于大数据处理和机器学习
http://www.infoq.com/cn/news/2014/10/data-eng-learn-scala

函数编程范式更适合用于Map/Reduce和大数据模型,它摒弃了数据与状态的计算模型,【着眼于函数本身,而非执行的过程的数据和状态的处理】。函数范式逻辑【清晰、简单】,非常适合用于处理基于不变数据的批量处理工作,这些工作基本都是通过map和reduce操作转换数据后,生成新的数据副本,然后再进行处理。

而大多数的Scala数据框架都能够把Scala数据集合API和抽象数据类型相统一,比如Scalding中的TypedPipe与Spark中的RDD都有相同的方法,包括map、flatMap、filter、reduce、fold和groupBy,这样使用Scala来处理就更为方便。开发者只需要学习标准集合就可以迅速上手其它工具包。


数据库即值
http://www.infoq.com/cn/news/2013/06/database-value

在QCon New York 2013上,Rich Hickey做了一次话题为函数式数据库的演讲。Hickey因创造了Clojure编程语言而蜚声业内,目前他正在开发函数式数据库Datomic。在他的演讲中,Hickey表示函数式语言中的两个非常有用的属性:数据即值(data as values)和纯函数(译者注:Pure Functions

Hickey以反问的口吻向观众说道:“如果将所有这些函数式的属性应用到数据库上岂不是很好?”在这样的一个世界里,整个数据库将可以代表一个(不变)值,而【查询就好比是以一个或多个数据库作为参数的函数】。这样一来,数据库便可以在多个线程间被安全的传递,而在相同数据库值上进行的相同查询将会产生相同的结果。自然地,由于一个不可变的数据库对大家来说并不是很有用处,所以我们将会使用事务处理器(transactor)来产生变更,更准确地说是:基于先前的数据库值产生新的数据库值。给定事务处理器一个数据库值和变化的数量,它将会返回一个新的数据库值。程序可以在任何时间向数据库索取它的当前值。Datomic 就是一个拥有这些属性的数据库。


你可能感兴趣的:(==函数编程范式更适合用于Map/Reduce和大数据模型)