Cuando mi amigo comenzó a aprender Prolog en la escuela, me burlé de él por aprender un lenguaje inútil. Sin embargo, me mostró algunas cosas que nunca supe posibles; Quiero saber de dónde viene esta técnica.Multithreading en ... idiomas funcionales? (Prolog)
La técnica es la siguiente:
permutation(List) :-
isAMember(X, List),
deleteFirstElement(X, List, Substring),
% and so on
En este código, isAMember(X, List)
es una función que devuelve verdadero si es X
en List
. Sin embargo, hasta este punto X
no se define como una variable - por lo que el programa generará un grupo de nuevos hilos, uno para cada valor posible de X
que hace verdadero isAMember(X, List)
, y continúa desde allí.
Esto nos permite crear un algoritmo de subprocesos múltiples de la manera más simple, más elegante que jamás hubiera imaginado.
Así que mi pregunta es: ¿Es esto específico de Prolog, o una característica de todos los lenguajes lógicos y/o funcionales? Además, ¿dónde puedo aprender técnicas de subprocesamiento múltiple más increíbles como esta? Este es seguramente el futuro de la programación.
¡Yo diría que la programación comenzó de esta manera! Una máquina de Turing no determinista tiene este concepto. –
Prolog no es un lanauge funcional. Está especializado en la resolución de problemas de lógica. – Francis