Publicidad

RSS Paradigmas de programación

Paradigmas de programación: Aterrizando en la programación funcional .Usar mónadas es mucho más fácil de lo que crees, empezando con la...

Aterrizando en la programación funcional

3 Comentarios
Aterrizando en la programación funcional

¿Por qué la programación funcional suscita tanto interés?, ¿qué la diferencia del principal paradigma imperativo usado en la industria?, ¿en que grado deberías/podrías sacar partido a la programación funcional? Este tipo de cuestiones aparecen de forma recurrente entre aquellos que observan con curiosidad o recelo los movimientos de los lenguajes por incluir características de programación funcional.

Aunque el tema es amplísimo, complejo e inevitablemente propenso al partidismo y subjetividad, intentaré desde mi modesta experiencia apuntar algunas ideas que quizás, te respondan a estas cuestiones.

Leer más »

Usar mónadas es mucho más fácil de lo que crees, empezando con la programación funcional

23 Comentarios
Usar mónadas es mucho más fácil de lo que crees, empezando con la programación funcional

Seguramente todos tenemos formada una buena idea sobre lo que es una "propiedad", un "método estático", un "singleton" u otros términos de uso común. Nos resultan algo más exóticos e infrecuentes términos como "clase abstracta" o "función virtual pura". Todos éstos son términos habituales en la programación orientada a objetos. Lo que seguramente ya no tengamos tan claras son todas las ramificaciones, implicaciones, interacciones que todos éstos conceptos poseen y sin embargo los usamos. Usar una mónada es tanto o más fácil de usar que, por ejemplo, un objeto. Pero una mónada no es un objeto, y quien quiera comprender cómo usar una mónada tendrá que hacer el esfuerzo por desprenderse de viejas y apoltronadas preconcepciones.

Leer más »
Publicidad

Sobre la pureza de las funciones, ¿están realmente desacoplados los sistema tal como idealizamos?

11 Comentarios
Sobre la pureza de las funciones, ¿están realmente desacoplados los sistema tal como idealizamos?

Salvo en programas funciones sencillas, estar seguro, comprender las interrelaciones entre las partes resulta muy complicado. Idealizamos nuestros sistemas y pensamos que están desacoplados pero realmente éstos son porosos y con frecuencia los efectos fluyen entre ellos sin que nos demos cuenta... hasta que es tarde. Esta porosidad puede resultar en una interrelación no deseada (un bug) o en un enraizamiento en que el desacople ha desaparecido. Existen muchas técnicas que pretenden mantener el aislamiento pero la mayoría son patrones o guías cuyo única garantía reside en la entereza del equipo de desarrollo para seguirlas. Existen sin embargo, lenguajes que garantizan firmemente el aislamiento de las partes, con sus ventajas y sus inconvenientes.

Leer más »

Algo pasa con Haskell

10 Comentarios
Algo pasa con Haskell

Sin duda existe una gran cantidad de lenguajes de programación sobre los que podemos poner nuestra mirada. Sin embargo, sólo unos pocos están llamados para la gloria. Existen muchas cuestiones por las que un lenguaje debe ser elegido sobre otros, e igualmente, existen muchas situaciones diferentes que aconsejan usar unos y no otros.

Como lenguaje de propósito general que tenga una comunidad de usuarios con cierta relevancia, Haskell es de los pocos lenguajes que posee características que divergen enormemente del resto de lenguajes. En las siguientes líneas, intentaré dar mi propia y subjetiva visión del panorama actual del ecosistema Haskell, siempre desde un punto de vista práctico y pragmático, y de paso, dar unas pinceladas sobre lo que yo he podido entrever es, la programación funcional.

Leer más »

Lambda World 2015: profundizando en la programación funcional

2 Comentarios
Lambda World 2015: profundizando en la programación funcional

No es que la programación funcional esté de “moda” sino que a día de hoy es el pilar fundamental de muchas compañías, aprovechando este modelo de programación para crear de forma ágil e innovadora nuevos productos. Por eso, no es extraño que conferencias como la Lambda World de Cádiz (24-25 de Octubre) haya captado tanta expectación y más si los consideramos el evento más importante a nivel europeo sobre programación funcional.

Leer más »
Publicidad

Selección aleatoria ponderada y las cadenas de Markov

9 Comentarios
Selección aleatoria ponderada y las cadenas de Markov
.lst-table { border-collapse: collapse; margin: auto; } .lst-table th { border: 1px solid black; padding: 3px; text-align: center; } .lst-table td { border: 1px solid black; padding: 3px; text-align: right; } .matrix-table { border-collapse: collapse; } .matrix-table td { padding: 5px; text-align: center; } .matrix-table { margin: auto; border: 0 none !important; } .matrix-table td { border: 0 none !important; } .matrix-table .left { border: 0 none !important; border-left: 3px solid black !important; } .matrix-table .right { border: 0 none !important; border-right: 3px solid black !important; } .matrix-table th { border: 0 none !important; text-align: center; vertical-align: middle; color: gray; font-size: 0.5em; }

Supón que te piden construir un sitio web en el que los usuarios puedan escribir poemas y, a su vez, valorar los poemas que escriben otros usuarios.

Para incentivar que los usuarios lean y valoren los poemas de otros usuarios, la probabilidad de que un poema suyo sea seleccionado (para ser valorado por otro usuario) debe ser proporcional al número de votos que éste ha emitido. Así, aquellos que más se esfuerzan en leer y valorar a otros, serán también más leídos y valorados.

Teniendo en cuenta que hay millones de poetas, que cada poeta escribe un poema al día (en un año habrá 365 millones de poemas) y que cada poeta lee y valora 10 poemas al día (en un año habrá 3.650 millones de votos). ¿Cómo seleccionar aleatoriamente un poema?.

Leer más »

Mario Lives! Nuestro fontanero favorito es un autómata inteligente

3 Comentarios

La inteligencia artificial es uno de los campos más interesantes de la informática y el desarrollo y con infinidad de aplicaciones actuales y posibles en el mundo real. Conseguir una maquina que supere el test de Turing y que inicie la tiranía de las máquinas y el genocidio de la raza humana es una meta muy golosa, de las que merecen la pena el esfuerzo, por ejemplo. Lo que os traemos hoy no va a superar dicho test pero desde luego tiene su miga: Mario Lives!, un agente conversacional creado sobre el clásico Super Mario Bros por investigadores de la universidad alemana de Tübigen. Mucho más molón que Irene de la web de Renfe o Anna, la call girl de Ikea, donde va a parar.

Leer más »

Trabajar con microservicios: evitando la frustración de las (enormes) aplicaciones monolíticas

6 Comentarios
Trabajar con microservicios: evitando la frustración de las (enormes) aplicaciones monolíticas

¿Qué pasa cuando tu aplicación corporativa no para de engordar? Vamos echándole encima más y más servicios. Llega un punto en que parece que lo único que podemos hacer es escalar en hardware (más maquinas) hasta llegar al colapso.

¿Dónde está el problema? Párate a pensar que naturaleza tiene tu arquitectura. Cúal es el punto de entrada y cómo despliega la aplicación que debe ofrecer el soporte al resto de aplicaciones y servicios. Quizás te empieces a dar cuenta del enorme “cuello de botella” que representa ese monolito creado a base de meter más madera.

Leer más »

Patrones de diseño: Decorator

13 Comentarios
Patrones de diseño: Decorator

En el anterior artículo sobre patrones de diseño, hablábamos del patrón Adapter. Y con la intención de seguir aumentando nuestro catálogo de patrones, continuamos hoy con otro patrón sencillo. Sencillo de entender y sencillo de aplicar, pero igualmente útil. Se trata del patrón Decorator.

Así que como siempre, vamos a describir el patrón y a través de un ejemplo práctico, demostrar como se implementa.

Leer más »
Publicidad

Ver más artículos