应该如何使用Erlang

问题描述

开发Erlang的哲学同样适合于开发以Erlang为基础的系统。引用Erlang的三个发明人之一的Mike Williams的话:  找到设计原型的正确方法。  只有想法还不够,还必须实现它们并且懂得它们如何运行。  允许小范围内犯错,但绝不能发生在产品级项目上。  按照上面所引用的话,所有成功的Erlang项目都应从一个原型开始,而且Erlang完全支持获得原型所需的特性,并运行快速。工作原型通常包括一个功能性的子集,并允许端到端的系统**。例如,如果你正在建立一个即时通信服务器(在本书中反复出现的一个主题),有效的功能**包括有能力进行提示和发送消息到远程服务器,而不必担心如冗余、持久性和安全性等问题。  采用Erlang进行软件开发可以通过使用敏捷方法得到最好的实现,并在较短的循环周期内,逐步提供功能不断增加的系统。开发小组应该尽量小规模进行,如果条件允许,应该进行自动**。本书的“集成与开放”小节所提到的Erlang可用工具,为软件开发提供了极为有利的支持和帮助。计算机辅助**由EUnit进行单元**,系统**通过共同**完成。其他工具包括cover(用于覆盖分析);还有Dialyzer(透析器),这是一个静态分析工具,用于确定软件的缺陷,如输入错误、死代码和不安全代码。  如果你打算把Erlang引入到你的组织中,那么从小处着手是一个很好的策略。引入小项目(或小系统),从而发挥Erlang的优势。这一策略对于Erlang尤其适合的原因,在于它从设计一开始就内置地支持分布式和集成,就如我们在“集成与开放”小节中所描述的那样,并且所有的产品级Erlang系统都虚拟地和其他语言与系统互联。一旦你在小范围内获得了成功,那么就可以考虑往更大规模发展了。  本书的网站和附录部分介绍了你可以去哪里了解Erlang的链接、协助程序开发的工具以及Erlang团体。但是现在,是我们开始工作的时间了。

时间: 2024-10-24 08:14:20

应该如何使用Erlang的相关文章

【原创】在CentOS 5.7上通过YUM安装Erlang的坑爹经历(更新)

      想要在虚拟机上的 Linux 环境下,重新搞一下 RabbitMQ 的相关实验,所以重新折腾了下如何操作: Since RabbitMQ is written in Erlang, we need to have installed the language libraries to run the broker.       首先还是要把 Erlang 的安装搞定,最简单的方式是直接重 官网 上下载源码包或rpm包再安装,但是我是个喜欢折腾的人,所以我选择了另外一种"比较笨拙&qu

计划在C++建立仿Erlang式的分布式并行机制

梳理了下需求,大体如下: 进程(Process).进程是Erlang中一个虚拟的运行单位.既不是操作系统的进程,也不 是线程,而是比线程更加轻量的单位,更接近于协程. 命名进程(NamedProcess).命名进程的好处是,你可以向一个不知道进程ID的进程发送 消息.由于进程可能会宕掉(crash),进程ID可能会发生变化,所以在考虑了异常的环境下 ,命名进程降低了编码的难度(你不再需要考虑进程crash检测和重建连接的过程). 进程邮箱(Mailbox).每个进程都拥有一个自己的邮箱,其他进程

【原创】调用 proc_lib:spawn/1 和 erlang:spawn/1 有什么区别

在<Erlang OTP 设计原则>中的 "Sys与Proc_Lib" 一节中有如下描述:  模块 proc_lib 中的函数可以用于实现一种特殊进程,遵照 OTP 设计原则,但不使用标准行为.它们也可以用于实现用户自定义的(非标准)行为. 怎样算是符合 OTP 设计原理而又不使用标准行为的 "特殊进程"呢?  以一种可以让进程放入监督树的方式启动: 支持 sys 的调试功能: 关注系统消息 . 什么是系统消息?       系统消息是用于监督树中的.带

erlang otp-erlang 服务器端编程 错误提示 variable &amp;amp;#39;State&amp;amp;#39; is unbound

问题描述 erlang 服务器端编程 错误提示 variable 'State' is unbound -module(gen_server_template). %% gen_server_template -behaviour(gen_server). -export([start_link/0]). %% gen_server callbacks -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/

浅析Erlang分布的核心技术

Erlang系统在我看来有3个特性: 1.分布 2.多核心支持 3.fp. 这3个特性中分布我认为是erlang最强大的,从第一个版本就支持到现在,相对非常成熟,而多核心支持是这几年才加进去的. erlang的分布系统做到了2点: 1.节点的位置无关性; 2.对用户分布式透明的. 具体体现就是node是靠名字识别的, 进程也是靠pid来识别. 分布系统就要实现节点间通讯,erlang也不列外. erlang的节点通讯介质是可以替换的 目前官方版本支持tcp, ssl通讯. 可以用 -proto_

【转载】关于 Erlang 和 SMP 的一些说明

以下是一些关于 Erlang SMP 实现细节.性能.伸缩性相关一些简单介绍.  -=-=-=-=-=-        几周之内还有一个关于多核如何运作以及未来如何发展的更详细的介绍.我打算将一些内容放在我的报告中,将于 9 月 27 日的 ICFP2008,Erlang Workshop 在 Victoria BC 展示给大家.       没有 SMP 支持的 Erlang VM 只有 1 个运行在主处理线程中的调度器.该调度器从运行队列(run-queue)中取出可以运行的 Erlang

erlang远程调用示例

下面的例子试用了erlang的分布式编程,从中可以看出像erlang这种基于消息的纯函数语言在分布式编程中的强大威力. 简单例子 在远程节点编写一个测试的模块 -module(distribution). -export([a/0]). a() ->     hello. 首先启动远程节点,并设置cookie,载入模块 $ erl -name remote -setcookie abc Erlang R16B03 (erts-5.10.4) [source] [64-bit] [async-th

【转载】Syntax Highlighing for Erlang in NotePad++

Update: The definition has been updated to include support for atoms, variables and function names as well as additional file extensions.  Screen shot and downloadable content have been updated. Thus far I've done all of my Erlang development on Fedo

Erlang千万级用户游戏框架(Openpoker)源码文件分析清单

openpoker源码 erlang写的网游服务器源码,OpenPoker是一个大型多人扑克网游,内建支持了容错能力,负载平衡和无限制的规模大小.本文是openpoker源码文件功能的一个清单式说明: 模块名称 模块功能说明 备注 ante.erl 仅仅是开始下注的处理,具体的逻辑在betting中   barrier.erl barrier本意屏障   bb.erl Bot launcher   betting.erl Poker betting logic 下注逻辑处理   bits.erl

erlang语言,有没有用好的代码调试工具????????????????

问题描述 erlang语言,有没有用好的代码调试工具???????????????? 我现在在做erlang开发,然后遇到很多问题,想知道明白,erlang语言代码的执行过程,想有什么好的代码调试工具,高手求指教,求推荐啊 解决方案 有内建的debug工具 http://www.erlang.org/doc/apps/debugger/debugger_chapter.html