lunes, 25 de mayo de 2015

Un nuevo lenguaje de programación con base en códigos visuales

Desde el comienzo de la computación hace ya más de 60 años, la raíz de su eficiencia se basa en la forma en cómo se desarrollan los programas, las secuencias de análisis y procesamiento de los datos para obtener respuestas, soluciones y resultados con eficiencia y rapidez. Durante décadas se han ido inventando lenguajes de programación para solventar las capacidades de las máquinas, y éstos en esencia se basan en series y secuencias probabilísticas que abarcan todas las alternativas posibles en cada caso.

El establecimiento de la lógica borrosa y las leyes del caos han contribuido a la creación de programas para computadoras cada vez más eficientes y originales, aunque la mayoría se basa en el mismo sistema: calcular todas las opciones posibles a gran velocidad y tener en cuenta todas las opciones "que pasa si" en cada caso. Es una matemática basada en algoritmos complejos que sin embargo se fundamentan en ideas sencillas. Esto ha sido así desde 1940 por lo menos.

Pero por otro lado se está desarrollando un nuevo enfoque en el que los pasos del programa no son estrictos y algorítmicos sino que obligan a la computadora a "pensar". La idea es acumular "experiencia" para ir resolviendo problemas de manera "creativa". Una idea muy interesante que se está concretando en un programa llamado Picture, inventado por ingenieros del Instituto Tecnológico de Massachusetts (MIT) y que se presentará en la conferencia CVPR (Computer Vision and Pattern Recognition) el próximo mes de junio de 2015.

Este programa Picture refleja una de las tendencias más innovadoras de los últimos años que 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 se le dice al ordenador lo que tiene que hacer, sino que se lo obliga a pensar. El fundamento es una serie de directrices básicas que pone 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.


En este caso, uno de sus basamentos es la captura visual de información. 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ódigos 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.

La Programación Probabilística que se puede basar en códigos visuales aún está dando sus primeros pasos, pero sin duda tendrá gran trascendencia. Obliga a los programadores a olvidarse de todo lo que conocen para aplicar mecánicas de diseño de software completamente nuevas, fundamentadas en la experiencia y en la percepción.




Fuente: revista digital Computer Hoy en español (http://computerhoy.com/)

No hay comentarios:

Publicar un comentario