从变量不可变到编程范式

本文讨论了Erlang中变量不可变原则的原因,分析了两种常见观点:并发需求与模式匹配,并通过源码分析揭示其根源在于函数式编程范式。作者通过对比其他函数式编程语言,指出变量不可变是遵循函数式编程理念的结果,而非并发问题的解决方案。
摘要由CSDN通过智能技术生成

1、众说纷纭的变量不可变

近期在论坛中有一个很有意思的讨论,erlang中的变量不可变原则的原因到底是什么,似乎各个二郎君还没有一个统一的看法,主要的观点有两个:1、出于并发的需求,防止变量被二次赋值而导致各种并发问题;2、erlang的模式匹配导致,因为本身并不存在赋值操作,而模式匹配的规则就是不可对变量二次绑定值。

在我刚学erlang的时候,我曾经对第一种说法深信不疑,erlang变量不可变原则,感觉上确实可以很巧妙的解决并发编程中对共享数据并发访问的问题,因为数据不再被二次赋值,也就没有了脏数据问题。后来随着学习erlang越久,渐渐发现了这种说法的荒谬之处,最基本的,erlang本身在用户(程序员)角度,理论上并不存在共享内存的问题,每个进程的变量是属于进程私有空间的,也就是说即使变量可以二次赋值,也只能在单个进程中执行,所以根本不需要用变量不可变这点来保证并发性。在否认了第一种说法后,我开始倾向于第二种说法,变量不可变是erlang本身的模式匹配机制所决定,但是随着阅历增加,我接触了大量其他函数式编程语言,诸如haskshell、schema、lisp等等,我发现在不少的函数式编程语言中,都存在变量不可变机制,也就是说,这个规则并非erlang专有,所以第二种说法也不能解释。<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值