说起来,Haskell真是相当冷门而小众的一门语言。在我工作第一年的时候,我平时从网络的一些学习资料上时不时看到有人提到这门语言。那时候的认识就是除了我们平时用的“面向对象语言 (OOP: Object-Oriented Programming)”外,还存在“函数式语言(FP: Functional Programming)”。碰巧,发现Java 8说引入了对函数式编程的支持,可我尝试去学习时确觉得很难理解。比如说lambda函数吧,说是“可以简洁化代码”,举个例子:

public static void test(){

        ExecutorService executorService =  Executors.newFixedThreadPool(3);

        // Java 8之前:传入一个函数需要通过匿名类
executorService.submit(new Runnable() {
@Override
public void run() {
System.out.println("task1 is running...");
}
}); // Java 8: 可以通过lambda
executorService.submit(()->System.out.println("task2 is running..."));
}

我确实觉得不一样,可是不太明白这些到底意味着什么、该怎么用。更不要说闭包(closure),流(stream)这些概念了,只觉得有些神奇、云里雾里。

所以,以后有机会要学学函数式编程的想法就这么埋下了。

不过真正决定好好学学Haskell,还是受编程大神“轮子哥”(@vczh)的影响,他分享过的言论包括:

还有,在博文 <如何设计一门语言 (九)—— 类型> 中提到:

了解编程语言的基本原理并不意味着你一定要成为一名编译器的前端,正如同学习Haskell可以让你的C++写得更好一样,如果你知道怎么设计一门语言,那遇到语言里面的坑,你十有八九可以当场看到,不会跳进去。当然了,了解编程语言的前提是你是一个优秀的程序员,至少要写程序,对吧。于是我这里推荐几门语言是在此之前要熟悉的。编程语言有好多种,每一种都有其代表作,为了开开眼界,知道编程语言可以设计成什么样子,你至少应该学会:

  1. C++
  2. C#
  3. F#
  4. Haskell
  5. Ruby
  6. Prolog

其实这一点也不多,因为只是学会而已,知道那些概念就好了,并不需要你成为一个精通xx语言的人。

遂决定入坑。

最新文章

  1. Dreamweaver 升级问题汇总
  2. 用批处理文件进行TCP/IP设置,方便在家与办公IP切换
  3. listview可见再加载图片
  4. mybatis connection error Cannot create PoolableConnectionFactory (Access denied for user &#39;root &#39;@&#39;local
  5. 自定义动画方法animate
  6. oracle中Blob和Clob类型的区别
  7. Java IO复习 UDP
  8. VsSharp:一个VS扩展开发框架(上)
  9. jQuery显示与隐藏返回顶层的箭头
  10. 利用transform制作幻灯片
  11. css 背景色渐变兼容写法
  12. 学习一下DOM中的cloneNode()与cloneNode(true)的基础知识
  13. 第一章 python介绍、变量、数据类型、流程控制语句等
  14. python字典去重
  15. Eclipse无法自动编译生成class文件
  16. [转载]Browser Link feature in Visual Studio Preview 2013
  17. 用Entityframework 调用Mysql时,datetime格式插入不进去数据库的解决办法。
  18. Unity消息简易框架 Advanced C# messenger
  19. Python web框架——Tornado
  20. 学习HTML 第二节.HTML头部

热门文章

  1. python中杀死线程
  2. BERT安装与使用
  3. clientHeight获取屏幕可视化高度
  4. [原创]python+beautifulsoup爬取整个网站的仓库列表与仓库详情
  5. 201871010133-赵永军《面向对象程序设计(java)》第十六周学习总结
  6. COOKIE&amp;SESSION 入门
  7. JetBrains优惠码分享
  8. USACO wormhole
  9. Redis笔记2-Redis安装、配置
  10. vijos2055 移动金币