Es sorprendente ver a la gente intentar comparar un lenguaje funcional como Scheme, Lisp o ML con los lenguajes imperativos estilo C, C++, C#, Java, ADA, Pascal o PL/SQL. Utilizan paradigmas diferentes, es decir, a la hora de programar debes pensar de forma diferente.
Programar en lenguaje funcional es muy diferente a hacerlo en un lenguaje imperativo. De hecho debes volver a aprender a programar. La ventaja es que luego según que cosas resultan mucho más fáciles de implementar en funcional que en imperativo. Por ejemplo, la implementación de una estructura de árbol balanceado en C o cualquier otro lenguaje imperativo es una cantidad de código considerable (no me refiero a usar una biblioteca que implemente un árbol, sino la programación del mismo desde las primitivas del lenguaje). En un lenguaje funcional se puede hacer con menos de cinco líneas de código (no ofuscado).
Por supuesto, PL/scheme no supone demasiadas ventajas para los programadores de lenguajes imperativos, pero para los programadores de lenguajes funcionales debe de ser una auténtica delicia.
Conozco a gente que el primer lenguaje que aprendieron fue Scheme, y la recursión y la abstracción de procedimientos les resulta lo más natural del mundo (una función que recibe datos y devuelve otra función...). Si partes de cero, no se hace más difícil que un lenguaje imperativo al uso, y tiene muchas ventajas didácticas. Compara eso con los "punteros a funciones" de C. Pero claro, se ve que usamos la "evaluación perezosa" para aprender programación, y una vez que manejas el paradigma imperativo no quieres volver a remover las neuronas y aprender otro.
Es cierto que para la mayoría de la gente, que ya haya programado una macro para algo que no sea EMACS, usar Scheme para programar scripts de Gimp puede ser duro, muy duro. Por otro lado, posiblemente para el que no tenga ni idea de programar, sea precisamente un ámbito dónde la programación funcional tenga sentido (pero no así "el coñazo de sintáxis" de LISP).
Personalmente habría puesto la opción de usar para los scripts además de Scheme algo del estilo de Python... vamos, algo exáctamente igual al Gimp que tengo instalado en mi ordenador, que incluye el script-fu y el python-fu (y podría instalar el perl-fu si lo necesitase).
Programación funcional
(Puntos:5, Interesante)Es sorprendente ver a la gente intentar comparar un lenguaje funcional como Scheme, Lisp o ML con los lenguajes imperativos estilo C, C++, C#, Java, ADA, Pascal o PL/SQL. Utilizan paradigmas diferentes, es decir, a la hora de programar debes pensar de forma diferente.
Programar en lenguaje funcional es muy diferente a hacerlo en un lenguaje imperativo. De hecho debes volver a aprender a programar. La ventaja es que luego según que cosas resultan mucho más fáciles de implementar en funcional que en imperativo. Por ejemplo, la implementación de una estructura de árbol balanceado en C o cualquier otro lenguaje imperativo es una cantidad de código considerable (no me refiero a usar una biblioteca que implemente un árbol, sino la programación del mismo desde las primitivas del lenguaje). En un lenguaje funcional se puede hacer con menos de cinco líneas de código (no ofuscado).
Por supuesto, PL/scheme no supone demasiadas ventajas para los programadores de lenguajes imperativos, pero para los programadores de lenguajes funcionales debe de ser una auténtica delicia.
Re:Programación funcional
(Puntos:2, Interesante)Re:Programación funcional
(Puntos:2)Es cierto que para la mayoría de la gente, que ya haya programado una macro para algo que no sea EMACS, usar Scheme para programar scripts de Gimp puede ser duro, muy duro. Por otro lado, posiblemente para el que no tenga ni idea de programar, sea precisamente un ámbito dónde la programación funcional tenga sentido (pero no así "el coñazo de sintáxis" de LISP).
Personalmente habría puesto la opción de usar para los scripts además de Scheme algo del estilo de Python... vamos, algo exáctamente igual al Gimp que tengo instalado en mi ordenador, que incluye el script-fu y el python-fu (y podría instalar el perl-fu si lo necesitase).