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).
¿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.
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:
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.
Trabajar+Estudiar=No postear
Ya hace dos semanas de mi último post, justo dos días antes de empezar a trabajar. La empresa con la que estuve haciendo prácticas en verano me llamó recientemente para un trabajillo de aproximadamente un mes.
No sería tan malo si no se me hubiese juntado esta semana con una entrega de prácticas —que como buen estudiante decidí dejar para última hora—, querer dejar al día otras prácticas que tenía a mitad, y tener que ir empezando la semana que viene un trabajo sobre el Paradigma Funcional para los siguientes días.
Además, con el horario que llevo salgo del curro y voy directo a clase, de modo que llego a casa tarde y cansado; y con el tiempo justo para terminar las cosas que tengo pendientes de la universidad. De ese modo, me parece que esto lo voy a tener bastante parado durante las próximas tres o cuatro semanas. Ojalá tenga tiempo para publicar algo durante esta temporada, pero lo dudo. Así que, hasta pronto.
El Blog
Hace dos o tres meses compartía tres nuevos blogs que acababa de descubrir. Uno de ellos, Pasa la vida, me encantó entonces, y me sigue pareciendo impresionante.
Jordi Guzman, el autor, realmente se entrega al blog, escribiendo —como ya dije entonces— al menos tres o cuatro entradas por día; todas increibles. Y para muestra, la semana pasada dejó de escribir un día, puesto que se le había estropeado el portátil el sábado. El lunes posteó explicándolo y avisando de que tenía que instalar todo lo habitual tras un formateo y que esperaba escribir tres horas después. Efectivamente, media hora más tarde de lo previsto aparecía un nuevo artículo. Esto es dedicación, demonios.
Lo que más me maravilla del asunto no es sólo la dedicación, sino el tiempo. Yo me pego todo el santo día leyendo blogs, la Wikipedia y navegando por internet leyendo cosas interesantes, pero rara es la ocasión que encuentro más de una cosa que merezca la pena publicar. Y cuando lo hago suelo perder un rato: no es cuestión de copiar y pegar dos tonterías y enlazarlas con una buena frase. Habitualmente hay que leer en varios sitios, en unos ampliando la información y en otro especificando detalles. Hay que contrastar fuentes en caso de dudas, y es necesario releer cosas ya leídas para recuperar ideas o extraer frases a citar. Ayer mismo releí en diagonal las cincuenta primeras páginas del libro buscando un pasaje que no encontré y algún otro con el que completar el post.
También es que me enrollo más que Javier Marías, y así me salen estos tochos de posts para no decir nada. Supongo que por eso me gustó el libro. Escribía esto para aprovechar a recomendar algunas de las últimas entradas que más me han gustado de Pasa la vida. Un pelín organizadas y reseñadas las que no os podéis perder de ninguna manera:
- Fotografía:Impactos de perdigones; Emilio Morenatti – Pakistán; Pam Wood fotografías; Cebras amaestradas; Aquellos locos bajitos.
- Ilustración: Mariano Villalba – Fotomanipulación; Adam Simpson Ilustraciones; John Berkley ilustraciones; Bernard Zuber – Ilustraciones para “La vida execrable de Guillemette Babin, bruja”; Dan Witz pinturas.
- Videos: Ikso Estudio – Zapping (obligatorio); Pájaros y tendido eléctrico.
- Divulgación científica: Las andanzas de Amstrong y Aldrin en la Luna; Mínimo solar más tranquilo desde 1913; Calendario del universo (obligatorio); ¿La bola de fuego de Tunguska fue una bomba química cometaria?; Estudiando la corteza exterior de las estrellas de neutrones.
- Historia: 1709: El año en que se congeló Europa (obligatorio).
Mañana en la batalla piensa en mí
El año pasado leí este libro homónimo de Javier Marías —el primero que leía del autor, pese a adorar sus artículos— y no me disgustó. Tiene un estilo muy personal, divagando constantemente sobre temas que nada tienen que ver con la narración, mediante los cuales Javier Marías aprovecha para reflexionar sobre el mundo y recordar vivencias. Por lo visto todo lo que escribe es en este plan, lo cual detestan algunos, pero a mí me llegó a gustar la novela.
Pero lo que más se repite —y que me ha llevado a escribir este post— es la frase que da título al libro, extraída de Ricardo III. Parece ser que Javier Marías escoge los títulos de todas sus novelas de diálogos de obras de Shakespeare. Ya no me acordaba, pero supongo que la reciente lectura de Hamlet la ha relacionado en mi cerebro y la ha activado, así que llevo un par de días acordándome de esta cita. Pensaba que la había publicado aquí, y no la encontraba, pero resulta que lo hice en un comentario en la Academía de Chimpancés. Para no volverme loco la próxima vez, lo copio aquí también.
No parece estar claro quién lo dice, ni si son las palabras exactas, pero me gusta tal cual está. En un foro especulan que pueda ser «el conjuro de Bakio, un anatema guerrero al que Shakespeare recurrió para maldecir a Ricardo III y asegurar su derrota en la última batalla contra Richmond». Sea como sea, hace unos días que no sale de mi cabeza, así que a ver si escribiéndola se asienta.
Mañana en la batalla piensa en mí,
y caiga tu espada sin filo: desespera y muere.Pese yo mañana sobre tu alma,
sea yo plomo en el interior de tu pecho
y acaben tus días en sangrienta batalla:
caiga tu lanza.Piensa en mí cuando fui mortal,
desespera y muere.Llena ahora tu sueño de perturbaciones.
Mañana en la batalla piensa en mí,
y caiga tu espada sin filo.Mañana en la batalla piensa en mí,
cuando fui mortal,
y caiga herrumbrosa tu lanza.Pese yo mañana sobre tu alma,
sea yo plomo en el interior de tu pecho
y acaben tus días en sangrienta batallaMañana en la batalla piensa en mí,
desespera y muere.
Bueno, he sido un poco parco al hablar del libro (PDF descargable en MediaFire) de Javier Marías. La historia empieza muy interesante: El protagonista, Victor Francés, es un escritor de mediana edad invitado (en su segunda cita) a cenar a la casa de una mujer cuyo marido está de viaje de negocios en Inglaterra; sin embargo, cuando deciden pasar al dormitorio, ella empieza a sentirse mal y muere entre sus brazos. La novela parte de las reflexiones sobre la muerte que Victor inexorablemente piensa tras tan dramático suceso y continua con un intento por calmar la inquietud que la infidelidad no consumada despierta en él. A continuación, un extracto del principio:
«Fue una suerte que aún no estuviera desnuda, o no del todo, estábamos justamente en el proceso de desvestirnos, el uno al otro como suele suceder la primera vez que eso sucede, esto es, en las noches inaugurales que cobran la apariencia de lo imprevisto, o que se fingen impremeditadas para dejar el pudor a salvo y poder tener luego una sensación de inevitabilidad, y así desechar la culpa posible, la gente cree en la predestinación y en la intervención del hado, cuando le conviene. Como si todo el mundo tuviera interés en decir, llegado el caso: ‘Yo no lo busqué, yo no lo quise’, cuando las cosas salen mal o deprimen, o se arrepiente uno, o resulta que se hizo daño. Yo no lo busqué ni lo quise, debería decir yo ahora que sé que ella ha muerto, y que murió inoportunamente en mis brazos sin conocerme apenas —inmerecidamente, no me tocaba estar a su lado—. Nadie
me creería si lo dijera, lo cual sin embargo no importa mucho, ya que soy yo quien está contando, y se me escucha o no se me escucha, eso es todo. Yo no lo busqué, yo no lo quise, digo ahora por tanto, y ella ya no puede decir lo mismo ni ninguna otra cosa ni desmentirme, lo último que dijo fue: ‘Ay Dios, y el niño’. Lo primero que había dicho fue: ‘No me siento bien, no sé qué me pasa’».
Los listos del C
Tengo una hipótesis que espero poder convertir pronto en teoria.
En toda carrera de informática hay al menos un listo del C por curso. Los listos del C son esos tipos que presumen de llevar toda su puta vida programando en C y que se lo conocen al dedillo. Son los típicos que tienen que tener la última palabra en toda discusión con el profesor sobre algún tema al respecto, y que si no pueden lo critican al final de la clase afirmando: «Yo sé más de C que él«.
Que probablemente sabrán un huevo, porque seguro que han programado tanto que cuando escriben la dirección de su casa le cascan un & delante, pero la actitud que adoptan es del típico listillo que a nadie le gusta.
Algunos llegan de módulos, y otros simplemente han bajado demasiados manuales de internet o hecho varios cursos. Supongo que por éstos últimos podemos ampliar la teoría también a los módulos.
¿Y vosotros? ¿Sois «Los listos del C» de vuestra clase o conocéis a alguno?







