Entradas

Mostrando las entradas de agosto, 2018

Tipos de datos en programación

Imagen
Un autobús aloja más o menos unas cien mil personas... ¿Qué? ¿No es cierto? ¿Me estás retando? Pues te voy a vender mi programa, es que pues hice un programa jeje, lo que hace esta joyita es que tu le pones el número de pasajeros en un camión y te da la ganancia total del viaje. Mi programa tiene una enorme ventaja sobre la competencia, y es que si tu le pones que hay 45 mil pasajeros de todos modos te calcula el número!!! Mi programa no se aguita el canijo. Todo al precio de una ligerita desventaja que es que ocupa un poquito de más memoria jeje. Si este suena como un programa que harías tu te voy a pedir dos cosas: 1. Llégale de mi página 2. ¡Mejor quédate para que aprendamos juntos sobre los tipos de datos! A la hora de crear las conocidas variables, la computadora debe saber cuanto espacio guardar para cada una de ellas, sea un número entero, uno decimal, un caracter, eso es lo que le hacemos saber a la computadora antes de empezar a programar. ...

Programas evolutivos

Imagen
Toqué el tema brevemente, pero ahora les compartiré una versión más completa. Existen los tipos de programa que aprenden solos, ocupando "neural networks", como simulando el comportamiento de la creación de neuronas en el cerebro. Otros programas sin duda interesantes son aquellos que crean su propia solución a los problemas, haciendo un periodo de prueba y error. Estos programas no simulan el cerebro humano, más bien simulan el proceso de evolución. Digamos que se tienen un programa que simule una plataforma en donde apliquen leyes de física básicas ya determinadas, ahora se crean figuras con nodos y conectores con diferente elasticidad, movimiento, etc. y la función del programa será crear por medio de esta mecánica una "criatura" que salte lo más alto posible. El programa entonces simulara cientos de "generaciones", en donde los nodos y conectores se crearán con variables aleatorias, y aquellos que estén por debajo del promedio de salto serán elimi...

Los diagramas de flujo

Imagen
Como vimos en la entrada pasada, la programación consiste en diseñar una serie de pasos para solucionar un problema. En la cuestión de los algoritmos, es importante plantearse cómo vamos a hacer esto. Los diagramas de flujo constituyen la parte preliminar de la programación del software, son una forma de abordar el problema en cuestión. Un diagrama de flujo es una serie de formas, unidas con lineas que se pueden visualizar imaginando que una pequeña electicidad pasa por ellos, cumpliendo cada regla que estos recuadros ponen hasta completar el programa. En realidad me gusta verlo como un rally. Un ejemplo. Digamos que quiero hacer un programa que sume dos números. Los pasos a seguir serían: 1. Pedir dos números 2 Sumar uno con el otro. 3. Dar el resultado Para cada paso, hay pasos aún más específicos: 1a. Pedir un número a 1b. Pedir un número b 2a. Sumar a+b 3a. Dar el resultado Hay un problema aquí, la computadora no sabe qué es a, ni que es b, tampoco sabe que signifi...

¿Qué es un algoritmo?

Imagen
En esta vida hay hechos y verdades, y uno de ellos es que me acabo de sentar en mi silla. IMPRESIONANTI. Pero espera un segundo, ¿Primero doble las rodillas? ¿O acaso rote el pelvis hacia adentro? Yo sentí que moví mi espalda hacia adelante para no caer tan rápido, estoy seguro de eso, y estoy seguro de que esto se acaba de volver más complicado de lo que parecía. Lo mismo ocurre cuando haces una división manualmente, cuando haces una derivada, cuando enlistas las posibles formas de ordenar los números 1,2,3 y 4, cuando te preparas un sandwich o cuando ordenas tus apps por colores. ¿Qué? ¿No ordenas tus apps? que sucio. ¿Ves a que se reduce esto? A UNA SERIE DE PASOS. La computadora es completamente retrasada, si tocan la puerta contesta el teléfono, porque no sabe nada, pero eso es lo bello de esto, pues resulta que la computadora calcula mucho más rápido que tú. Eso quiere decir que cuando tu te tardas dos minutos enlistando: 1,2,3,4 1,2,4,3 1,3,2,4 1,...

Alpha Zero: Una aplicación de la inteligencia artificial en el ajedrez

Como di una pista en mi presentación, me gusta mucho jugar ajedrez. La realidad es que mi nivel no es bueno, y comparado con los Grand Masters de todo el mundo con un Elo de 2500+, pues la verdad es que es un chiste. La triste realidad es que incluso ellos no tienen oportunidad cuando se trata de competir contra un motor de computadora, diablos, incluso sus teléfonos son capaces de ganarles cien  de cien partidas, pues mientras el campeón del mundo  Magnus Carlsen tiene un Elo de 2850+, los motores de ajedrez ya están por ahí de los 3500 (200 puntos de diferencia significa que el jugador con el Elo más alto ganará un estimado de 97% de las veces en un formato de tiempo clásico). Stockfish 8 (reciéntemente actualizado al 9) era el motor de ajedrez más poderoso, junto con Houdini, y se convirtió en la rata de laboratorio de Google Deep Mind, la empresa inglesa de inteligencia artificial, comprada por Google el 2014. ¡Google Deep Mind aprendiendo a caminar!  Ignora la ...