计算机大师Dijkstra谈Haskell和Java
| 2014-03-14 09:21 评论: 37 分享: 1
2001年,出生于荷兰的计算机大师、 图灵奖获得者Edsger W. Dijkstra给德州大学预算委员会写信,力劝不要将计算机入门课程改为Java。这封信的PDF版可以从这里下载。不幸的是,学校最终还是用Java课程替换了Haskell。相关联的,麻省理工的计算机程序结构和分析课程(6.01)中的Scheme语言也被Python语言替换掉。
致预算委员会成员
我写这封信给你们是因为有谣言说,大学教学中的计算机入门课程将不再使用函数式编程语言Haskell,而是使用命令式语言Java,鉴于此,我认为预算委员会有责任去阻止这项错误的决定。
你们知道,这不是小事。其它州的同行经常好奇于我如何能在德州奥斯汀这样的地方生存下来,他们都以为德州顽固的保守主义必然造就了同样顽固的平庸。我的回答通常是,“不要担心,教育系统还是一个比较开明的地方,例如在计算机入门课程上,我们教新生Haskell语言”;他们的反应起初通常都是怀疑,然后是嫉妒——大多是因为他们的大学课程无法再从Pascal语言向C++或Java这样的语言的转变中恢复回来。
我偏爱函数式编程的一个非常现实的原因是,对于新生的课程,大多数学生都已经对命令式编程有一定的熟悉。让他们面对新奇的函数式编程,能立即传达一个信息:编程比他们想象的要丰富的多。并且,他们很快就会观察到,对于他们用高中时学到的编程知识很难表达或无法表达的问题,函数式编程能提供优雅的解决方案。
而选择函数式编程的一个最根本的原因是,相比起命令式编程语言,它更容易当成数学对象来使用,在教学中你可以用它精确的解释程序是什么。另外一个优势是函数式编程的“延迟执行(lazy evaluation)”,它提供了一个环境来防止操作性的推理[1][2]。
最后,在Haskell语言跟Java的具体方面对比中,尽管Haskell不完美,但仍然比Java好几个数量级,Java就是一个大杂烩(它是通过大范围的广告和销售员夸张的宣传才达到它的商业接受)。总得来说,这事非常的糟糕,业界把有目共睹的低劣的设计当作了“事实”标准。我个人的认为,大学里应该让更健康的编程方式存在。
不仅仅是小提琴能塑造小提琴家,我们全都被我们使用的工具塑造,而在编程语言方面,影响是潜移默化的:它们塑造我们思考的习惯。这使得第一种编程语言的选择非常的重要。我们应该把入门课程当成一种工具来创造一种为计算机科学教学服务的文化,而不是去强迫丢掉过去的那些知识(如果非要这样,那我们的过去算是什么,成了永远的遗物)。这种选择担负着对我们的大学生的沉重责任,这也就是为什么这种事不能让某个什么主席来决定,而是应该由预算委员会来决定。这种事情不能让什么公务员或政客办理,这里需要有远见的政治家。
Austin, 12 April 2001
Edsger W. Dijkstra
[英文原文:Dijkstra on Haskell and Java ] via : http://www.vaikan.com/dijkstra-on-haskell-and-java/
- 微博评论 2014-03-16 09:34 1 赞 回复
- 更烂了 //@milzki:[偷笑]//@专业8楼: //@Linux中国:[偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-16 07:00 1 赞 回复
- 哈哈哈哈。//@Linux中国: [偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 21:34 2 赞 回复
- 我还是喜欢c和汇编,其他的都垃圾!//@Linux中国:[偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 21:34 2 赞 回复
- [偷笑]//@专业8楼: //@Linux中国:[偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 20:29 1 赞 回复
- 很多同学依然乐此不疲学习java,这玩意儿的确是一个烂语言。说什么可移植什么的,用C语言照样可以移植到Linux//@Linux中国: [偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 20:29 2 赞 回复
- //@Linux中国:[偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 20:29 1 赞 回复
- //@Linux中国:[偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 18:28 1 赞 回复
- //@南宁二中e-社: 求别黑//@Linux中国: [偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 16:26 2 赞 回复
- 现在山大的大一新生还是学java么…[右哼哼]//@Linux中国:[偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 16:26 1 赞 回复
- Java is an over-OO language with way too many classes, interfacese and design patterns. Not to mention the annoying names for variable.//@Linux中国:[偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 16:26 1 赞 回复
- 求别黑//@Linux中国: [偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 16:26 1 赞 回复
- 函数式确实舒服……… //@Linux中国:[偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-15 16:26 2 赞 回复
- //@Linux中国: [偷笑] //@国风离骚牛:13年后的今天,Java和Haskell都有了巨大的变化。但有一点没变:Java依旧是一个烂语言
- 微博评论 2014-03-14 10:42 2 赞 回复
-
工具塑造了使用工具者,这是要彻底变成培养农民工的的节奏。强烈建议德州大学计算机专业同学来我帝国蓝翔学校! :-)
—— 2014-3-14 10:17
- 微博评论 2014-03-14 10:42 1 赞 回复
-
工具塑造了使用工具者,这是要彻底变成培养农民工的的节奏。强烈建议德州大学计算机专业同学来我帝国蓝翔学校! :-)
—— 2014-3-14 10:17