我在这里看到很多关于函数式语言的讨论。为什么你要使用传统语言而不是传统语言呢?他们在哪些方面做得更好?他们更不擅长什么?理想的函数式编程应用程序是什么?
当前回答
一些想法:
The debate between FP and imperative programming (OO, structured, etc), has been raging since Lisp versus Fortran. I think you pose excellent questions but recognize that they are not especially new. Part of the hoopla over FP is that we seem to be recognizing that concurrency is very difficult, and that locks and other mechanisms in OO (e.g. Java) are just one solution. FP offers a refreshing sea change with ideas such as Actors and the power of stateless computing. To those wrestling with OO, the landscape seems highly appealing. Yes, schools teach FP. In fact, the University of Waterloo and others offer Scheme in first year classes (reference here). Regarding the average programmer, I'm sure that the same arguments were given against C++ back in the early 1990s. And look what happened. If businesses can gain an advantage via a technology, you can bet that people will receive training.
这并不是说这是板上钉钉的事,也不是说在3-5年内不会出现反弹(一如既往)。然而,朝着计划生育的趋势是有好处的,值得关注。
其他回答
当阅读Tim Sweeney的《The Next主流编程语言:A Game Developer’s Perspective》时,我的第一个想法是——我必须学习Haskell。
PPT
谷歌的HTML版本
我一定是糊涂了,但我还是不明白。是否有像f#这样的函数式语言编写的小型应用程序的实际例子,你可以查看源代码,并了解如何以及为什么使用这种方法比c#更好?
实际上,在阅读了《黑客与画家》之后,我正在学习LISP,我相信我会从LISP中学到一些东西,这将使我更好地理解我所编程的其他东西。现在我不认为我会在我的日常生活中使用LISP,只是因为有人在1995年创建了一个网站,成为雅虎商店。所以无论如何这是一个双赢(如果它流行起来,我赢了,如果没有,我得到了更多关于如何编程和如何工作的观点)
现在…关于另一个有点相关的问题,我认为明年32核处理器到来后编程会发生很大变化吗?是的,我不知道它是否会是函数式编程,但是…我很确定会有一些不同的东西!
讨论中忽略的一点是,最好的类型系统存在于当代FP语言中。更重要的是,编译器可以自动推断所有(或至少大部分)类型。
有趣的是,在编程Java时,有一半的时间花在编写类型名上,然而Java到目前为止还不是类型安全的。虽然你可能从来没有在Haskell程序中写过类型(除非作为一种编译器检查的文档),但代码是100%类型安全的。
大多数应用程序都可以用[此处插入您最喜欢的语言、范例等]来解决。
尽管如此,不同的工具可以用来解决不同的问题。函数只是允许另一种更高层次的抽象,当正确使用时,它允许我们更有效地完成工作。