procesos mundo hola ejemplos caracteristicas erlang prolog constraint-programming

erlang - mundo - lisp caracteristicas



¿Es Erlang un lenguaje de programación de constricción-lógica? (4)

Dado que Erlang se basa en Prolog, ¿significa esto que Erlang es un lenguaje de constricción lógica?
¿Erlang tiene bloques de construcción de Prolog: hechos, reglas y consulta?


En resumen, no, no lo es :) No tiene esos bloques de construcción. Se centra en la concurrencia, la programación paralela, las aplicaciones distribuidas y la tolerancia a fallos (a la vez que es un lenguaje funcional, estricto y declarativo).


No.

La sintaxis de Erlang es muy similar a la de Prolog, pero la semántica es muy diferente. Una primera versión de Erlang fue escrita usando Prolog, pero el Erlang de hoy ya no puede decirse que esté "basado en Prolog".

Erlang no incluye el retroceso u otras características de Prolog que se usan regularmente para la programación lógica. Por supuesto, puede implementar Prolog en otros idiomas, y Erlang es una opción más fácil que otros. Esto se puede ver en el proyecto "Erlog" de Robert Virding:

https://github.com/rvirding/erlog


Puede utilizar la función de comprensión de lista en Erlang como una forma de implementación en un estilo de programación restringido.

% Produce the tuple {1, 0} % constraint_test() -> [ {A, B} || A <- lists:seq(0, 1), B <- lists:seq(0, 1), A > B].

También puede colocar generadores de elementos tomados de las listas (A <- listas: seq (0, 1)) y restricciones (A> B).

Recientemente resolví el problema vinculado a continuación. Y si coloca las restricciones correctamente, tendrá la respuesta en un instante de un segundo.

http://www.geocaching.com/seek/cache_details.aspx?guid=a8605431-53b5-4c2c-97fb-d42ee299b167


Sí.

La primera versión de Erlang no se escribió en Prolog, se escribió en uno de los lenguajes de programación de lógica de elección comprometida. Estos idiomas eliminaron el retroceso de Prolog, por lo que el nombre de "elección comprometida" significa que una vez que se hizo una elección no fue posible retroceder e intentar con otro. Esto se hizo para simplificar la creación de una forma de programación lógica concurrente. Otra forma de verlo es que los procesos concurrentes aplicarían restricciones a las variables, pero como son variables lógicas y, por lo tanto, no se pueden reasignar, serían restricciones sucesivas, no cambios de valor. La restricción puede asignar un valor parcial a una variable, que contiene otra variable que se asignaría más adelante. Este es el modelo subyacente de Erlang. La programación de lógica de restricción ha tendido a usarse para versiones en las que las restricciones también podrían incluir declaraciones matemáticas sobre posibles rangos de variables con valores numéricos previstos.

La sintaxis de Erlang muestra su legado de programación lógica, pero es importante entender que lo adquirió a través de los lenguajes de programación lógica de elección comprometida que lo tomó de Prolog, no directamente de Prolog. Aunque se diseñaron varios lenguajes de programación de lógica de elección comprometida durante la década de 1980, no pudieron retirarse de la sombra de Prolog, y fueron derribados por su asociación con la fallida iniciativa de la quinta generación japonesa, y también por equipos competidores de desarrolladores que discutieron Pequeñas diferencias por lo que no se estableció ningún estándar.

Los desarrolladores de Erlang introdujeron un azúcar sintáctico que dio una apariencia más funcional al código, y tomó la decisión de marketing de promocionarlo como un lenguaje de programación funcional en lugar de lógico, lo que permitió que no se viera afectado por el rechazo de la programación lógica posterior a la quinta generación. .