这些天我越来越严重到函数式编程。
虽然我真的很兴奋Haskell和它似乎提供了可能性,我现在还可以看到它是要带我一段时间来学习。 在上SO问题如何学习Haskell的答复指出,这将需要几个月甚至几年实际上是“高手”吧。
现在,我知道C,PHP,一些面向对象的东西等,并已被告知,Haskell是没有多少“现实世界”中使用了那里,我会好起来的提高我的技能,在正规语言我知道吗? 哈斯克尔是值得的斗争?
在关于这个问题,为什么人们认为函数式编程将捉对的结论似乎是,函数式编程将“赶上”。 但可以肯定的过程式编程将留在上面,对不对?
编辑:keparo很好地阐明了我的问题: 由于相对于过程语言,会是有价值的,我学习Haskell和函数式编程范式?
Answer 1:
Haskell是不是很难,因为人们喜欢做出来学习。 哈斯克尔打开了,你永远不知道存在了,你一个新的世界。 这是宝贵的学习任何其他语言。 你可能找不到你需要做的Haskell编程工作,但这是否真的意味着一门语言是不值钱?
哈斯克尔会教你很多新的东西,它会告诉你如何在语言编程,你甚至更好/做/的工作。 你可以做你自己的个人项目,在你的业余时间用它。
哈斯克尔是不是真的用在“现实世界”多,如果你定义了“真实世界”为“现金发电机”。 因此,如果这是你的目标,那么你可能需要重新考虑的目标:P
另外,我真的不喜欢选择“如何学习哈斯克尔”的答案的一部分。 这需要几个月到几年掌握任何语言,不只是哈斯克尔。 这取决于你如何定义“主人”。 我可以使用哈斯克尔到一个相当不错的效率,我只是一直在学习了一个月,我一直在服用它甚至放缓。
Answer 2:
如果不出意外,在心态的变化是学习Haskell提供将帮助你时,你必须回去使用还是在工作场所使用的过程语言。
功能模式正在开始做它的方式为各种主流应用程序和语言 - 即使C ++将被加入C ++ 0x中一(残废)拉姆达。
你可能也想看看一些像斯卡拉或者Ocaml混合语言。 Scala是在Twitter的使用,并且正在以简街的金融交易平台使用OCaml的。
Answer 3:
你可能不应该指望任何地方几乎一样经常使用哈斯克尔在专业设置的C家族语言。 如果问题是它是否会有价值为你学习Haskell和函数式编程范式,答案是肯定的。 您可以应用程序的丰富您了解您的所有工作。
Answer 4:
我学会了哈斯克尔,因为它是迄今为止,我尝试了Scala中,Clojure中,OCaml中和方案,但我没有认真指望用它来工作的最佳功能性的语言。
事实证明,它是完美的那些五花八门的是一个团队太小,会在Java中耗费太时间打零工。 到目前为止,我已经使用了点对点数据迁移即重整CSV出口成另一种格式,XML的批量转换(HXT更简洁,比XSLT更强大),屏幕抓取了互联网和软件项目估算包括建模使用风险概率单子以及利用回溯最佳的甘特图。 这是需要做的一切实际工作中,我根本不会费心去尝试,并在Java中做,因为这将是一个多一天的工作。
我现在用它来代替Excel的任何东西隐约数学,因为它是多一点的努力,一个文本编辑器创建值在Haskell源列表比它是他们输入到Excel中。 一旦在Haskell,然后我就可以做各种魔法一样回溯,概率分布等是Excel不能做的。 如果我需要的曲线图,然后我吐的值作为出CSV(2行代码),并将它们加载到Excel中。
唯一的缺点是,它需要数月才能拿到熟练,但值得努力恕我直言。
Answer 5:
而不是程序语言,这将是宝贵的,我学习Haskell和函数式编程范式?
如果具有扩展的技能是有价值的,那么:是的。
一个优点你可能会拿起:并行和并发编程。 过去的程序语言往往有副作用没有清晰的概念,因此在他们编写并行程序是很难做正确。 函数式语言(尤其是那些限制的副作用,如哈斯克尔)有更多要说的生产并行编程。
有了这样的技巧你的袖子不能伤害。
Answer 6:
我可以看到,函数式编程可以在生产环境中的加号,如果它很容易被非功能性的代码中使用。 MS可以看到,太多的时候,他们想出了F#我猜。
因为他们都编译成IL,您可以处理请求的功能方式的功能和在你的程序代码非常容易地使用这些解决方案的问题。
在这样的功能代码可以很容易地找到自己的方式在生产环境中的位在同一时间
因此,由于MS的用户群是很大的,我的猜测是,如果F#不会在不久的将来赶上,那哈斯克尔也不会。
Answer 7:
我认为这是值得的斗争。 这将帮助你了解问题是如何解决的,而不是仅适用于计算机是如何工作的。
也许一个特殊的问题是哈斯克尔本身 - 作为一个纯粹的功能性语言,它有点“铁杆”这可能在另一方面也使事情变得复杂。
函数式编程,而不是可能是一个非常务实的态度是非常有用的 - 许多OO /命令式语言现在包括这个原因(LINQ,匿名函数,只读值,函数指针/代表,类型推断)功能要素:您可以专注于什么应该做的事,让你表达在更短的代码(也就是更不容易出错)。
非纯函数式语言(标准功能的语言),比如Scala或F#可以很容易地集成到现有的Java或.NET的项目,这样你就可以将需要的地方他们都范式的好处。 对于函数式语言的典型优点,看到这个线程 。 试想极其强大的解析(一元解析器组合/秒差距)或并发编程是可能的函数式语言,你会看到他们是多么有用。
Answer 8:
而不是程序语言,这将是宝贵的,我学习Haskell和函数式编程范式?
除非你想成为苦不堪言。 卢克厂说,在为什么要学习Haskell / Python的让你更差的程序员 :
所以,学习Python和哈斯克尔已经打击我,鼓励我写的代码是奇怪和难以理解...
(这并不完全是一个笑话。)
Answer 9:
拓宽你的视野可以帮助你成为一个更好的程序员,不管你发生什么语言来使用的时刻。 你永远不会看到你写的Lisp的宏之后,例如编程的方式相同。 你开始觉得在Haskell条款后,你会发现自己作曲的功能和更少的高级语言希望闭包。
在C#中的好东西,如lambda表达式,类型推理,封锁,判断等等 ,学习Haskell会给你一条腿在主流语言明天的前沿。
Answer 10:
有些人在Haskell喜欢编程。 如果你可以选择你的环境,和享受是一个考虑因素,那么也许你应该跳英寸
许多程序员都没有在位置选择自己的工具和享受是不是他们选择的一个因素。 他们中许多人获得使用C / Java的/等在自己的工作岗位上,为“核心项目的源代码”,但随后又选择或需要使用Python的“脚本”,如构建的脚本与SCons的,即生成Java /等其它脚本代码,测试系统,证明-的的概念,等等。而在其他地方的Python也被用于“核心工程”。
在8年时间,这将是哈斯克尔,而不是Python,这将是“向你走来”。 但是,你可以来早点。
Answer 11:
您可以结合使用功能的编程和务实关于语言。
所有现代的脚本语言JavaScript的SA或Lua语言允许使用功能范式。
Answer 12:
功能概念上强大的未来。 注意周围红宝石活动和兴趣乱舞。 我也注意到不仅仅是有浏览器的脚本语言JavaScript中更多的兴趣最近。 你可以在比赛之前跳水的现在,但投入的时间可能无法还清今年或明年。
这取决于你的一般游戏的计划。 你到节目本身作为或作为达到目的的手段结束了吗? 如果是前者,想怎么样哈斯克尔。 如果是后者,坚持主流,“工作能力”的语言。 等待哈斯克尔起飞,然后猛扑。
Answer 13:
为什么程序,而不是从对象C.使用多年除了为导向,没有看到过程之中
从商业上说。 我会去与Java或C#。 其实并不重要,他们都付出良好,技能与其他志同道合的语言如Python,Ruby和JavaScript的互换。
Haskell是值得花时间和精力,虽然它很学术,一些银行使用它,虽然许多欧洲和英国在移动代码库中的F#。
我不认为会FOP以极快的速度移动商业讲话。 但技术肯定是在做主要停留语言的外观。 特别是随着多核心芯片的设计和制作他们的代码运行并行。
文章来源: Haskell vs. procedural programming in the real world [closed]