0 0

为撒Erlang要设置"变量不变"这个特性?10

Erlang中的变量大部分情况下是"不可变"的(进程数据区域等特殊的除外), 据称是和并行相关, 不过这里我比较困惑, 既然Erlang进程设置了消息系统, 理论上讲消息都是一个一个处理的, 即:同一个进程中的消息处理不存在并行情况, 因此无需要"边量不变". 如果是在多进程情况下, 由于进程的数据之间是切分开的, 看起来也不太需要"变量不变"这个特性, why???
可否举个例子说明在哪种情况下需要"变量不变"这个特性???

备注: 本人初学Erlang, 理解错误的地方希望前辈们指点.
Thanks.


问题补充:
根据night_stalker的回答, 看起来immutable是和"并行"没有太大关系的了... 还有别的方面的特性决定需要使用immutable的么???
问题补充:
感谢night_stalker, 又去查了下资料, 应该是和进程调度有关, 详细见这里 : http://hi.baidu.com/timeless/blog/item/3f3dafc3cb84835db319a8ae.html
感觉上是由于immutable的特性决定进程可以比较轻松的进行调度而不消耗太多资源, 想比传统的进程/线程方式就有了很多好出.

另, to night_stalker, Erlang里应该不直接支持global-var的把...每个进程都有自己独立的数据区域, 相互之间应该是不share的...

再次感谢, 对这个问题有了更深入的认识:)~
2009年7月24日 10:26

3个答案 按时间排序 按投票排序

0 0

采纳的答案

o,我对 erlang 了解不多 …… 献丑了

2009年7月29日 10:23
0 0

…… 我没说关系不大吧 …… mutable 了进程之间的数据还能且分开么?

假设声明为 var 的东西可变,spawn 两个进程看看?

-module(mo)
var v
do_something() ->
  ... 这里改变了 v
spawn(mo, do_something, ())
spawn(mo, do_something, ())


这东西多了,行为不可预测。不要把变量当成天经地义的 …… immutable 的东西实现起来简单多了 ……

2009年7月28日 18:44
0 0

因为不可变已经够用了,可变会让你更容易写出面条。

immutable 的好处有很多,譬如闭包消耗的内存会降低很多,编译器可以把这个名字出现的地方都替换成值,结果就是跑起来更快。

好处是不需要学习变量这个概念,坏处是要忘记变量这个概念 ……

2009年7月25日 14:00

相关推荐

    erlang安装设置.docx

    根据提供的文件信息,“erlang安装设置.docx”,我们可以推断出文档主要关注的是Erlang这一编程语言的安装与配置过程。以下将详细介绍Erlang的安装步骤、配置方法以及如何修改起始工作路径等内容。 ### 一、Erlang...

    Erlang v21.2 Windows 64位 最新安装版(附安装教程+环境变量配置).rar

    在这个“Erlang v21.2 Windows 64位 最新安装版”压缩包中,包含了适用于Windows操作系统的64位Erlang安装程序。由于Erlang官网的下载速度可能较慢,此压缩包提供了一个便捷的方式,让用户能够快速获取并安装Erlang...

    erlang25.0 windows版本

    Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可...如果你是Erlang开发者或对此感兴趣,安装这个新版本将有助于你利用最新的语言特性和改进。

    Erlang的高级特性和应用

    **Erlang 高级特性和应用** Erlang 是一种高级编程语言,以其在并发处理、分布式计算和高可靠性方面的出色性能而闻名。在国内外,Erlang 已经被广泛应用于各种场景,如广告平台、社交网络、云计算、网络游戏以及...

    erlang9.rar

    安装过程中,你可能会被询问是否要添加Erlang环境变量到PATH,这个选项建议选中,以便在命令行中可以直接使用erl命令。此外,安装路径的选择也很关键,最好选择一个不会频繁变动的位置,以避免日后升级或重装带来的...

    esl-erlang_23.0_windows_amd64.exe rabbitmq-server-3.8.4.exe

    3. erlang要以管理员身份安装运行,并设置ERLANG_HOME环境变量。以及在path中设置ERLANG_HOME的bin目录 4. erlang安装后要检查能否编译成功一个helloworld文件。 5. rabbitMQ无法安装插件时非常有可能是erlang出问题...

    erlang编程 Introducing Erlang

    BEAM是Erlang运行时系统的名称,全称为伯尔尼高级执行机器(Bergen Erlang Virtual Machine)。它负责解释Erlang字节码,提供内存管理、垃圾回收和并发调度等功能。 ### 10. 语言特性 Erlang的语法简洁,支持模式...

    xiandiao_erlang_Erlang课后习题_

    "xiandiao_erlang_Erlang课后习题_"这个压缩包文件包含了Erlang程序设计第二版的课后习题源码,这对于学习和深入理解Erlang编程至关重要。 Erlang的特点: 1. **函数式编程**:Erlang基于函数式编程范式,强调无副...

    Erlang安装手册

    - 按照提示完成安装过程,建议将Erlang安装路径设置为容易记忆的位置。 - 测试安装是否成功,可以通过编写简单的Erlang程序并在命令行中运行来验证。 ##### 3. 测试安装 创建一个简单的Erlang模块`tut.erl`,包含...

    erlang资源

    Erlang是一种面向并发的、函数式编程语言,由瑞典...这两本书结合阅读,将为初学者提供一个全面的Erlang学习路径,从基础语法到高级并发编程技巧,有助于深入理解Erlang语言及其在构建高并发、分布式系统中的强大能力。

    二郎助手erlang开发工具、erlang编辑器

    这意味着开发者可以在一个熟悉的环境中进行Erlang编程,而无需适应新的开发环境。 在二郎助手中,你可以享受到以下功能: 1. **语法高亮**:Erlang的语法特性被准确地识别和突出显示,使得代码更易读,减少错误的...

    Erlang_CNode用户指

    1. **安装和配置**:指导用户如何在系统上安装Erlang VM和CNode所需的所有依赖项,包括设置环境变量,确保编译器和链接器正确配置。 2. **创建CNode**:详细解释如何创建一个CNode实例,连接到Erlang节点,并初始化...

    erlang 23.1 - windows

    安装过程中,你可能需要设置环境变量,指定Erlang的安装路径,以便RabbitMQ可以找到并使用它。 至于"关注即可下载"的标签,这可能是一个提示,意味着你需要关注某个源或者订阅某个服务,才能获取到Erlang 23.1的...

    Erlang官网下载过慢

    标题中提到的“Erlang官网下载过慢”可能是因为网络问题或者官方服务器的繁忙导致的,这对于急需安装或更新Erlang的开发者来说是一个常见问题。在这种情况下,用户可以选择通过第三方镜像站点或者从他人分享的安装包...

    erlang,rabbitMq安装必须要安装的软件,安装完后需要配置环境变量erlang-home

    Erlang和RabbitMQ的组合为开发者提供了一个强大而可靠的工具,用于构建可扩展的、高可用性的消息传递系统。通过理解Erlang的并发特性和RabbitMQ的队列机制,我们可以构建出高效的分布式应用程序。安装过程中,正确...

    Erlang-otp_win64_23.0.zip

    Erlang OTP 23.0是Erlang的一个重要版本,它带来了性能优化、新的API、错误修复以及对新特性的支持。在Windows 64位系统上安装这个版本,用户可以确保RabbitMQ能够在一个稳定且优化的环境中运行。安装过程中,用户...

    windows下安装Erlang环境

    安装Erlang的过程包括下载官方提供的安装包,双击运行并按照向导完成安装,之后设置系统环境变量,将Erlang的bin目录添加到PATH中。最后,通过命令行输入`erl`命令,如果返回相关信息,表明Erlang已成功安装。 总之...

    erlang 24.0版本 win64 位

    安装过程中,它会设置必要的路径、注册表项以及环境变量,确保Erlang可以在Windows平台上正确运行。安装完成后,用户可以通过命令行工具如`erl`启动Erlang shell,开始编写和测试代码。 总的来说,Erlang 24.0版本...

    erlang-20.3.6.zip

    "linux"标签表明了这个软件包是为Linux操作系统设计的,Linux是Erlang广泛应用的平台之一,因为其稳定性、灵活性和开源特性与Erlang的理念相契合。 另一个标签"rabbitMq依赖"揭示了Erlang与RabbitMQ的关系。...

    Erlang-win64_20.1

    Erlang是一种高级编程语言,特别为并发、分布式和实时计算系统设计,广泛应用于电信、银行、互联网服务和软件开发。Erlang以其强大的错误恢复能力和容错性著称,其虚拟机(BEAM)允许程序在不停止服务的情况下进行热...

Global site tag (gtag.js) - Google Analytics