欢迎使用Java外的任何一门语言。

这是今天吃饭的时候和同事们在聊天的时候有人提出的,虽然大家都是Java开发,但是都是有心想做出一点改变的。不写Java写啥呢,大家基本都是在面向对象(OOP)思想灌输下成长的程序员,换个C++啥的就没意思了嘛。刚好Java8不是已经有了很好的函数式编程的支持了嘛,对就是你了!函数式编程!来了解一下吧。

常用的面向对象编程(Java)属于命令式编程(Imperative Programming)的编程范式。常见的编程范式还有逻辑式编程(Logic Programming),函数式编程(Functional Programming)。

那么到底什么是函数式编程?简单的回答:一切都是数学函数。函数式编程语言里也可以有对象,但通常这些对象都是恒定不变的:要么是函数参数,要么是函数返回值。函数式编程语言里没有 for/next 循环,因为这些逻辑意味着有状态的改变。相替代的是,这种循环逻辑在函数式编程语言里是通过递归、把函数当成参数传递的方式实现的。 我是怎么开始接触到函数式编程的呢?最初听到这个概念的时候是在面试的时候提到的Haskell语言,然后也就只是知道这个名词,后面回去学习Kotlin的时候发现在反复提及这个概念,但是由于种种原因也没有仔细去看,真正比较深入去了解是在看了Java8的lambda和stream之后,再然后就是今天大概看了的Clojure语言,但是说实话其实自己的理解还是没有很深,就是抱着多学一些总是没坏处的心理在看的,主要可能还是没有实践的机会吧,没有足够的正反馈总是感觉学不到什么东西。