我想学习一种函数式编程语言来查看不同的编程范例。
我的编程背景:Java(我刚刚通过了SCJP考试),一些ruby和非常有限的Rails。我使用bash进行基本的sysadmin任务。我使用的是Ubuntu 9.04。
作为第二个目标,我想用fp向孩子(14-18岁)展示数学和cs是如何相互关联的。这些人非常擅长编程(他们从第一年开始在politechnical高中学习Python和Java)。然而,正如测试所示,他们在数学方面存在困难。离散数学的基本概念。我认为我们可以通过编程来发展他们的数学技能(我可能这可能是我的教师培训论文的主题)。我认为具有非常基本词汇的语言最适合这个项目。
答案 0 :(得分:17)
我投票给Haskell,它具有以下优点:
答案 1 :(得分:12)
我是Scheme的忠实粉丝,尤其是因为best book on it可以免费使用。
答案 2 :(得分:10)
如果你的主要目标是与青少年一起工作,那么使用被证明适用于青少年的功能语言教学法和技术是有意义的,那就是PLT Scheme(又名DrScheme){{3书(也免费在线)。这些家伙从中学到第三学期大学都取得了很好的成绩。他们也有How To Design Programs。
许多受访者喜欢SICP。这是一本很棒的书 - 但不是 学习来自。如果您已经知道Scheme,那么欣赏是一本好书,但是SICP不是关于函数式编程,更多是关于如何在Scheme中实现所有已知的有趣的计算机科学思想。
如果您的主要目标是学习一种新的编程范例,那么Scheme缺少一些对许多功能程序员非常重要的功能:
如果您想要激动人心的想法,请尝试resources for teachers; Haskell使你用新语言编写旧思想变得更加困难。相反,Haskell迫使你思考新想法。除了许多其他资源外,Haskell还可以免费在线。
最后的注释:SO在学习函数式编程方面有很多Real World Haskell。
答案 3 :(得分:8)
Scala和Clojure都运行JVM,因此您可能更熟悉他们的环境。
答案 4 :(得分:7)
我会尝试Scala。它不是纯粹的功能,它允许您使用各种方法 - 但是您的大部分Java知识都应该移植(基于JVM),包括JDK库,它是我见过的最先进的语言之一。
如果您对学习语言功能和扩展语言工作知识感兴趣,我无法想象一个更好的选择。
答案 5 :(得分:1)
我的投票是Scala或F#,目前都可免费下载。
这里的优点是它们是混合范式语言 - 本质上它们是函数式语言,但您也可以使用命令式和面向对象编程。它们还有大型标准库 - Scala位于Java的背面,而F#具有所有.NET,所以你可以很快地编写一些有趣的东西。
Scheme和Haskell都是纯函数式语言,但不幸的是它们的标准库相对较小,因此很难做相对常见的事情,比如解析XML或扫描网页。
答案 6 :(得分:0)
既然您已熟悉Python,为什么不使用它的功能呢?有关详情,请参阅此(draft) HowTo。
答案 7 :(得分:0)
我的问题是,对于你正在使用的青少年来说,哪种方法可能是最好的。如果他们愿意学习新的和不同的东西,那么Scheme作为一种功能语言是一个很好的选择。它就像它们来的一样基本。如果你想保持更熟悉的语法,Haskell可能就是你的答案。
答案 8 :(得分:0)
如果你这样做是为了学习,那么肯定是用SICP计划。这将是艰难和令人沮丧的,如果你没有这方面的经验会让你大吃一惊,但你会学到很多东西。
如果你想在实践中使用函数式编程,那么F#,Scala和Clojure值得一看。