Incredible Functional Programming

Experience

这一次我为大家分享的主题是, Incredible Functional Programming. 分享的主要的内容是函数式编程的一些非常基础的东西, 这与我们平时所使用的面向对象编程这种编程范式有着极大的不同. 也希望能给今天的各位带来一些收获或者启发, 而我也能为 Function Programming 的传播与壮大做出自己的一份贡献.

Encounter Functinol Programming

首先呢, 我想说一下我是如何接触到函数式编程这一编程范式的, 在大一下学期的时候, 有几位 Thoughtworks 的工程师, 来为我们讲解如何使用 Rails 建站. 我个人对这几位工程师也是非常的尊敬的, 在一次偶然的交流中, 他多次提出 Functional Programming 这一编程范式, 当时我对它的第一感觉是很好奇, 而且哪位工程师说过一句话, 我只能记住大概的意思:

OOP 现在也被很多人批评, 未来一定是 FP 的天下.

这对于当时只用 Ojective-C 的我来说是不可想象的, 也极大地激起了我的兴趣, 不过, 这件事情虽然没有让我直接转投 FP 的怀抱但是, 我也对 FP 有了很深的印象, 我想: 我就是那时被传教的吧, 也让我之后陷入了这个大坑中.

在之后的学习中, 我学习了 黑客与画家 这本书, 书中提到了对 Lisp (Lisp 是第一个函数式编程语言, 其名称源自列表处理器(英语:List Processor)的缩写) 的推崇, 以及他们使用 Lisp 进行开发的效率是当时其他公司的几十倍, 这对于当时使用 OOP 的我是一种巨大的震撼.

EXTREMLY INCREDIBLE!

Learn Functional Programming

随着我对 Lisp 的了解, 我也开始学习 Lisp 的方言, 也就是 Scheme. 当时看的书呢, 也是倍受推崇的 SICP(计算机程序的构造和解释), 这也是到目前为止对我影响最大的书, 第一次颠覆了我对编程这项活动的认识, 而我也感觉到了 Lisp 的神奇, 而我们 Programmer 实际上就是魔术师. 我们使用代码当做我们的咒语, 控制着计算机做出各种神奇的事情.

而在学习 Lisp 之后, 我有参加了 Coursera 中的一门公开课, Programming Language, 在这门课中, 我学习了 Standerd ML, 而且学习了各种各样的编程范式和编程语言 Ruby SML Racket, 以及它们的区别和联系, 而且写了人生中第二个解释器. 这门课也是我在 Coursera 唯一一门从头追到尾并且完成的课程. 感觉跟下来收获还是非常大的.

之后在几个月前, 我又开始学习了 Haskell, 了解了 Haskell 这门语言的抽象能力是多么的强大, 多么的难学, 概念多么的难以理解, 不过我还是选择学习 Haskell 这门编程语言, 而我学习的最大理由就是他太好玩了, 在 Learn you a Haskell for Great Good 这本书中的前言写到:

Haskell 很有趣, 这就够了.

然后就是在 HackerRank 上隔三差五刷两道题解解闷, 顺便陶冶一下情操. 后来我有接触到了 Scala, 不过看着那个丑陋的 IDE 和字体我果断放弃了. 目前就是闲来无事刷刷题, 看看博客, 读读论文. 这基本上就是我到目前为止学习函数式编程的全部经历了.

Draveness

继续阅读此作者的更多文章

comments powered by Disqus