Haskell适合作为第一语言吗?

我曾经接触过命令式语言(C,一些Java),但我会说我没有编程经验 。 因此:把我当作非程序员来对待,Haskell会不会适合作为第一语言?

我对纯数学和CS的兴趣似乎与大多数Haskell教程的意图一致,尽管我可以固有地认识到命令式编程的当前和未来行业价值,但我发现函数式编程的潜力(尽可能多地看起来像这样范式转变)引人入胜。

我想我的问题可以如下进行提炼 - 非程序员是否必须理解命令式编程以欣赏和充分利用函数式编程?

一些参考:

  • 是否有任何关于功能性/声明性或命令式编程作为第一语言学习更容易的研究?

  • 哪些编程语言帮助您更好地理解编程?


  • 我会反对流行的观点,并说Haskell对于典型的第一次程序员来说不是一个很好的第一种编程语言。 对于像Ruby这样的命令式语言的初学者来说,我认为它并不像平易近人。

    其原因是人们不会以功能性的方式来思考世界。 当他们看到一辆在街上行驶的汽车时,他们看到同一辆汽车,状态不断变化。 他们没有看到一系列稍有不同的不可改变的汽车。

    如果您查看其他SO问题,您会发现Haskell几乎从未被提及作为初学者的不错选择。

    然而,如果你是一位数学家,或者已经对编程有足够的了解,以理解函数式编程的价值,我认为Haskell是一个不错的选择。

    总而言之,我认为Haskell对你来说是一个完美的选择,但不适合典型的初学者。

    编辑:感谢有见地的评论。 欧文认为人们以多种模式思考是非常真实的。 这增强了我的信念,即像Ruby这样的多范式语言会更容易接受,并且还具有将学生暴露给命令式和功能性思维的额外好处。 哈斯克尔决不是多范式的。

    Chuck提到了Haskell复杂的类型系统,这是另一个伟大点。 虽然我个人更喜欢静态类型的语言,但使用动态语言可以让初学者忽略这一难题,直到他们足够好奇,才能找出幕后发生的事情。 Haskell的类型系统虽然高雅,但从第1天开始就在您的面前。


    那么,SICP的存在表明功能语言可以作为介绍材料。 然而,Scheme也许比Haskell更加平易近人。

    Haskell似乎因为“难”学习而闻名,但人们往往会忘记经典的命令式编程很难学习。 许多人首先想到了赋值给变量的概念,而令人惊讶的一些程序员从来没有真正适应指针和间接引用。

    哈斯克尔和抽象数学之间的联系并不像人们有时假设的那么重要,但对于那些对数学感兴趣的人来说,查看类比可能会提供一个有趣的奖励。


    Haskell对初学程序员的教学效果至少有一项研究:

  • 第一年纯功能编程教学的风险和好处。 Manuel MT Chakravarty和Gabriele Keller。 Journal of Functional Programming 14(1),pp 113-123,2004。
  • 通过以下摘要:

    我们认为,在新生课程中教授纯函数式编程是不利于课程的,也是对范式的推动。 相反,我们需要把重点放在编程基本技术和计算基本概念的更普遍的目标上。 我们支持这个观点,并在Haskell的几个学期中教授大一年级(最多600名学生)的经验。 这些课程由计算机科学学生和其他学科的学生组成。 我们通过每学期进行调查来系统地收集学生的反馈意见。 本文提供了一种在第一年课程中使用现代功能语言的方法,并在此基础上提倡在此设置中使用功能语言。

    所以,是的,你可以使用Haskell,但你应该关注基本的,通用的技术和基本概念,而不是函数式编程本身。

    对于初学者程序员来说,有很多流行的书籍,它们也使它成为教授这些基本概念的有吸引力的目标,其中包括:

  • “Haskell编程”
  • “函数式编程的工艺”
  • 另外,Haskell已经被广泛教授为第一语言。 - 但请记住,关键是要关注Haskell中阐述的核心概念,而不是教授Haskell本身丰富的大型语言。

    链接地址: http://www.djcxy.com/p/72297.html

    上一篇: Is Haskell suitable as a first language?

    下一篇: Language complement for Delphi