El modelo de memoria está basado en "tail-call optimization" de unidades con estado llamadas "procesos". Estos procesos no guardan información de estado compartida, comunicándose únicamente mediante mensajes. Si un proceso es modificado y algo falla, se restituye a su estado previo (parecido a la destrucción y vuelta a crear del objeto, pero en memoria.)
Estas características permiten actualizaciones en caliente de la aplicación, cosa que no se ve en los ambientes OOP.
Sin entrar a realizar una introducción al lenguaje; existe una cierta correspondencia entre los modelos Erlang y OOP. Por ejemplo, una clase con propiedades y métodos:
public class myClass
{
private string myProperty;
public myClass(string argInit) {
myProperty = argInit;
}
public myMethod(string arg1, int arg2) {
//do something
myProperty = arg1 + arg2.toString();
}
}En un proceso en Erlang:
myClass(myProperty) ->
receive
{myMethod, Arg1, Arg2 } ->
myClass(Arg1 ++ Arg2)
end.
Cuyo constructor queda implícito en el desove (spawn) del proceso:
spawn( myClass, [argInit ]).
Asi que un método de un objeto (OOP) es un mensaje en Erlang, tal como se describe en los diagramas de secuencia UML.
No hay comentarios:
Publicar un comentario