erlang 订阅
Erlang在1991年由爱立信公司向用户推出了第一个版本,经过不断的改进完善和发展,在1996年爱立信又为所有的Erlang用户提供了一个非常实用且稳定的OTP软件库并在1998年发布了第一个开源版本。目前Erlang同时支持的操作系统有linux,windows,unix等,可以说适用于主流的操作系统上,尤其是它支持多核的特性非常适合现在的多核CPU,而分布式特性也可以很好融合目前的各种分布式集群。 展开全文
Erlang在1991年由爱立信公司向用户推出了第一个版本,经过不断的改进完善和发展,在1996年爱立信又为所有的Erlang用户提供了一个非常实用且稳定的OTP软件库并在1998年发布了第一个开源版本。目前Erlang同时支持的操作系统有linux,windows,unix等,可以说适用于主流的操作系统上,尤其是它支持多核的特性非常适合现在的多核CPU,而分布式特性也可以很好融合目前的各种分布式集群。
信息
类    型
编程语言
开发者
CS-Lab
适    用
主流的操作系统
中文名
Erlang
外文名
Erlang
问    世
1987年
Erlang简介
Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang是运行于虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并发式及分布式。顺序执行的Erlang是一个及早求值,单次赋值和动态类型的函数式编程语言。Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统。使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅 只是一两个环节,比起C程序的线程切换要高效得多得多了。使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。Erlang运行时环境是一个虚拟机,有点像Java虚拟机,这样代码一经编译,同样可以随处运行。它的运行时系统甚至允许代码在不被中断 的情况下更新。另外如果需要更高效的话,字节代码也可以编译成本地代码运行。 [1] 
收起全文
精华内容
参与话题
问答
  • erlang

    千次阅读 2018-01-22 09:34:49
    erlang 学习erlang一个星期的体会 ​ 前言:我只是一个初学者,学了一个星期,感觉只是熟悉了一点语法而已。。还没体会到面向并发编程的 特点,不过感觉这么语言很有自己的特点,我想给大家分享下我的体会 ...

    erlang

    学习erlang一个星期的体会

    ​ 前言:我只是一个初学者,学了一个星期,感觉只是熟悉了一点语法而已。。还没体会到面向并发编程的

    特点,不过感觉这么语言很有自己的特点,我想给大家分享下我的体会

    预备知识

    ​ 关于递归和尾递归(ps:这个语言是没有for循环之类,全是靠递归)我通过代码来解释吧。

    ~~~erlang
    %%求第N个斐波那契数值
    %%递归:
    getfei(N) ->
    getfei(N-1)+getfei(N-2);
    getfei(2) ->
    1;
    getfei(1) ->
    1.
    %%尾递归
    getfei(N,X,Y) when N<3 ->
    Y;
    getfei(N,X,Y) ->
    getfei(N-1,Y,X+Y).

    %% 这个就erlang语言了 ps(其实尾递归就是加了一个标志变量的来控制)

    ~~~


    数据类型

    erlang中 很重要的一点,也是和其他语言的区别 再说这个之前 我又要再啰嗦一下(ps:很难受,我就是想到那里就说哪里吧……..)
    ​ 变量:

    ​ erlang的变量只能赋值一次,一旦被绑定了,就不能再给他赋值了

    ​ 语法:首字母必须大写(小写字母开头的是原子)或下划线开头且第二个字母为大写,如:

    ​ Name Z _SomeThing _Xy

    ​ 所以说对于erlang = 就是模式匹配 而不是赋值 模式匹配是个很重要的概念 后面我会列出来

    ~erlang
    %%例子
    1> X = 2.
    2> X= 3.
    ** exception error: no match of right hand side value 3
    ~

    Erlang中只有8种基本的数据类型:

    ​ integer、float、atom、reference、fun、port、pid、bitstring

    ​ 同时提供2种复合结构:tuple,list,这就是Erlang的所有数据类型。

    ​ Erlang中没有字符串,字符串是个整数列表,”HelloCloud”是一个列表的简写

    ​ number < atom < reference < fun < port < pid < tuple < list < bit string

    ~~~erlang
    %%因为数据类型可以比较所以
    0 == fasle
    =>false
    1 < false
    => true

    %%还有一些符号比较
    22.0==22
    true
    22.0 =:=22
    false

    ~~~

    个人体会:元组和列表用的很多,而且是重点,还有就是记录

    练习题

    我感觉上题目的话,来理解最是最好的,多练点题目,你就会注意语法的那些小细节

    ~~~erlang
    %%99乘法表
    %%倒的
    muti(Max,Max) ->
    io:format(“~p*~p=~p~n”,[Max,Max,Max*Max]);
    muti(I,Max) ->
    io:format(“~p*~p=~p “,[I,Max,I*Max]),
    muti(I+1,Max).

    nine(1) -> 
        muti(1,1);
    nine(X) -> 
        muti(1,X),
        nine(X-1).
    

    =>result
    1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
    1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
    1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
    1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
    1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
    1*4=4 2*4=8 3*4=12 4*4=16
    1*3=3 2*3=6 3*3=9
    1*2=2 2*2=4
    1*1=1

    %%顺的
    muti(Max,Max) ->
    io:format(“~p*~p=~p~n”,[Max,Max,Max*Max]);
    muti(I,Max) ->
    io:format(“~p*~p=~p “,[I,Max,I*Max]),
    muti(I+1,Max).

    nine(1) -> 
        muti(1,1);
    nine(X) -> 
        nine(X-1),
        muti(1,X).
    

    =>result
    1*1=1
    1*2=2 2*2=4
    1*3=3 2*3=6 3*3=9
    1*4=4 2*4=8 3*4=12 4*4=16
    1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
    1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
    1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
    1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
    1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

    %%上面两个代码仔细观察下!!

    %%判断素数
    isshusu(X) ->
    Flag = round(math:sqrt(X)),
    L=lists:seq(2,Flag),

        G=[ Y || Y<-L, X rem Y =:= 0],%%三段式 顺序不能错
        if
            length(G)>0 ->
                io:format("不是素数~n");
            length(G)=:=0 -> 
                io:format("是素数~n")
        end.
    

    %% *
    *
    *
    star(N) ->
    [for(Y) || Y<-lists:seq(1, N)].

    for(Max) ->
    [io:format(“*”)|| X <- lists:seq(1, Max)],
    io:format(“~n”).

    %%**


    **
    *
    for(1) ->
    io:format(“*~n”);
    for(Max) when Max>1 ->
    io:format(“*”),for(Max-1).

    star(1) ->
    for(1,1);
    star(Number) ->
    for(1,number),star(Number).

    %% *



    star(N) ->
    [for(Y,N) || Y<-lists:seq(1, N),Y rem 2 =:= 1].

    for(Max,N) ->
    [io:format(” “)|| Y <- lists:seq(1, (N-Max)div 2)],
    [io:format(“*”)|| X <- lists:seq(1, Max)],
    io:format(“~n”).

    %%接下来我要放大招了
    %%通过几天的学习,我写了一个计算器,可以判断优先级 类似这样的 a*b+c*(d+e)*f+g
    %% @author 30555
    %% @doc @todo Add description to calculator.
    %%
    %% a + b * c + ( d * e + f ) * g
    -module(calculator).

    %% ====================================================================
    %% API functions
    %% ====================================================================
    -export([rpn/1,rpncal/1]).

    -define(F, #{“)”=>0,”+”=>1,”-“=>1,”*”=>2,”/”=>2,”(“=>3}).
    rpn(L) ->
    rpn(string:tokens(L, ” “),[],[]).

    rpn([],[],Resu) ->
    rpncal(lists:reverse(Resu));
    rpn([],Sign,Resu) ->
    rpn([],[],lists:reverse(Sign) ++ Resu);
    rpn([H|T]=L,Sign,Resu)->
    case maps:is_key(H, ?F) of
    false -> rpn(T,Sign,[H|Resu]);
    true -> rpn2(L,Sign,Resu)
    end.

    rpn2([H|T],[],Resu) ->
    rpn(T,[H],Resu);
    rpn2([H|T]=L1,[X|Sign]=L2,Resu) ->
    A = maps:get(H, ?F) - maps:get(X, ?F),
    rpn22(A,L1,L2,Resu).

    rpn22(A,[H|T]=L1,[X|Sign]=L2,Resu) ->
    if A > 0 ->
    rpn(T,[H|L2],Resu);
    abs(A) =:= 3 ->
    rpn(T,Sign,Resu);
    A =< 0 ->
    case maps:get(X,?F) =:=3 of
    true ->
    rpn(T,[H|L2],Resu);
    false ->
    rpn2(L1,Sign,[X|Resu])
    end
    end.

    rpncal(L) ->
    io:format(“==========>~p”,[L]),
    [Res] = lists:foldl(fun rpn/2, [], L),
    Res.
    read(N) ->
    case string:to_float(N) of
    {error,no_float} -> list_to_integer(N);
    [F,_] -> F
    end.

    rpn(“+”,[N1,N2|S]) ->
    [N2+N1|S];
    rpn(“*”,[N1,N2|S]) ->
    [N2*N1|S];
    rpn(“/”,[N1,N2|S]) ->
    [N2/N1|S];
    rpn(“-“,[N1,N2|S]) ->
    [N2-N1|S];
    rpn(X,Stack) ->
    [read(X)|stack].

    %% ====================================================================
    %% Internal functions
    %% ====================================================================

    ~~~

    展开全文
  • Erlang

    2010-08-07 11:20:00
    Erlang

    erlangotp.com

     

    http://erlangotp.com/

     

    erldocs.com

     

    http://erldocs.com/

    展开全文
  • asp.net core3.1要使用RabbitMQ得事先安装Erlang 步骤一:下载erlang 下载地址: 64位:https://www.erlang.org/downloads 步骤二:安装erlang 直接点击exe安装,安装路径自己配的要记住在哪里,最好自己指定一个...

    asp.net core3.1要使用RabbitMQ得事先安装Erlang

    步骤一:下载erlang

    下载地址:

    64位:https://www.erlang.org/downloads

    步骤二:安装erlang

    直接点击exe安装,安装路径自己配的要记住在哪里,最好自己指定一个安装目录,等等会用到。

    步骤三:配置环境变量

    配置ERLANG_HOME环境变量,其值指向erlang的安装目录(就是步骤二的路径)。另外将 ;%ERLANG_HOME%\bin 加入到Path中。
    在这里插入图片描述
    在这里插入图片描述

    步骤四:检查安装是否成功

    打开cmd,输入erl

    在这里插入图片描述
    后续在core3.1的使用请看下篇文章

    展开全文
  • Linux下安装Erlang

    万次阅读 2019-03-01 16:51:00
    Linux下安装Erlang 一、升级openssl # cd /usr/local/ # wget http://www.openssl.org/source/openssl-1.0.1s.tar.gz # tar -zxvf openssl-1.0.1s.tar.gz # cd openssl-1.0.1s # ./config --prefix=/usr/local/...

    Linux下安装Erlang

    一、升级openssl

    # cd /usr/local/
    # wget http://www.openssl.org/source/openssl-1.0.1s.tar.gz
    # tar -zxvf openssl-1.0.1s.tar.gz
    # cd openssl-1.0.1s
    # ./config --prefix=/usr/local/openssl
    # vim Makefile
    --修改CFLAG= -DOPENSSL_THREADS 修改成 CFLAG= -fPIC -DOPENSSL_THREADS
    --也就是添加 -fPIC
    # make && make install
    

    2743275-dfbc236a0a6fc515.png

    二、安装Erlang

    # cd /usr/local/
    # wget http://erlang.org/download/otp_src_18.3.tar.gz
    # tar -zxvf otp_src_18.3.tar.gz
    # cd otp_src_18.3
    --创建Erlang安装目录
    # mkdir /usr/local/erlang
    --ErLang安装依赖
    # yum install -y gcc gcc-c++ unixODBC-devel openssl-devel ncurses-devel
    # ./configure --prefix=/usr/local/erlang
    # make && make install
    --配置Erlang环境变量
    # vim /etc/profile
    文件末尾添加 export PATH=$PATH:/usr/local/erlang/bin
    # source /etc/profile
    

    三、验证erlang是否安装成功

    # erl
    # ssl:versions().
    # halt().
    

    2743275-81a99d09c5fb870d.png

    展开全文
  • Zero-dependency Erlang RPM for RabbitMQ This is a (virtually) zero dependency 64-bit Erlang RPM package that provides just enough to run RabbitMQ. It may be easier to install than other Erlang RPMs in...
  • Erlang 之父去世,他留给程序员两点忠告

    万次阅读 多人点赞 2019-04-21 21:11:01
    感谢如此热爱编程的Joe Armstrong,一生为编程所作出的贡献。
  • erlang21.1.2

    2019-02-24 17:21:31
    最新版本rabbitmq需要最新版本的erlang,但是rabbitmq官网不提供erlang的最新版本下载,经过四处寻找,找到此版本,经测试rabbitmq-server3.7.12可以正常启动,如果rabbitmq-server启动时报{"init terminating in do...
  • Erlang编程指南

    2018-04-03 20:21:22
    erlang编程指南》是对erlang语言的深入介绍。erlang是任何必须并发、容错和快速响应的环境的理想编程语言。随着多核处理器及其针对并发的新的可扩展方式的发展,erlang得到了广泛的使用。通过本书,你将学会如何...
  • Erlang and OTP in Action Martin Logan, Eric Merritt, and Richard Carlsson MEAP Began: August 2008 Softbound print: May 2010 (est.) | 500 pages ISBN: 1933988789 Part One: Getting Past Pure Erlang; ...
  • erlang_ale, Erlang嵌入式框架嵌入式框架的Erlang Actor库 用于嵌入式的/ale Erlang erlang/jar提供了高级抽象,用于嵌入式平台上通过 I2C 。SPI和kdb与硬件外设接口。正在启动erlang/ale同时支持rebar3和 erlang.mk...
  • erlang 23.1

    2020-09-27 16:42:55
    最新 erlang 下载,帮助大家解决下载慢的问题。官网的下载真的很慢很慢很慢,而且文件也很大,为了方便大家的下载,这里提供一份大家可以接受的积分,可以私信。
  • erlang 20.3

    2018-04-14 20:55:16
    学习RabbitMQ为了搭建运行环境,erlang的下载实在太慢,先放在这里,供大家下载。 这个是source file,要编译的。 不能用于window,window的我另外上传
  • Erlang安装包

    2018-12-13 17:41:05
    Erlang是一种通用的面向并发的编程语言。 其特点有:并发性、分布式、健壮性、软实时性、热代码升级、递增式代码装载、外部接口、速错等等等等
  • [Erlang] Erlang 杂记 VI

    千次阅读 2014-11-04 11:53:10
    Adding special-purpose processor support to the Erlang VM P23 简单介绍了Erlang Compiler和Beam文件格式;The Erlang Compiler in short 章节提到了 Core Erlang 这个之前有提到过:[Erlang 0120] Know a ...
  • Erlang 印象

    千次阅读 2015-03-04 16:33:29
    和朋友切磋高并发的时候,有一次涉及了ErlangErlang出自名门爱立信,具有稳定性极高的虚拟机和平台库,Facebook用它实现了聊天系统,Amazon 开发了SimpleDB,最令人惊叹的是What'sApp了,高并发的处理机制令人瞩目...
  • erlang优化

    千次阅读 2013-08-15 17:47:46
     消息和binary内存:erlang:process_flag(min_bin_vheap_size, 1024*1024),减少大量消息到达或处理过程中产生大量binary时的gc次数  堆内存:erlang:process_flag(min_heap_size, 1024*1024),减少处理过程中...
  • erlang doc

    千次阅读 2013-05-18 19:18:52
    1.http://www.erlang.org/doc/apps/erts/erl_dist_protocol.html Distribution Protocol 2.http://www.erlang.org/doc/man/erl.html erl命令详解 3....
  • Erlang经验

    千次阅读 2013-06-01 19:24:12
    学习Erlang有点滴收获就会记录到Evernote,今天又整理出来了一部分,分享一下.  下面的内容有的来自项目实践,有的来自Stackoverflow,erlangqa;erlangqa上的几个问题都是litaocheng给出的答案,厉害! 简单的开始 ...
  • erlang随机数

    千次阅读 2013-05-24 16:12:59
    uniform() ->  {A1, A2, A3} = case get(random_seed) of  undefined ->  seed0();
  • erlang 20.1 安装包Win64、otp_win64_20.1.exe(官网大小:92M) erlang 20.1 安装包Win32、otp_win32_20.1.exe(官网大小:91.12M) 由于上传文件大小限制,目前只放了64位的,各位可以去度娘网盘下载吧 64位下载--...

空空如也

1 2 3 4 5 ... 20
收藏数 23,970
精华内容 9,588
关键字:

erlang