Erlang

来自开放百科 - 灰狐
(版本间的差异)
跳转到: 导航, 搜索
(项目)
(项目)
第131行: 第131行:
 
*[[Scalaris]]
 
*[[Scalaris]]
 
*[[Disco]] MapReduce框架,Erlang + Python
 
*[[Disco]] MapReduce框架,Erlang + Python
 +
*[[EMQ]]
 
*[[ejabberd]]
 
*[[ejabberd]]
 
*[[RabbitMQ]]
 
*[[RabbitMQ]]

2020年9月17日 (四) 06:50的版本

Wikipedia-35x35.png 您可以在Wikipedia上了解到此条目的英文信息 Erlang Thanks, Wikipedia.
Erlang-90x90.gif

目录

简介

Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适合于构建分布式,实时软并行计算系统。

Erlang是参与者模型(Actor model)最佳实践。

使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅只是一两个环节,比起C程序的线程切换要高效得多得多了。

使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。

Erlang运行时环境是一个虚拟机,有点像Java虚拟机,这样代码一经编译,同样可以随处运行。它的运行时系统甚至允许代码在不被中断的情况下更新。另外如果你需要更高效的话,字节代码也可以编译成本地代码运行。

Yaws: 一个Erlang写的服务器,据说并发能是apache的15倍

Erlang + Yaws vs. Ruby on Rails

Open Telecom Platform (OTP) is written in Erlang.

Elixir programming language

新闻

自http://eclipse.org/home/eclipseinthenews.rss加载RSS失败或RSS源被墙

版本

安装

源代码

通过 kerl 编译和安装 Erlang 实例

kerl build git git://github.com/erlang/otp OTP_R16B01_RC1 r16b01_rc1

Mac OS X

brew unlink erlang
brew install erlang

Erlang MacPorts 包

sudo port selfupdate
sudo port install erlang
erl
1> toolbar:start().
2> mnesia:start().
erl -man io

Linux/UNIX

mkdir /usr/local/erlang
cd /usr/local/erlang
mkdir otp_r7b
cd otp_r7b
gunzip -c <SOME-DIR>/<PREFIX>.tar.gz | tar xfp -
./Install /usr/local/erlang/otp_r7b
ln -s /usr/local/erlang/otp_r7b/bin/erl /usr/local/bin/erl 

or Unpack, configure, make, and install as follows:

$ tar -xzf otp_src_R11B-4.tar.gz
$ cd otp_src_R11B-4
$ ./configure
$ make
$ sudo make install

or debian

apt-get install erlang

Windows

先安装.exe文件, 再将 D:\Program Files\erlang-5.6\bin 加入 path 环境变量

使用

1> toolbar:start().
2> halt(). // 退出
3> 2 + 5.
4>(42 + 77) * 66 / 3.
5> [First |TheRest] = [1,2,3,4,5].
6> First.
7> TheRest.
8> io:format("hello world~n", []).

函数式编程

-module(hhfuns).
-compile(export_all).
one() -> 1.
two() -> 2.
add(X,Y) -> X() + Y().
increment([]) -> [];
increment([H|T]) -> [H+1|increment(T)].
decrement([]) -> [];
decrement([H|T]) -> [H-1|decrement(T)].
map(_, []) -> [];
map(F, [H|T]) -> [F(H)|map(F,T)].
incr(X) -> X + 1.
decr(X) -> X - 1.

工具

在用户目录下创建.emacs,如 /Users/huihoo/.emacs 加入以下内容:
(setq load-path (cons "/usr/local/opt/erlang/lib/erlang/lib/tools-2.9.1/emacs" load-path))
(setq erlang-root-dir "/usr/local/opt/erlang")
(setq exec-path (cons "/usr/local/otp/erlang/bin" exec-path))
(require 'erlang-start)

wxWidgets

项目

案例

Facebook选择了C++和Erlang的组合。C++模块用户用于记录聊天信息,而Erlang模块“将在线用户的对话保存在内存中并且对长时间轮询(long-polled)请求提供支持”。epoll,Linux 2.6中出现的新系统调用,被用于驱动Erlang模块。Eugene 解释了决定选用Erlang的原因:简单的说就是因为Erlang能很好地满足我们的要求。Erlang是一种面向同步的函数式语言,它具有极其轻量级的用户空间“进程”,无共享的消息传递语义,内置的分布式系统和一个被二十多年实时软件系统实践所检验过的灾难恢复系统。

P2P

图集

图书

文档

链接

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱