¿Es Erlang realmente un lenguaje de modelo de actor?

13

Estaba leyendo este artículo:

enlace

Y menciona que:

  

... en el modelo de actor, incluso un entero se representa como un actor ...

Wikipedia confirma:

  

El modelo Actor adopta la filosofía de que todo es un actor.

Erlang tiene muchos tipos de datos y esos tipos no son actores por lo que puedo decir.

No significa que Erlang no sea un lenguaje modelo de actor de una manera en que algunas personas dicen que, por ejemplo, ¿Java no es un lenguaje funcional solo porque carece de ciertas funciones de programación funcional?

PS: por extensión, significa que Akka definitivamente no es un modelo de actor porque además de los tipos de datos que no son actores provenientes del idioma anfitrión, incluso permite que los actores heredados extiendan su comportamiento a través de las instalaciones del idioma anfitrión.

    
pregunta Den 26.03.2015 - 15:13

1 respuesta

32

Aunque el Modelo de actor es más antiguo que Erlang, los diseñadores de Erlang solo se enteraron del Modelo de actor después de haber diseñado Erlang, por lo que es de esperar algunas diferencias.

Sin embargo, siguieron caminos paralelos de evolución: el modelo de actor fue creado por Carl Hewitt basándose en el mensaje que pasa la semántica de Smalltalk. Alan Kay, a su vez, había basado el mensaje que pasa la semántica de Smalltalk en la evaluación de PLANNER basada en objetivos, que fue diseñada por ... Carl Hewitt.

PLANNER fue el precursor de Prolog. Erlang originalmente no tenía la intención de ser un lenguaje, sino que comenzó como una biblioteca para la programación distribuida tolerante a fallas en Prolog, y luego se convirtió en un dialecto de Prolog, antes de que se convirtiera en su propio idioma, todavía hasta hoy en día muy influenciado por Prolog. (Además, el intérprete original de Erlang fue escrito en Prolog).

Por lo tanto, las similitudes entre los procesos en Erlang, los objetos en OO y los actores en el modelo de actor están lejos de ser una coincidencia.

Erlang es un lenguaje con varias capas, cada una de las cuales son superconjuntos de las capas inferiores. La capa más pequeña es Functional Erlang . Este es un lenguaje funcional estándar con algunas adiciones heredadas de Prolog, como la unificación en lugar de vinculación / igualdad. Si agregamos Procesos y Mensajes a eso, obtenemos Concurrent Erlang . Si agregas procesos remotos, obtienes Distributed Erlang . Ahora agregue algunas bibliotecas y patrones de diseño desde la OTP, y tendrá Erlang tolerante a fallas.

Los procesos son actores. (También son objetos.) El dentro de de los procesos es funcional, no está basado en actores. La estructura de un gran sistema Erlang tolerante a fallas construido con las herramientas y los patrones de la OTP, a menudo es muy orientado a objetos.

Por lo tanto, depende de la escala que estés viendo.

En un sistema grande típico de Erlang, tiene una arquitectura orientada a objetos con actores de paso de mensajes implementados mediante programación funcional. Lo que OTP llama a server está estrechamente relacionado con un objeto, server s se compone de procesos (que son actores), los procesos utilizan funciones internamente.

En general, no creo que ningún lenguaje de actor puro haya dejado de investigar. Diablos, ni siquiera sé si el PLASMA de Carl Hewitt, el original Actor Language se implementó alguna vez.

    
respondido por el Jörg W Mittag 26.03.2015 - 15:49

Lea otras preguntas en las etiquetas