Picture, nuevo lenguaje que reduce 1000 líneas de código a 50

Durante décadas, los lenguajes de programación han basado su funcionamiento en las matemáticas y la lógica.

Tendemos a ver los ordenadores como unas máquinas inteligentes, pero en la práctica son las máquinas más tontas del mundo. Se limitan a ejecutar un programa, y ese programa no es más que una lista de órdenes (el código) que le dice exactamente lo que tiene que hacer. El programa contempla todas las opciones posibles, para que el ordenador no quede atrapado en un callejón sin salida.

“Si ocurre esto, haz aquello. Si ocurre esto otro haz esta otra cosa”. Y así en un bucle infinito que no deja ningún cabo suelto.

Es una técnica eficaz, pero en tareas complejas exige mucha potencia de proceso y muchos miles de líneas de código.

La programación probabilística

Es por eso que los informáticos llevan tiempo desarrollando nuevas formas de programar, que rompan las limitaciones actuales. Una de las tendencias más innovadoras de los últimos años es la programación probabilística, que no sigue la lógica, sino la intuición y las probabilidades. En definitiva, se basa en aplicar la inteligencia artificial a la programación.
Con la programación probabilística no le dices al ordenador lo que tiene que hacer, sino que le obligas a pensar. Le das una serie de directrices básicas, y le ordenas que las ponga en práctica, en función de los datos que tenga. La máquina aplicará la inferencia, es decir, decidirá el algoritmo más adecuado porque es el más probable que funcione, o porque ha funcionado en otras ocasiones. Tal como ocurre con el cálculo de probabilidades, como más datos tenga menos errores cometerá y más se acercará a la solución correcta.

Es lo que se conoce como Machine Learning o Máquina de Aprendizaje, y ya se está aplicando en modelos reales de negocio. El buscador de Google, los filtros de spam o los coches sin conductor emplean técnicas de programación que aprenden y mejoran en función de los datos que capturan. A medida que el buscador de Google acumula más webs y más relaciones entre ellas, ofrece datos más precisos en las búsquedas. Los filtros de spam se vuelven más inteligentes según los avisos sobre emails atacantes o emails seguros que reciben. Un coche autónomo estudia el entorno en tiempo real y toma decisiones sobre la velocidad, el frenado o la dirección en función de los datos que recibe del entorno, y de lo que ocurrió en anteriores ocasiones en que recibió esos datos.

Por ejemplo, si se encuentra con un coche parado en la carretera en una calle con aparcamientos interpreta que está aparcando, en lugar de averiado, porque eso es lo que ocurrió las últimas veces que pasó por esa calle. Son los datos los que le dirán si tiene o no razón: si detecta un triángulo de aviso en el pavimento, entonces no está aparcando, está averiado.

¿Qué objetivos tiene usar la Programación Probabilística? Es más sencilla y rápida de programar porque requiere menos código, y necesitas menos datos. Por tanto, es más barata, más rápida, y exige menos requisitos de hardware.

Picture, el lenguaje para Máquinas de Aprendizaje

El último ejemplo de programación probabilística es el lenguaje Picture, desarrollado por el Instituto Tecnológico de Massachusetts (MIT) que presentará en la conferencia CVPR el próximo mes de junio.

Gracias al uso de la inteligencia artificial y la probabilidad, Picture es capaz de llevar a cabo tareas con 50 líneas de código, para las cuales un lenguaje tradicional necesitaría al menos mil líneas.

La forma más sencilla de entender cómo funciona Picture es usar el ejemplo que los propios programadores han puesto en práctica para demostrar su eficacia: un programa para convertir una foto de un rostro en 2D, en una imagen 3D.

Un lenguaje tradicional necesitaría una gran cantidad de código para decirle al ordenador cómo convertir una imagen 2D en 3D. Cómo renderizar cada píxel, en función de su posición, perspectiva o color, para llevarlo a la tercera dimensión.

Con la programación probabilística de Picture, el programador sólo le da a la máquina una serie de directrices básicas: un rostro tiene dos objetos distribuidos simétricamente (los ojos), con otros dos objetos más centrados, bajo los primeros (la nariz y la boca). Estas directrices son sencillas de programar y requieren poco código. Después, el programa recibe datos en forma de rostros convertidos con anterioridad de 2D a 3D, y en función de esos datos “aprende” el proceso. Utilizando la inferencia, genera los algoritmos más probables para convertir el rostro 2D a 3D, y los aplica a su trabajo. Como más datos reciba (más rostros ya convertidos) tendrá más elementos para calcular la probabilidad, y por tanto el resultado final será más perfecto.

Tal como se puede ver en la anterior imagen, los resultados obtenidos son muy satisfactorios.

La Programación Probabilística aún está dando sus primeros pasos, pero es fácil darse cuenta de su trascendencia. Obliga a los programadores a olvidarse de todo lo que conocen para aplicar mecánicas de diseño de software completamente nuevas.

Aún más importante, es el germen de la inteligencia artificial aplicada a la programación.

El diccionario define la inferencia como “una evaluación que realiza la mente entre distintas proposiciones”. La programación probabilística obliga a los ordenadores a usar la inferencia y el estudio de las probabilidades.

Enseña a las máquinas a pensar.

Son las primeras aplicaciones prácticas de los programas que aprenden de su entorno, toman decisiones y optan por una u otra propuesta en función de cual sea lo más probable que ocurra. Como hacemos nosotros.

Las implicaciones de estas nuevas técnicas de programación son asombrosas. Tienen la capacidad de cambiar la informática, el funcionamiento de los ordenadores, y el comportamiento de los robots. Aún no somos capaces de calcular hacia dónde nos llevarán, pero es fácil darse cuenta de la revolución que suponen, aunque necesitaremos unos cuantos años para descubrirlo.

Fuente: Fossbytes
Vía : ComputerHoy

Valora este Artículo
Picture, nuevo lenguaje que reduce 1000 líneas de código a 50
Qué te pareció?
Sobre el Autor

Soy un joven entusiasta, me gusta aprender por mi cuenta, soy de profesión Técnico en Computación e Informática, me gusta ayudar a la gente con sus problemas informáticos, aprecio la familia… Quiero y lograré alcanzar todos mis objetivos.

Comparte si te ha Gustado
Artículos Relacionados