Jiahonzheng's Blog

Haskell--函数式编程语言

字数统计: 670阅读时长: 2 min
2017/12/25 Share

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

在微软俱乐部招新考核时,我也很幸运地接触到函数式编程语言——Haskell,在本篇博文,笔者给大家科普一下 Haskell。

网络不给力哦

Haskell 的由来

在早期函数式编程发展的近几十年里,在涌现出了很多相关理论的同时,也出现了很多函数式编程语言。1987 年,与会者在 FPCA 会议上,就当时函数式编程语言种类过多、语法相似且大多数效率不高的现状进行了讨论,于是决定设计一个“全能”的函数式编程语言,也就诞生了 Haskell。

为什么要学 Haskell

其实我们并不是学习 Haskell ,而是学习函数式编程思维。

程序更为安全

不像命令式编程语言中的变量,纯函数式编程语言的变量是不可变的(immutable)。由于没有了可变量(Mutable Variable)的声明,从而减少了状态变量的声明与维护,使得程序更为安全。

适合高并发多线程任务

相比命令式编程,函数式编程少了非常多的状态变量的声明与维护,天然适合高并发多现成并行计算等任务,这也是函数是编程近年又大热的重要原因。

代码可读性更强

这里给出《Haskell 趣学指南》上关于快排的 Haskell 实现。

1
2
3
4
5
6
quickSort :: Ord a => [a] -> [a]
quickSort [] = []
quickSort (x:xs) =
let smallerSorted = quickSort [a | a <- xs, a <= x]
biggerSorted = quickSort [a | a <- xs, a > x]
in smallerSorted ++ [x] ++ biggerSorted

尽管上述代码,并不是“完全正确”的最优快速排序实现,但我们可以从可读性极强的代码中感受到一种跟以往命令式编程截然不同的编程思维方式和方法。

行业影响与前景

在过去几年,函数式编程语言的很多语言特性已经被其他编程语言所模仿,垃圾回收和参数化多态就是其中最好的例子。Java 的泛型是在 2000 年初引入的,但它在函数式编程语言中早已存在了 20 年。

近几年来,函数式编程越来越受关注,微软首席研究员 Simon Peyton Jones 在一次访谈提到:函数式编程语言时代已经来临。

CATALOG
  1. 1. Haskell 的由来
  2. 2. 为什么要学 Haskell
    1. 2.1. 程序更为安全
    2. 2.2. 适合高并发多线程任务
    3. 2.3. 代码可读性更强
  3. 3. 行业影响与前景