首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我为什么要学haskell?

我为什么要学haskell?
EN

Stack Overflow用户
提问于 2010-07-04 18:03:51
回答 8查看 39K关注 0票数 49

可能重复: Haskell与现实世界中的过程编程

有几次我听到人们说“每个程序员都应该知道Haskell",”如果你不认识haskell,你就不是一个程序员“等等。然而,我不太确定我是否应该费心去试着简单地理解这种语言。与翻译打交道(以获得对基础知识的直观理解)至少需要几天(如果不是几个星期),而且我不确定结果是否值得。

一点背景(了解我的知识)

我从小就开始用可编程计算器编程(大约在10到13年前),然后转到basic,然后转到非x86程序集(重新定义乘法和除法,编写自修改鼠标驱动程序很有趣),pascal,delphi,现在我几乎完全使用C++。熟悉unix,可以用python编写软件,如果我附近有一本参考书,可以编写任何类似于C++或Pascal的软件(例如块、类似的流控制等等)。专业化是3D编程和着色器。“水中的鱼”具有低级操作(C风格的内存分配、指针),不太适合极端的OOP方法(即为了拥有类而创建类时)。几乎完全是自学的。也就是说,我肯定不是新手,但有些地方我可以改进。

所以..。在这一点上,我能从研究Haskell中得到什么呢?据我所知,这种语言并没有被广泛使用,因此它可以与之接口的库可能更少(就像delphi编程一样--如果您真的愿意,可以用Delphi进行DirectX编程,但是您不能用它编写3 3dsmax/maya插件(理论上可能是可能的,但肯定不会很容易))。我也不认为我将很容易将一段Haskell代码插入到游戏引擎中。

那么,我能从中得到什么样的有用的知识呢?

我不会相信“如果你学了另一门语言,你可能会学到一些可能有用的东西”的论点。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-07-04 18:13:45

(这当然是一个重复的问题,但我现在找不到一个。)

学习它是为了学习纯函数式编程,这迫使你以一种完全不同的方式做许多事情。你有了一种新的思维方式。没有状态的编程?没有效果的编程?一切都很懒?有类型推理的疯狂类型系统?蒙太斯到底是什么?你的头脑会被反复吹嘘,但最终你会从函数式编程中拿出新的观点/技术,而这些新的观点/技术在没有完全成熟的Haskell的情况下是很难掌握的。

试图明确的问题是,试图告诉一个非Haskeller他们会从Haskell那里学到什么,就像试图向一个盲人解释“绿色”的颜色一样。

票数 97
EN

Stack Overflow用户

发布于 2010-07-04 18:44:09

几年前,许多人惊讶地发现其中一门入门课程是用Haskell作为编程语言来教授的!虽然我没有使用Haskell的经验,但我有一些Lisp和其他函数式编程语言的背景。

我认为这则轶事表明,在你最不期望的时候,知识是如何有用的。

从更实际的角度来说:您可能已经注意到,几年前CPU的速度撞上了一道墙,而现在从计算机中获取更多性能的最实际方法是安装多个CPU。现在,您所知道的大多数(如果不是全部的话)编程语言本质上都是单个任务,并且受制于冯·诺依曼瓶颈。一个明显的解决方案是并行编程,但如果程序的并行部分最终处于共享状态(即内存),这将是非常痛苦的,而且这种情况最常见。

事实证明,函数式编程是一种风格,它允许您在很大程度上规避具有共享状态的并行编程的问题。换句话说,用FP风格编写程序是相当容易的,这些程序是“自然”线程安全的,适合并行处理。根据语言、编译器和硬件的不同,您甚至可以找到(就像我最近所做的)程序中并行运行的部分,而从来没有为并行性做过任何明确的编码。

我经常出错,但我的猜测是,随着并行编程变得更加重要和困难,函数式编程将成为未来最热门的编程范式之一。Haskell可能不是我所选择的语言--我个人最喜欢的语言是Clojure --但是看一看或者更多的FP语言可能是值得的。

票数 44
EN

Stack Overflow用户

发布于 2010-07-04 18:09:17

我也不认为我将很容易将一段Haskell代码插入到游戏引擎中。

如果你只想写3D游戏引擎,那么也许学习Haskell就没有多大意义了。

如果你想成为一个全面的程序员,能够在多个范例中编程,而且你目前只懂C类语言,那么它值得一看。

每次你学习一种非常不同的新语言时,学习下一种语言就更容易了,因为你不仅记住了新的语法,还学习了不同的编程思维方式。如果您尝试了一种新的语言,并且您看到了一些新的特性,如果您能够将它与您已经知道的语言中的其他特性相关联,您将更快地理解它。您了解的语言越多,这个新特性就越有可能与您以前看到的类似。

在工具箱中有许多可用的工具也很方便。有些问题用一种语言比另一种语言更好地解决。如果你有5种非常不同的语言,那么你可以为每个问题选择最好的语言。如果你只知道2到3种非常相似的语言,那么有些问题很容易解决,但是其他的问题可能比你使用的语言更难解决。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3175656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档