应用功能编程

Sav*_*sis 11 java functional-programming scala

我一直对编程感兴趣,在过去的6年里,我几乎完全使用Java.我刚完成了大学学业,并在公司担任Java开发人员.

这些年来编程一直是业余爱好和过去时间的最爱,但这对我已经习惯了Java的意义上有一点负面影响,我从来没有超越它作为一种编程语言.我确实通过学习正则表达式,SQL并尝试扩展我的知识,并研究了一些XML,但我无法用新语言来学习如何正确地使用它,因为它们在核心看起来都很相似,我发现每种新语言的学习曲线都很烦人.我觉得我必须经历整个过程才能结束,因为我觉得其他命令式语言没有什么可以提供给我(我知道这句话可以开始战斗,这不是我的意图).

因此,我决定在某一点上探索函数式编程的神奇世界.我开始读一本关于Haskel的书,从学术观点(我主修数学)发现它真的很有趣,但却找不到它的实际应用来让我学习语言.

所以现在Java是我这一天的主要部分,因为我得到了付费代码(我喜欢它,就像我只是一个爱好),我觉得有必要再次拓宽我的视野和功能编程似乎是个好主意.

我想我会从Scala开始,因为我是Java知识分子(因为他们可以"互相交谈")使转换变得更容易并且更可重用,所以我的问题是:在你的经验中,学习功能语言是否"有意义"?是否有任何真实的应用程序,知道这个范例可能派上用场?不仅仅是个人娱乐,还会成为行业中的"专业人士"吗?

jav*_*anz 8

在我看来,学习函数式编程不仅是一个好主意,因为它使你成为一个更好的程序员(当然我认为我同意),但因为它似乎会在不久的将来变得非常流行.

很多"大师"都说这将是保持摩尔定律生存的唯一方法.计算机时钟速度已达到顶峰,提高处理器速度的唯一方法是添加越来越多的内核.在这种情况下,功能编程变得很方便,因为在那些语言中数据是不可变的,这使得它们很容易进行并行化(它实际上可以自动完成).

您可能希望查看下一个引用

浅黄色,我希望它不是太无聊,;-)


rtp*_*son 7

学习函数式语言是一个很大的优势,无论你是否曾在日常工作中使用它.考虑以下:

  1. 成功并发编程的最大建议之一是尽可能避免线程对象中的可变状态.功能编程教你如何做到这一点.
  2. 大多数功能程序员一旦克服了非实质性的学习曲线,就会声称他们的技术使他们的工作效率远远高于标准命令式语言.他们的代码更无错误,只是其他语言的一小部分.想想当你最终理解正则表达式时你所获得的生产力提升.现在把它放在类固醇上.FP 就是这样的感觉.
  3. 功能技术正在迅速进入命令式编程.想想C#和Javascript中的闭包,很快(也许,如果我们幸运的话)使用Java.这两个世界很可能会很快聚集在一起.
  4. 最后,在求职面试中,了解一种功能语言将帮助您从普通的J2EE/.NET克隆中脱颖而出.它标志着你是一个自我启动者,一个训练有素的学习者,一个充满激情的程序员 - 无论你是否真的是这些东西.只是不要再成为斯卡拉的另一个狂热粉丝了,责骂你即将成为老板,因为他错过了最好的编程技巧,因为......你明白了.侮辱未来的雇主永远不会好.

对我来说,学习Haskell使编程变得比以前更有趣.它也可以为你做同样的事情.祝好运!