论坛首页 综合技术论坛

ERlang的语言特点及可以借鉴的东西,思考中。

浏览 10036 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-04-02  
Trustno1 写道
Erlang 是一个比较有意思的语言,兼具"程序既数据","数据算法分离"两种特性.所谓的程序既数据,是对Erlang的函数来说的,因为Erlang是FP,所以他的函数可以当作数据来使用.
比如说
   Fun=fun(x,y)->x+y end.
   list:fold(Fun,0,[1,2,3,4,5])
而"数据算法分离"则是对于Erlang的数据存储来说.考虑如下java代码

class exmaple
{
  public int  age;
  public String name;
  public boolean gender;
  public example(int _age,boolean _gender,String _name)
{
    age=_age;
    name=_name;
    gender=_gender;
}
 
  public void print_info()
{
   System.out.println("Name:"+get_name()+",Age:"+get_age()+",Gender:"+get_gender());

public int get_age()
{
  return age;
}
public String get_name()
{
  return name;
}

public boolean get_gender()
{
  return gender;
}

}

exmaple ex=new exmaple()
从某种意义上来说,对象ex就是一个把数据,DML(getter function),算法(print_info)的捆在一块的内存数据库,而类example就是这个数据库的shceme.
相同一个需求,如果用Erlang 来写的话.你就会发现,Erlang的数据不会与算法捆绑在一起,而是有专门存储数据的数据库ets/menisa来存放数据.然后通过类似SQL的数据库存取API来访问数据,将内存中的算法Apply到数据上得出结果再将数据写回数据库.
这样一大好处就在于分布式应用的情况下,内存数据不会因为算法的bug而导致丢失,一个节点的crash以后其内存映像能够非常快的迁移到另外一个节点上.这个特性在OO语言上是非常难以实现的.

数据算法分离,T1可以说的再详细一点吗?最好能有示范代码.
0 请登录后投票
   发表时间:2007-06-11  
Trustno1 写道
这样一大好处就在于分布式应用的情况下,内存数据不会因为算法的bug而导致丢失,一个节点的crash以后其内存映像能够非常快的迁移到另外一个节点上.这个特性在OO语言上是非常难以实现的.

不知道这是不是所谓的状态复制,难道OO语言做不到吗?OO语言一样可以做到数据算法分离,将纯javabean进行迁移不就可以了。

如果好处是恢复出bug时的上下文,先不考虑迁移后还会不会bug继续出,就拿bug发生率来说:一个上线软件出bug率应该不到10%(超过那绝对是测试不到家),这种好处还真没多大用。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics