2011-03-22 11 views

Respuesta

25

sintaxis de Erlang es muy similar al de Prolog, pero la semántica son muy diferentes. Una primera versión de Erlang fue escrito usando Prolog, pero Erlang de hoy en día ya no es significativa puede decirse que está "basado en Prolog."

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

https://github.com/rvirding/erlog

0

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

0

Es posible también utilizar la función de lista por comprensión en Erlang como una forma de poner en práctica en un estilo de programación con restricciones.

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

Usted alternativamente lugar generadores de elementos tomados de las listas (A - < listas: ss (0, 1)) y restricciones (A> B).

He resuelto recientemente el problema vinculado a continuación. Y si coloca las restricciones correctamente, tendrá la respuesta en un instante o segundo.

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

6

Sí.

La primera versión de Erlang no se escribió en Prolog, sino que se escribió en uno de los lenguajes de programación de lógica comprometida. Estos lenguajes cayeron retroceso de Prolog de ahí el nombre de "elección comprometida", es decir una vez a la elección se hizo no fue posible dar marcha atrás y probar con otro. Esto se hizo con el fin de simplificar la concurrencia de una forma de programación lógica. Otra forma de verlo es que los procesos concurrentes se aplicarían las restricciones a las variables, pero al ser variables lógicas y por lo tanto no reasignable estos serían sucesivos no limitaciones cambios de valor. La restricción podría asignar un valor parcial a una variable, que contiene otra variable que se asignaría más tarde. Este es el modelo subyacente de Erlang. La programación de la lógica de restricción ha tendido a ser utilizada para las versiones donde 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 herencia de programación lógica, pero es importante comprender que la eligió a través de los lenguajes de programación de lógica de elección comprometidos que la recogieron de Prolog, no directamente de Prolog. Aunque se idearon varios lenguajes de programación de lógica de elección comprometidos durante la década de 1980, no pudieron salir de la sombra de Prolog, y fueron derribados por su asociación con la fallida iniciativa de quinta generación japonesa, y también por equipos de desarrolladores que compitieron por la competencia. diferencias menores por lo que no se estableció ningún estándar.

Los desarrolladores de Erlang introdujeron un azúcar sintáctico que le daba un aspecto más funcional al código, y tomaron la decisión de mercadotecnia de promocionarlo como un lenguaje de programación funcional más que lógico, lo que permitió que no fuera arrastrado por la quinta generación posterior despido de la programación lógica.

+0

Gracias, ahora entiendo mucho mejor la unión y la inmutabilidad de las variables en Erlang. Es bueno saber de dónde vino. – Amiramix

Cuestiones relacionadas