我一直对编程感兴趣,在过去的6年里,我几乎完全使用Java。我刚完成了大学学业,并在公司担任Java开发人员。
这些年来编程一直是业余爱好和过去时间的最爱,但这对我已经习惯了Java的意义上有一点负面影响我从来没有超越它作为一种编程语言。我确实通过学习正则表达式,SQL并尝试扩展我的知识,并研究了一些XML,但我无法用新语言来学习如何正确使用它,因为它们在核心看起来都很相似,我发现每种新语言的学习曲线都很烦人。我觉得我必须经历整个过程才能结束,因为我开始了,因为我觉得其他命令式语言没有什么可以提供给我(我知道这个声明可以开始战斗,这不是我的意图)。
因此,我决定在某一点上探索函数式编程的神奇世界。我开始读一本关于Haskel的书,从学术角度(我主修数学)发现它真的很有趣,但是找不到它的实际应用,让我足够学习语言。所以现在Java是我这一天的主要部分,因为我得到了代码的支付(我喜欢它,就像我只是一个爱好),我觉得有必要再次拓宽我的视野和再次功能编程似乎是一个好主意。
我想我会从Scala开始,因为我是Java识字者(因为他们可以互相“交谈”,使转换更容易,更可重复使用)所以我的问题是:根据您的经验,学习功能语言“有意义”?是否有任何真实的应用程序,知道这个范例可能派上用场?不仅是个人娱乐,而且这也是行业中的“专业”?
答案 0 :(得分:8)
在我看来,学习函数式编程不仅是一个好主意,因为它会让你成为一个更好的程序员(当然我认为我同意)但是因为它似乎会在不久的将来变得非常流行。
很多“大师”都说这将是保持摩尔定律生存的唯一方法。计算机时钟速度已达到顶峰,提高处理器速度的唯一方法是添加越来越多的内核。在这种情况下,功能编程变得很方便,因为在那些语言中数据是不可变的,这使得它们很容易进行并行化(它实际上可以自动完成)。
您可能希望查看下一个参考资料
Buff,我希望它不是太无聊,; - )
答案 1 :(得分:7)
学习函数式语言是一个很大的优势,无论您是否曾在日常工作中使用它。请考虑以下事项:
对我来说,学习Haskell让编程变得比以前更有趣。它也可以为你做同样的事情。祝你好运!
答案 2 :(得分:2)
功能性编程已经在金融领域取得进展。如果你认为金融分析师多年来一直在Excel中“编程”,这实际上是一个功能范例(更准确地说,是功能反应性的),这真的不是那么令人惊讶。
所以,是的,知道函数式编程可以打开几个门,只有OO不能,这样的工作可能非常有趣。
严格地说,作为Java程序员,您将学习日常可以在Java中使用的技术(尽管您需要更好的Collections库)。这些技术可以减少代码中的错误数量,使多线程和多任务更容易,并使代码更接近于实现的业务规则,而不是实现的机制。
现在,还有其他理由特别要学习Scala。但是,上面的那些是我可能想要学习函数式编程的原因。
答案 3 :(得分:1)
答案 4 :(得分:1)
学习一门功能语言绝对有道理。正如埃里克雷蒙德所说,如果你学习了一种功能语言,它将使你成为一个更好的程序员用你选择的语言。
从行业的角度来看,如果你能用Haskell或Objective Caml这样的函数式语言编写好的代码,那么你会突然对极少数的职位有很高的要求。目前尚不清楚是否有任何明智的人会认为这是“专业人士”,但肯定有一些非常有趣的公司只有职能程序员才有空缺。
答案 5 :(得分:1)
是的,它非常有意义,并且可以立即用于您在生产中可能遇到的一些常见任务(即使您使用Java编写它们)。例如,如果您需要编写解析器(例如,用于DSL),您会发现使用功能技术可以实现更清晰,更简洁的代码。