我一直在比较Scala与Java在并发编程方面的优势。
显然,我提到的第一点是Scala是一种函数式编程语言(部分地)使用FP避免了的副作用。
与命令式语言相比,如何在函数式编程中避免副作用,以及如何在多线程/并发编程中工作?
发布于 2013-10-14 06:37:41
这句话的意思是,我认为Scala作为一个函数式-OO混合 language 鼓励(有时还允许)使用函数结构和规则,这将使不会产生任何副作用。您可以很好地编写具有副作用的非功能有状态Scala代码;-)另一方面,您可以尝试编写函数式Java (例如),但是由于函数不是第一类对象,所以它可能看起来很难看。所以我不会说它是自然的,但更像是在某种程度上帮助你,而且总体上鼓励你这样做。
在进行函数式编程时,您应该坚持几个原则,这样就不会产生任何副作用:
实际上,通过遵循上述规则避免副作用的最大好处之一是更容易并发编程!毕竟,管理共享状态是并发编程的最大障碍!
因为其中一条规则是可变的和共享的状态是不好的,所以不要使用它!相反,许多函数式语言(如Erlang或Scala)更喜欢所谓的Actor模型,其中Actors (您可以将其与线程进行比较)仅通过相互发送消息来进行通信(参见?传递值,而不是存储在某个地方!)。
https://stackoverflow.com/questions/19354450
复制相似问题