这些天我正在认真学习函数式编程。

虽然我对Haskell以及它似乎提供的可能性感到非常兴奋,但我现在也可以看到它需要一段时间来学习。在关于如何学习Haskell 的SO问题中,一个答案表明,如果不是,则需要几个月的时间几年实际上“掌握”它

现在,我知道C,PHP,一些面向对象的东西等等。并且被告知Haskell在“现实世界”中没有被广泛使用,我是否会更好地提高我的常规技能我知道哪些语言?哈斯克尔值得挣扎吗?

关于关于为什么人们认为函数式编程会遇到的问题结论似乎是功能性编程将“流行”。但是程序编程肯定会保持领先,对吗?

编辑:keparo很好地澄清了我的问题:与过程语言相反,研究Haskell和函数式编程范例对我来说是否有价值?

有帮助吗?

解决方案

Haskell并不像人们想要学习那么难。 Haskell打开了一个你从未知道的新世界。学习它和任何其他语言一样有价值。您可能找不到要求您进行Haskell编程的工作,但这是否真的意味着语言没有价值?

Haskell会教你很多新东西,它会告诉你如何用你/做/用的语言更好地编程。你可以利用它在业余时间做自己的个人项目。

Haskell在“现实世界”中的用处并不多。如果你定义“真实世界”作为“现金发生器”。因此,如果这是您的目标,那么您可能需要重新考虑目标:p

另外,我真的不喜欢选择的那部分“如何学习haskell”。回答。掌握任何语言需要几个月到几年,而不仅仅是Haskell。取决于您如何定义“主”。我可以使用Haskell达到相当高的效率,而且我只学习了一个月,而且我一直都很慢。

其他提示

如果不出意外,学习Haskell提供的思维方式的改变将在您必须回到使用仍在工作场所中使用的那些程序语言时帮助您。

功能范例开始进入各种主流应用程序和语言 - 甚至C ++也将在C ++ 0x中添加一个(残缺的)lambda。

您可能还想查看一些混合语言,如Scala或OCaml。 Scala正在Twitter上使用,OCaml正在Jane's Street的金融交易平台中使用。

在专业设置中,你可能不应该期望在任何地方使用Haskell几乎与C系列语言一样。如果问题是对你研究Haskell和函数式编程范例是否有价值,答案是肯定的。您可以将对编程的丰富理解应用到您的所有工作中。

我学习了Haskell,因为它是迄今为止我用Scala,Clojure,OCaml和Scheme尝试过的最好的函数式语言,但我并没有真正期望将它用于工作。

事实证明,它对于那些对团队来说太小而且在Java中过于耗时的奇怪工作来说是完美的。到目前为止,我已经将它用于ad-hoc数据迁移,即将CSV导出转换为另一种格式,XML的批量转换(HXT比XSLT更简洁,更强大),屏幕抓取互联网和软件项目估算,包括建模风险使用概率monad并使用回溯产生最佳甘特图。这都是需要做的真正的工作,我甚至不愿意尝试用Java来做,因为这将是一项为期数日的工作。

我现在使用它而不是Excel来进行任何模糊的数学运算,因为在文本编辑器中创建haskell源代码列表比在Excel中键入值更加努力。一旦进入haskell,我就可以做各种各样的魔法,比如Excel不能做的回溯,概率分布等。如果我需要图表,那么我将值吐出为CSV(2行代码)并将它们加载到Excel中。

唯一的缺点是需要几个月才能熟练,但值得恕我直言。

  

与过程语言相反,研究Haskell和函数式编程范例对我来说是否有价值?

如果拥有扩展的技能组合是有价值的,那么:是的。

您可能会选择一个优势:并行和并发编程。过去的程序语言往往没有明确的副作用概念,因此在其中编写并行程序很难正确执行。功能语言(特别是那些限制像Haskell这样的副作用的语言)对于高效的并行编程有更多的说法。

拥有这种技能不会伤害你。

我可以看到,如果非功能代码非常容易使用,那么函数式编程在生产环境中可能是一个优势。当我们想出F#时,MS也可以看到它。

由于它们都编译为IL,因此您可以处理要求功能方法功能的问题,并在程序代码中非常轻松地使用这些解决方案。

通过这种方式,功能代码可以轻松地在生产环境中找到它的方式

因此,既然MS的用户群很大,我的猜测是如果F#在不久的将来不会流行,那么Haskell也不会。

  

与过程语言相反,研究Haskell和函数式编程范例对我来说是否有价值?

除非你想变得悲惨。 Luke Plant在为什么学习Haskell / Python会让你成为一个更糟糕的程序员时说:

  

所以,学习Python和Haskell让我士气低落并鼓励他们   我编写奇怪且难以理解的代码......

(这不完全是个玩笑。)

无论您目前使用何种语言,扩大视野都可以帮助您成为更好的程序员。例如,在编写Lisp宏之后,你永远不会以相同的方式看编程。在你开始用Haskell术语思考之后,你会发现自己在编写函数并希望用不太高级的语言进行闭包。

从C#中的好东西判断,例如lambda,类型推断,闭包,等等,学习Haskell将为您提供明确的主流语言优势。

有些人喜欢在Haskell中编程。如果你可以选择你的环境,并且考虑享受,那么也许你应该参加。

许多程序员无法选择他们的工具,享受不是他们选择的因素。他们中的许多人在他们的工作场所使用C / Java /等作为“核心项目源”,但是他们也选择或需要使用Python作为“脚本”。例如使用SCons构建脚本,生成Java / etc代码的其他脚本,测试系统,概念证明等。而在其他地方,Python也用于“核心项目”。

8年后,它将是Haskell,而不是Python,它将“来找你”。但你可以早点来。

您可以结合使用函数式编程对语言务实。

所有现代脚本语言s.a. JavaScript或Lua允许使用功能范例。

功能概念日益强大。请注意Ruby周围的一系列活动和兴趣。我最近也注意到除了浏览器脚本语言之外,对JavaScript的兴趣也有所增加。你现在可以潜入游戏,虽然投入的时间可能无法在今年或明年获得回报。

这取决于您的一般游戏计划。您是将编程本身作为目的还是作为达到目的的手段?如果它是前者,请坚持使用Haskell。如果是后者,坚持主流,“就业”,语言。等待Haskell起飞然后突袭。

为什么是程序性的而不是面向对象的,除了C之外很多年都没有使用过程。

商业上说。我会选择Java或C#。他们都付出的代价并不重要,而且这些技能可以与其他类似的思想语言如python,Ruby和JavaScript互换。

Haskell值得花时间和精力,虽然它是非常学术性的,但有些银行会使用它,尽管欧洲和英国的许多人正在将代码库转移到F#。

我认为FOP不会在商业上以极快的速度发展。但这些技术肯定会在主要的语言中出现。特别是使用多核芯片设计并使代码并行运行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top