Adrianistán

El blog de Adrián Arroyo


Introducción a Prolog, tutorial en español

Prolog es un lenguaje de programación lógico, quizá uno de los más populares de este paradigma ya que fue el primero en implementarlo, en el año 1972 en Francia
Seguir leyendo

Mónada ST en Haskell: STRef, STArray

Haskell tiene una librería muy completa, con muchas estructuras de datos y, en este caso, mónadas muy interesantes. En este caso vamos a hablar de la mónada ST. ST son las siglas de State Threads. Fueron definidas por Simon Peyton-Jones en un paper de 1994 y son una forma muy curiosa que tiene Haskell de permitirnos escribir código con estructuras de datos mutables. La gracia está en que se garantiza que es imposible que la mutabilidad interna que hay dentro de la mónada ST salga al exterior, de modo que de cara al exterior son funciones puras igualmente. Esta mónada no sirve para comunicarse con el exterior como sí sirve IO pero si podemos usar ST antes que IO, mejor
Seguir leyendo

Un muro en Cuzco

En Cuzco (Perú), capital del antiguo imperio Inca, hay un muro que está compuesto de dos zonas claramente diferenciadas
Seguir leyendo

Programación dinámica: el problema de knapsack

Los algoritmos nos ayudan a resolver problemas. Hay muchas maneras de diseñarlos, un método que no conocía hasta hace poco y que me ha resultado muy interesante conocer es la programación dinámica. La idea fundamental de la programación dinámica es dividir el problema en subproblemas y posteriormente calcular una única vez cada subproblema. Existen dos acercamientos: top-down y bottom-up. La programación dinámica nos permite resolver problemas más rápidamente que con fuerza bruta, gastando a cambio mucha más memoria del ordenador
Seguir leyendo

Futures y Tokio: programar de forma asíncrona en Rust

Rust es un lenguaje muy potente y uno de sus principales focos de diseño es la concurrencia. Sin embargo, si damos un repaso por la librería estándar veremos un par de cosas nada más, algo que puede resultar decepcionante. Esto se debe a que Rust no impone ningún modelo específico de concurrencia como sí lo hacen Go o Erlang. Rust nos provee de los ladrillos de construcción necesarios
Seguir leyendo

Te espero en la feria Espacios de Ingenio

Los días próximos 15 y 16 de marzo tendrá lugar la feria Espacios de Ingenio. Tendrá lugar en la Escuela Técnica Superior de Arquitectura, en la ciudad de Valladolid. El objetivo es interesar a los alumnos de bachillerato en las carreras técnicas
Seguir leyendo

Lenguajes de programación que todo buen programador debe conocer

Dice Bjarne Stroustrup (creador de C++) que nadie debería llamarse un profesional si no conoce al menos 5 lenguajes suficientemente diferentes entre sí. Comparto con él esa afirmación, así que he decidido hacer una lista con esos 5 lenguajes suficientemente diferentes entre sí. La razón de que sean diferentes entre sí es que implementan paradigmas distintos
Seguir leyendo

¿Cómo recuperar archivos borrados?

Inevitablemente te ha tenido que pasar. Estabas manipulando ese fichero tan importante que contenía tu trabajo de clase. Y lo borraste. Todo el mundo puede tener esos despistes y por eso los sistemas operativos modernos suelen llevar una Papelera de Reciclaje, una forma de recuperar archivos que hemos borrado sin querer, dándonos otra oportunidad para pensar si realmente queremos borrar el archivo. No obstante, ¿qué pasa si has vaciado la papelera sin darte cuenta de lo que había dentro? O peor, hay pinchos USB que carecen de la opción de papelera. ¿Está todo perdido? No, todavía podemos probar un programa de recuperación. Existen varios programas como Recuva o Disk Drill. Yo voy a usar Recuva que es más popular, puedes descargar aquí Recuva. Se trata además de un programa gratuito, sin coste para el usuario (aunque existe una versión pro)
Seguir leyendo

Tutorial de introducción a Godot 3.0. Juego de Snake en C#

Llegó el día. Godot 3.0 salió a la luz. Se trata de una versión con muchas mejoras respecto a Godot 2.x. Se trata de un motor de videojuegos software libre, compatible con la mayoría de sistemas operativos (y consolas a través de una compañía privada). Aprovechando la ocasión voy a explicar como hacer un juego simple, usando C# y el motor 2D de Godot. Este tutorial sirve para familiarizarse con el motor
Seguir leyendo

Generar frases con cadenas de Markov. Machine Learning en Python

Hoy vamos a hacer un ejercicio muy sencillo de machine learning. Para ello usaremos cadenas de Markov. Trataremos de generar frases totalmente nuevas basadas en otras frases que le demos como entrada
Seguir leyendo