Archive for mayo, 2009

22nd may 2009

Programación funcional

El profesor de la asignatura de Lenguajes de Programación nos mandó hacer un trabajo para esta semana sobre distintos paradigmas de programación: Objetos, Funcional y Lógico. Cada alumno teníamos que escoger un lenguaje distinto de un paradigma y los que fuesen del mismo, hacer una presentación conjunta sobre el paradigma.

Yo me decanté por los lenguajes funcionales, porque ya sé Programación Orientada a Objetos y la Lógica no me atrae demasiado por ahora. Los funcionales, sin embargo, parecen bastante interesantes.

La característica fundamental de este paradigma es, obviamente, el uso de las funciones, pero no las que generalmente se denominan así (o métodos, procedimientos, etc.)  en la programación imperativa, sino que son más similares a las funciones matemáticas.

Esto es así porque cumplen la propiedad de la Transparencia Referencial, la cual dice, a grosso modo, que el valor devuelto por una función depende únicamente de los argumetnos con los que es llamada, y no de la historia del programa. Esta característica es fácilmente emulable en la programación imperativa prescindiendo del uso y modificación de variables globales. En los lenguajes funcionales es así siempre.

Los lenguajes más estrictos carecen de las estructuras iterativas clásicas, teniendo que utilizar la recursividad para resolver problemas que requieran repetición. Aunque algunos puedan disponer de las estructuras habituales, apenas se utilizan dado que la recursividad siempre se ha considerado una solución mucho más elegante y lógica que los bucles.

Aquí volvemos a acercarnos a las matemáticas, donde existen muchas ecuaciones en forma recursiva:

  • La Sucesión de Fibonacci, F0=0; f1=1; Fn=Fn-1+Fn-2
  • Factorial, 0!=1, n!=(n-1)!
  • Función de Ackerman

Otra característica muy importante de estos lenguajes es que no suelen trabajar directamente con datos simples como un entero o un booleano, sino que los organizan en colecciones, generalmente de tipo lista o arary.

Estos lenguajes tienen su base en los años 30, cuando Alonzo Church diseñó un sistema formal llamado Lambda-Cálculo para el estudio de las funciones y la recursión. Sólo se basa en tres reglas,  pero a primera vista parece algo complejo y no le he dedicado tiempo suficiente como para hablar de él aquí. Sólo sé que tiene la misma expresividad que una máquina de Turing, es decir, que cualquier algoritmo que pueda ejecutar un humano o una máquina, puede definirse dentro de este sistema.

El primer lenguaje funcional implementado fue LISP, muy influenciado por el λ-Cálculo, del cual, lo más famoso son la cantidad de paréntesis que hay que escribir para codificar cualquier cosa.

Un año antes, Kenneth E. Iverson había inventado una notación para enseñar y estudiar algoritmos y funciones de la computación. Cinco años más tarde la hizo pública y tuvieron que esperarse cinco años más a que se implementara completamente. Se llama APL y es el lenguaje más expresivo que existe. Yo elegí éste para mi presentación (esta versión tiene algún fallo y me hubiera gustado ampliarla con algunas cosas más), y dedicaré más adelante un post completo a él.

Poco después los lenguajes funcionales cayeron en el olvido, hasta que en los años 80 volvieron a atraer la atención de los desarrolladores y todo el mundo decidió crear su propio lenguaje funciónal, provocando la aparición de decenas de ellos (la lista en la Wikipedia es bastante amplia).

En medio de toda esta eclosión, los gurús de los lenguajes fucnionales decidieron juntarse en un congreso y elaborar un lenguaje estandarizado y, más o menos, a gusto de todos. De aquí nació Haskell en 1990, el cual sigue evolucionando.

Otros también conocidos son ML, Scheme, Miranda e incluso las hojas de cálculo tipo Excel podrían englobarse en estos grupos. El entorno matemático R (el que utilicé para el cálculo del Perceptron en mi PFC ) también es un lenguaje funcional (combinado con objetos).

Posted by Posted by Ender Muab'Dib under Filed under Informática Comments No Comments »

15th may 2009

¿Spam de Osce Biella?

Osce Biella, como pone en su página es una (o la) asociación de vecinos y comerciantes del Casco Viejo de Huesca.

Ayer a última hora de la tarde alguien —imagino que el administrador del sitio— escribió en mi última entrada (sobre unas viñetas cómicas) un texto criticando cómo ha llevado a cabo el Ayuntamiento el reciente asfaltado de varias calles del Casco Viejo durante la última semana.

Lógicamente he echado un vistazo por algunos otros blogs oscenses y, como cabía esperar, el mismo texto ha sido copiado en varios de ellos, sin importar tampoco que nada tuvieran que ver con la temática de la entrada. Por poner unos pocos: Huesca es Verde, Uno de Huesca o Comenta Huesca.

Por muy mal que se haya hecho todo desde la administración, no me parecen modos de dar difusión de la opinión de la asociación, pues nada tiene que ver con los contenidos de las entradas en las que comentan, de modo que nada aportan y desvían y enturbian el hilo de comentarios.

Los comentarios sirven para completar, corregir, opinar y, en definitiva, enriquecer los posts escritos por el autor del blog; y me parece una pena que se utilicen de ese modo.

Así pues, he borrado el comentario, como hago con todos los de SPAM, que escapan al filtro.

PD-Obviamente sé que con esto les publicito y les favorezco más que habiendo dejado el comentario, pero me da igual y quería dejar mi opinión y crítica hacia Osce Biella.

Posted by Posted by Ender Muab'Dib under Filed under Huesca Comments 19 Comments »

11th may 2009

The Perry Bible Fellowship

The Perry Bible Fellowship son unas tiras cómicas con un humor muy característico y ácido que me parece delicioso. Están en inglés, pero apenas tienen texto y en muchas ocasiones dicen más con las imágenes que con las frases. Me encantan los trazos con los que dibuja a los personajes, tan sencillos que es impensable que puedan llegar a ser tan expresivos.

Descubrí la página hace unos años, y recuerdo que entonces leí todos. La semana pasada me pasaron enlace a un par y me he visto más de la mitad. Hay media docena que me han encantado y que no puedo resistirme a compartirlos con todos:

pbf048-suicide_train

pbf126-one_more_day

pbf246-bee

pbf211-atlantis

pbf222-gamblin_man

pbf114-mime_city

pbf084-no_survivors

Con el último me he pasado de la media docena, pero es la viñeta con la que descubrí The Perry Bible Fellowship, así que tenía que ponerla. Como no caben todos los que me han encantado, linko a unos cuantos más que merece la pena que leas: Genius Sir, Kitty Photographer, The Golden Ticket, Reset, Msr. Hammer, Sweet Deal.

Posted by Posted by Ender Muab'Dib under Filed under Cachondeo Comments 5 Comments »