BladeRunner escribió:Pues me has dejado intrigado... en qué se diferencian lenguajes declarativos e imperativos? Puedes poner unas líneas de código de ejemplo?
La verdad es que los de .product son unos máquinas... tengo todas las animaciones de ellos y las pongo de vez en cuando... Un saludo. BR
Pues la diferencia es que en un lenguaje declarativo dices lo que quieres y no como. Poir ejemplo, en sql que es lo que se usa para las bases de datos relacionales, si quieres sacar, por ejemplo, los nombres de los empleados de una tabla de empleados, pondrias
SELECT nomemp FROM EMP
No tienes que decir como lo harias.
SIn embargo, en un lenguaje imperativo tendrias que decir explicitamente como lo harías. Imaginemos que es una tabla en memoria en este caso (lamento mi sintaxis de c, hace mucho que no programo en el)
int i;
for (i=0;i<=maxtabla;i++) {
printf("%s",tabla[i]);
}
Esto es muy chorras, no me apetecia pensar. El tema en cuestion es que en c tienes que decirle como recorrer la tabla, como quieres lo que salga por pantalla, controlar la memoria, etc etc. Ahora bien, con un programador eficiente lo segundo es mejor, pero si no se tiene idea es mejor lo primero. En una bd nadie se va a poner a hacer las consultas en nada que no sea sql ya que es el sistema gestor de la base de datos el que hace todo el chollo.
Ahora vamos a la segunda parte, lenguajes funcionales. SON UNA PUTA RALLADA. Consiste en definir las cosas mediante funciones matematicas. Hay bastantes ejemplos como el caml, coq, haskell, erlang. El caml se usa bastante, por ejemplo el mldonkey esta hecho en caml. Yo con caml he trabajado y si te adaptas a su mentalidad es relativamente facil. Una máxima de camel y de la programación funcional en general es que la mente humana esta pensada para trabajar de forma recursiva. En los lenguajes no funcionales la recursividad es algo a evitar, ya que no tenemos certeza de que un programa recursivo finalice. En la programación funcional es más facil verificar esto. Además en algunos lenguajes funcionales como coq o erlang, lo que se hace es plantear el programa como una demostración matemática. Esto es una rallada y bastante complicado, pero se consigue saber que ese programa NO FALLA NUNCA. Esto es importantísimo para aplicaciónes críticas como sistemas de vuelo. De hecho el erlang lo inventó ericsson para sus móviles, para que no dieran fallos de software.
Bueno, espero que no halla muchos fallos que estoy redactando a toda prisa. PAra cualquier duda avisad y os posteo código de alguna práctica de la facultad