在读这本书之前我也在网上找了一些tutorial之类的东西来看, 但这些材料大多都太聚焦于各种抽象的概念, 每个概念独立成章缺乏融汇贯通很容易让初学者摸不着头脑, 很多toy example虽然看上去很美, 却离实际应用相去甚远.
Real World Haskell, 正如书名所暗示的, 采用了一种紧密联系实际的写作方式, 每一章大多围绕一个实际的编程任务开始, 在代码实现的过程当中, 逐步把各种抽象的概念揉入其中, 在解决问题的过程的同时也让读者理解概念. 如此书第14章讲述Monad, 但当读者认真读到这里时, 实际上就已经在解决实际问题的过程当中掌握了Monad.(这种写法的一个问题是此书只能顺着读, 如果直接跳到Monad这一章就会看得不知所云) 此书第13章Data Structure, 第18章Monad Transformers, 第25章Profiling and tuning for performance 都非常精彩, 远高于网上能找到的相关tutorial.
此书另外一点值得一提的是它不仅介绍了Haskell语言本身, 还用很多篇幅讨论了实践当中应当注意的问题以及经验, 毕竟三位作者都是奋斗在Haskell开发第一线多年的大牛.
Haskell是一门快速发展中的语言, 去年年底出版的书用的是GHC 6.8, 有的地方已经和当前版本的GHC不兼容了, 所以不是所有code都能在现在的GHC下编译通过. 如果遇到这种情况可以去此书在线版本评论, 或者maillist里去找一找解决方案.
Haskell会成为一门主流的语言吗? 我个人认为非常有可能. 毕竟目前的软件开发越来越注重代码的可靠性, 可重用性以及开发效率, 而functional programming在这几点上是要高于目前主流语言的. 就代码执行效率来说, Haskell实际上可以非常快, 读过这本书第25章之后应该就会对这个问题有一个更好的认识:如果performance是bottleneck, 那么haskell能够在不同的粒度上为程序员提供performance tuning的facilities来做开发时间和运行效率之间的trade off, 从语言本身, 到中间码, 再到assembly code, 应该说要比C/C++这样的语言更加灵活.
另外, Haskell似乎很有可能成为多核/并行时代编程的主要解决方案. 如果这个成为现实, 那Haskell离一统江湖的日子就不远了.
re Joyan
不熟悉erlang以及concurrency programming相关的东西.
技术上我并不觉得两者有太大的区别, 不过haskell把pure functional的思想贯彻始终, 所以感觉上更优美. haskell和erlang前者是学术界的产物, 后者是工业界的产物, 所以目前看来erlang的应用是比haskell要多的. 但目前haskell community的热闹程度非常超乎我的想象, 有人开玩笑说: 如果你经常看reddit的programming话题, 你一定会认为haskell是世界上最流行的编程语言. 另外学术界的出身也让haskell争取了很多graduate student, 整个community里面也充满了各种大牛.