我在这里看到很多关于函数式语言的讨论。为什么你要使用传统语言而不是传统语言呢?他们在哪些方面做得更好?他们更不擅长什么?理想的函数式编程应用程序是什么?


当前回答

如果一个人看不到其他艺术的价值,他就无法理解他所选择的艺术的完美和不完美。遵循规则只允许在技术上发展到一定程度,然后学生和艺术家必须学习更多,进一步探索。在学习战略艺术的同时,学习其他艺术也是有意义的。

谁没有通过观察别人的活动来更多地了解自己呢?要学剑,就要学吉他。要学商业,先学商业。只学习刀剑会使你心胸狭窄,不能向外成长。

——宫本武藏《五环之书》

其他回答

如果一个人看不到其他艺术的价值,他就无法理解他所选择的艺术的完美和不完美。遵循规则只允许在技术上发展到一定程度,然后学生和艺术家必须学习更多,进一步探索。在学习战略艺术的同时,学习其他艺术也是有意义的。

谁没有通过观察别人的活动来更多地了解自己呢?要学剑,就要学吉他。要学商业,先学商业。只学习刀剑会使你心胸狭窄,不能向外成长。

——宫本武藏《五环之书》

我认为其中一个原因是有些人认为一门语言是否被接受最重要的部分是它有多好。不幸的是,事情很少这么简单。例如,我认为Python被接受的最大因素不是语言本身(尽管这非常重要)。Python如此受欢迎的最大原因是它庞大的标准库和更大的第三方库社区。

像Clojure或f#这样的语言可能是这个规则的例外,因为它们是构建在JVM/CLR之上的。因此,我没有答案。

当阅读Tim Sweeney的《The Next主流编程语言:A Game Developer’s Perspective》时,我的第一个想法是——我必须学习Haskell。

PPT

谷歌的HTML版本

Slava Akhmechet写了一篇很棒的文章,叫做《函数式编程》(顺便说一下,正是这篇文章让我开始接触FP)。在FP带来的好处中,他非常规地强调了以下几点(我认为这有助于软件工程师的吸引力):

单元测试 调试 并发性 热码部署 机器辅助证明与优化

然后继续讨论FP中更多传统讨论的方面的优点,如高阶函数、咖喱、惰性求值、优化、抽象控制结构(尽管没有讨论单子)、无限数据结构、严格性、延续、模式匹配、闭包等。

强烈推荐!

FP无疑是下一个最佳范例。现在哪种语言可能是下一步,这是很难的东西,但我相信可能是Haskell, f#, Clojure, Ocaml或Erlang。或者是带有更多FP结构和更好的并行性/性能支持的Python,或者是带有parrot的Perl 6,看起来非常有趣。