我最近在学习函数式编程(特别是 Haskell,但我也学习了 Lisp 和 Erlang 的教程)。虽然我发现这些概念非常有启发性,但我仍然没有看到“无副作用”概念的实际一面。它有哪些实际优点呢?我试图以函数式思维方式进行思考,但有些情况看起来过于复杂,无法以简单的方式保存状态(我不认为 Haskell 的 monad 是“简单的”)。
是否值得继续深入学习 Haskell(或其他纯函数式语言)?函数式或无状态编程实际上比过程式编程更有效率吗?我以后是否有可能继续使用 Haskell 或其他函数式语言,或者我应该只是为了理解而学习它?
我更关心生产力而不是性能。所以我主要问的是,我使用函数式语言是否会比过程式/面向对象/其他语言更有效率。
Read 简而言之,函数式编程.
无状态编程有很多优点,其中最重要的是戏剧性地多线程和并发代码。坦率地说,可变状态是多线程代码的敌人。如果默认情况下值是不可变的,则程序员无需担心一个线程会改变两个线程之间共享状态的值,因此它消除了与竞争条件相关的一整类多线程错误。由于不存在竞争条件,因此也没有理由使用锁,因此不变性也消除了与死锁相关的另一类错误。
这就是函数式编程如此重要的重要原因,也可能是跳上函数式编程列车的最佳原因。还有很多其他好处,包括简化的调试(即函数是纯粹的,不会改变应用程序其他部分的状态)、更简洁和更具表现力的代码、与严重依赖设计模式的语言相比更少的样板代码,以及编译器可以更积极地优化您的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)