Publicidad

RSS Paradigmas de programación

Paradigmas de programación: Metaprogramación en compile-time con Groovy.Usando MVP e inversión de dependencias para abstraernos del framework...

Metaprogramación en compile-time con Groovy

Comentar
Metaprogramación en compile-time con Groovy

En el anterior artículo sobre Metaprogramación en runtime con Groovy explicamos qué es la metaprogramación y vimos las distintas técnicas que ofrece Groovy de metaprogramación en runtime.

En esta ocasión lo que vamos a aprender son las distintas posibilidades de metaprogramación en tiempo de compilación. Este tipo de técnicas lo que nos van a permitir es intervenir durante las distintas fases de compilación y, de esta forma, generar código en tiempo de compilación.

Leer más »

Usando MVP e inversión de dependencias para abstraernos del framework en Android

19 Comentarios
Usando MVP e inversión de dependencias para abstraernos del framework en Android

Desde hace unos años se habla mucho sobre temas de arquitectura en Android, y quien más quien menos ha oído hablar de MVP (Model-View-Presenter), y de cómo usarlo para hacer las vistas (normalmente Activities o Fragments) lo más simples posibles, mientras el Presenter se encarga de toda la lógica de presentación.

Normalmente, una de las reglas que suelen imponerse es que desde el Presenter hacia abajo, ninguna de las capas sepa nada sobre Android, para aislarnos de ella, con todos los beneficios que ello conlleva. Seguramente, si te has puesto a ello por primera vez, rápidamente te surgirán dudas sobre cómo implementar esto.

Leer más »
Publicidad

Aterrizando en la programación funcional

5 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 »

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 »
Publicidad

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 »

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 »
Publicidad

Ver más artículos