`
bluky999
  • 浏览: 720287 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Erlang十分钟快速入门

阅读更多

Erlang十分钟快速入门

cleverpig 发表于 2007-09-04 16:59:36
作者:cleverpig     来源:Matrix

摘要:

Erlang不但是一种编程语言,而且它具有比编程语言更加贴近操作系统的一些特性:并发线程、作业调度、内存管理、分布式、网络化等。它具有超强的轻量 级进程,这种进程对内存的需求是动态变化的。Erlang支持超大量级的并发线程,并且不需要操作系统具有并发机制。据说使用Erlang编写的Yaws Web服务器,其并发性能是apache的15倍!

Erlang概述

Erlang不但是一种编程语言,而且它具有比编程语言更加贴近操作系统的一些特性:并发线程、作业调度、内存管理、分布式、网络化等。据说使用Erlang编写的Yaws Web服务器,其并发性能是apache的15倍!

这个Erlang初始开源版本包含了Erlang的实现,同时它也是用于构建分布式高可用性系统的Ericsson中间件的最大组成部分。

Erlang具有以下特性:

并发性 - Erlang具有超强的轻量级进程,这种进程对内存的需求是动态变化的,并且它没有共享内存和通过异步消息传送的通讯。Erlang支持超大量级的并发线程,并且不需要操作系统具有并发机制。

分布式 - Erlang被设计用于运行在分布式环境下。一个Erlang虚拟机被成为Erlang节点。一个分布式Erlang系统是多个Erlang节点组成的网 络(通常每个处理器被作为一个节点)。一个Erlang节点能够创建运行在其它节点上的并行线程,而其它节点可以使用其它操作系统。线程依赖不同节点之间 的通讯,这完全和它依赖于单一节点一样。

健壮性 - Erlang具有多种基本的错误检测能力,它们能够用于构建容错系统。例如,进程能够监控其它进程的状态和活动,甚至这些进程是在其它节点上执行。在分布式系统中的线程能够配置为在其它节点故障的情况下自动进行故障恢复,并在故障节点恢复时自动迁移回到恢复节点。

软实时性 - Erlang支持可编程的“软”实时系统,这种系统需要反应时间在毫秒级。而在这种系统中,长时间的垃圾收集(garbage collection)延迟是无法接受的,因此Erlang使用了递增式垃圾收集技术。

热代码升级 - 一些系统不能够由于软件维护而停止运行。Erlang允许程序代码在运行系统中被修改。旧代码能被逐步淘汰而后被新代码替换。在此过渡期间,新旧代码是共存的。这也使得安装bug补丁、在运行系统上升级而不干扰系统操作成为了可能。

递增式代码装载 - 用户能够控制代码如何被装载的细节。在嵌入式系统中,所有代码通常是在启动时就被完全装载。而在开发系统中,代码是按需装载的,甚至在系统运行时被装载的。如果测试到了未覆盖的bug,那么只有具有bug的代码需要被替换。

外部接口 - Erlang进程与外部世界之间的通讯使用和在Erlang进程之间相同的消息传送机制。这种机制被用于和操作系统通讯、与其它语言编写的程序交互。如果出于高效率的需要,这种机制的一个特殊版本也允许例如C程序这样的代码直接链接到Erlang运行时系统中来。

Erlang组件

Erlang具有许多单独的组件,它们能够在开发应用时作为组建块(building blocks)使用。同时这些组件也熟知Erlang的系统消息(load、unload、start、stop、restart、change code)。

Inets - HTTP 1.0服务器和FTP客户端。

Mnesia - 使用Erlang的分布式实时数据库。它支持RAM复制、磁盘存储、动态改变shema、保存任意复杂的数据结构。Mnesia之所以非常快速,是因为它 运行在和应用相同的地址空间(因为Mnesia和应用都使用Erlang编写)。Mnesia展示了Erlang的强大:你能够使用多少种语言使用少于 20000行的代码编写一个全特性、工业强度、分布式的DBMS?

Orber - CORBA v2.0对象请求代理(ORB)。

SNMP – 可扩展的SNMP v1/v2代理和MIB编译器。

Erlang工具和代码库

Erlang具有一套常用工具库:

Appmon - 进程组图形监控(在本地和远程节点上)。

ASN.1 - 支持ASN.1基本标记法和BER、DER、PER编码规则的编译时和运行时的代码包。

Compiler - Erlang编译器。

Debugger - 图形化Erlang调试器。

ERTS - Erlang运行时系统,包括虚拟机、垃圾收集、端口映射守护进程。

GS - 编写图形用户接口的代码库。

IC - 把OMG的接口定义语言(IDL)转换到Erlang、C和Java语言的编译器。

Kernel - 运行Erlang系统所必须的C代码:Erlang内建功能(BIFs);代码、启动、命名服务;对网络和分布式的支持;装载器、连接器、记录器;操作系统和文件系统接口。

Mnemosyne - 可选的用于Mnesia的查询语言。

Mnesia Session - 以IDL定义的与Mnesia接口的外部语言,它们通过IIOP和erl_interface协议对Mnesia进行访问。

OS monitor (OS_MON) - 监控CPU、硬盘、内存使用情况,包括SNMPv1/v2 MIBs。并且提供了与Solaris syslogd、Windows NT事件日志的接口。

Parse tools - 用于Erlang的LALR-1解析生成器(yecc),它和yacc类似。Yecc使用BMF语法定义作为输入,生成Erlang代码作为解析输出。Yecc被用于生成Erlang解析器。

PMan - 跟踪、查看Erlang进程状态(在本地或者远程节点上)的工具。

SASL - 进程、错误、崩溃报告处理、报告浏览、释放处理、重载管理。

Stdlib - 标准代码库:输入、输出;基于内存、磁盘的表存储(ETS和DETS);图表、字典、列表、字符串、集合、队列;正则表达式;数学公式。Erlang解释 器、tokenizer、解析器、lint和格式化打印。用于容错服务器的通用框架、事件处理器、状态机和线程监管等等。

Table visualizer - 查看ETS和Mnesia表格的工具。

Toolbar - 简化了对Erlang工具的访问。

Tools - 覆盖分析器、优化器、基于文字的跟踪器、Emacs模式、Emacs TAGS文件生成器、make工具、调用图形化工具。

十分钟Erlang快速入门

启动Erlang

如果你使用unix系统的话,请输入“erl”;而如果你使用Window系统的话,请点击Erlang的开始图标来启动Erlang。你应该看到如下界面:

os prompt > erl
Erlang (JAM) emulator version 4.7.3.3
 
Eshell V4.7.3.3  (abort with ^G)
1> 



“>”提示表示了系统正在等待输入。

将Erlang用作计算器

1> 2131836812671*12937192739173917823.
27579983733990928813319999135233
2>



记住每个表达式都是以句点和空格为结束符的!

编辑从前的表达式

我们使用简单的emacs行编辑命令编辑从前的表达式,最常用的命令如下:
        •^P 获取上一行。
        •^N 获取下一行。
        •^A 将输入焦点移动到当前行首。
        •^E 将输入焦点移动到当前行尾首。
        •^D 删除当前光标所在的字符。
        •^F 向前移动一个字符。
        •^B 向后移动一个字符。
        •回车 执行当前命令。
请注意: ^X 表示Control + X 。尝试按下Control+P,看看什么会发生?

编译你的第一个程序

在你所喜欢的文本编辑器中输入以下内容,并将其保存到文件中:

-module(test).
-export([fac/1]).

fac(0) -> 1;
fac(N) -> N * fac(N-1).



保存文件名为test.erl,请注意文件名必须和模块名相同。

通过输入c(test)编译程序,然后运行它:

3> c(test).
{ok,test}
30> test:fac(20).
2432902008176640000
4> test:fac(40). 
815915283247897734345611269596115894272000000000
32> 



Ok,现在你也可以尝试编写一些有趣的程序了。

更多资源

        •Erlang入门
        •Erlang官方站点
        •Erlang中文站点
        •Erlang中文讨论组

分享到:
评论

相关推荐

    Erlang入门

    **Erlang入门** Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson在1986年开发,主要用于构建高度可靠和可扩展的分布式系统。这本书"Introducing Erlang"引领读者踏入这个独特的编程世界,...

    erlang开发入门教程

    erlang是爱立信开发的程序开发语言,融合了函数式编程与面向对象编程,并行处理内建与程序语言内部,特别适合创建并发行、容错性、分布性要求比较高的软实时系统,掌握它程序员必备的一种编程技能,与它相似的语言...

    Erlang初级入门(英文pdf)

    - **1991年**:第一个快速实现版本发布。 - **1993年**:Erlang加入了分布式计算支持。 - **1995年**:多个新项目启动,进一步推动了Erlang的发展。 - **1996年**:Open Telecom Platform (OTP) 开始研究验证技术。 ...

    erlang程序设计与入门

    **Erlang程序设计与入门** ...通过阅读《Erlang入门手册》和《Erlang程序设计》这两本书,你可以深入了解Erlang的基础知识、编程技巧以及最佳实践,从而在函数式编程和并发系统的世界里游刃有余。

    erlang编程指南

    erlang编程语言圣经 erlang从业人员的必备书籍 erlang语言开发入门

    Erlang入门ppt

    这份名为"Erlang入门ppt"的资料是英文版的,但提供了深入理解Erlang语言的基础。 在20世纪90年代初,软件项目成功率低、大型项目失败率高是一个普遍问题。研究指出,16%的软件项目成功,53%虽然运行但未达到预期,...

    erlang入门级练习:LeetCode OJ问题的部分erlang 源码

    我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的erlang源代码,后续有空再做其他问题续传,题目包含:(源码开头都有题目...

    erlang入门学习经典资料(很不错)

    ### Erlang 入门学习经典资料解析 #### Erlang 的神秘与起源 Erlang,作为一门相对小众但极具特色的编程语言,自问世以来便伴随着一种神秘的气息。这种神秘感不仅源于它独特的编程范式——函数式编程,还在于其...

    Erlang入门:构建application练习2

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和实时系统。在本教程中,我们将深入探讨如何使用Erlang构建一个名为"Application"的基本应用程序,这在...

    erlang编程 Introducing Erlang

    "Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,旨在帮助初学者理解和掌握Erlang的核心概念和特性。 ### 1. 函数式编程基础 Erlang基于函数式编程范式,这意味着程序由纯函数构成,没有副作用。...

    Erlang趣学指南

    这是一本讲解Erlang编程语言的入门指南,内容通俗易懂,插图生动幽默,示例短小清晰,结构安排合理。书中从Erlang的基础知识讲起,融汇所有的基本概念和语法。 这是一本讲解Erlang编程语言的入门指南,内容通俗易懂...

    erlang 入门练习

    本文将通过"erlang 入门练习"的案例,探讨Erlang的基础知识和应用。 首先,让我们从`client.erl`这个文件名入手。在Erlang中,`.erl`文件是源代码文件,包含了Erlang的模块定义和函数实现。`client`可能表示一个...

    erlang资源

    这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入理解和学习Erlang语言的关键资料。 《Erlang并发编程》这本书可能涵盖了以下知识点: 1. **并发模型**:Erlang的并发...

    erlang闪电入门

    Erlang是一种专为高度并发性、分布式计算、和容错性设计的编程语言,...通过《Erlang闪电入门》这本书,读者可以获得对Erlang语言和其背后哲学的快速理解,并能在短时间内入门这一编程语言,开始自己的Erlang编程之旅。

    Erlang入门:构建application练习5(监督树)

    在这个"Erlang入门:构建application练习5(监督树)"中,我们将探讨如何构建一个包含监督树的应用,这是Erlang OTP(开放电信平台)设计模式中的核心部分。 监督树是Erlang OTP设计原则的重要组成部分,它用于管理...

    erlang open poker 最好的入门程序源码

    4. **错误处理与容错**:Erlang鼓励"let it crash"的设计哲学,这意味着程序倾向于快速失败并自动恢复。源码会包含错误处理和恢复机制,例如监控(monitoring)和链接(linking)进程,以确保系统的健壮性。 5. **...

    erlang文献及资料汇总

    erlang中文手册(R11B 文档译文,最适合入门) erlang位运算与二进制解析 erlang二进制高效编程 erlang异常处理详解 开发经验: 面对软件错误构建可靠的分布式系统 编写分布式的 Erlang 程序:陷阱和对策 硝烟中的...

    Erlang23_3.zip

    此外,Erlang的REPL(Read-Eval-Print Loop)环境允许开发者快速测试代码并查看结果,这对于调试和学习语言非常有用。Erlang的语法简洁明了,函数式编程风格强调无副作用的纯函数,这有助于写出易于理解和维护的代码...

Global site tag (gtag.js) - Google Analytics