精华帖 (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可以说的再详细一点吗?最好能有示范代码. |
|
返回顶楼 | |
发表时间:2007-06-11
Trustno1 写道 这样一大好处就在于分布式应用的情况下,内存数据不会因为算法的bug而导致丢失,一个节点的crash以后其内存映像能够非常快的迁移到另外一个节点上.这个特性在OO语言上是非常难以实现的.
不知道这是不是所谓的状态复制,难道OO语言做不到吗?OO语言一样可以做到数据算法分离,将纯javabean进行迁移不就可以了。 如果好处是恢复出bug时的上下文,先不考虑迁移后还会不会bug继续出,就拿bug发生率来说:一个上线软件出bug率应该不到10%(超过那绝对是测试不到家),这种好处还真没多大用。 |
|
返回顶楼 | |