Las computadoras, cada vez más cerca de dejar sin trabajo a los programadores


Es divertido imaginar el futuro de la inteligencia artificial (IA) con robots de servicio a domicilio, Dots de Amazon en cada habitación, drones de entrega y diagnósticos médicos más precisos sin salir de casa. Pero, si bien es natural que estas llamativas aplicaciones estén capturando la imaginación del público, existe una capacidad de la IA para transformar otra área que no recibe tanta atención: la posibilidad de que el software se desarrolle a sí mismo.

Imagínate lo que las computadoras podrían hacer si se comprendieran a sí mismas. Bueno, pronto lo harán. Y no estoy hablando de un futuro lejano; Estoy hablando de un futuro muy cercano, utilizando tecnología estándar que ya existe en la actualidad.

Hasta ahora, los expertos en aprendizaje automático han tendido a centrarse en aplicaciones de la IA altamente adaptadas a tareas específicas, como el reconocimiento facial, automóviles autodirigidos, reconocimiento de voz e incluso resultados de búsqueda en Internet. Pero ¿qué pasaría si esos mismos algoritmos pudieran entender su propia estructura de código -sin ayuda humana, interpretación o intervención- de la misma manera en que pueden reconocer y procesar el lenguaje humano y las imágenes?

Si el código empezara a analizarse a sí mismo, arreglando errores y mejorándose más rápido de lo que un humano podría hacerlo, los avances tecnológicos podrían ocurrir más y más rápido. Las posibilidades parecen infinitas: avances médicos, robots más accesibles, teléfonos más inteligentes, software con menos errores, menos fraude bancario, etc.

La inteligencia artificial tiene el potencial de resolver un viejo problema en el desarrollo de software. Si bien la capacidad del código de escribir o manipular otro código -un concepto conocido como metaprogramación- ha existido durante mucho tiempo (en realidad se originó a finales de los años cincuenta con Lisp), éste solamente puede abordar los problemas que un humano pueda imaginarse. Pero la IA puede cambiar eso.

Usando la IA, las computadoras podrían entender todo el código en el historial de un proyecto de software, mejorando y depurando líneas individuales de código en un instante, en cada lenguaje de programación concebible.

Incluso un programador inexperto o mediocre con una idea para una aplicación podría comenzar a describir la idea y la computadora podría construir la aplicación por sí misma. Esto podría significar la diferencia entre completar, por ejemplo, un proyecto de investigación sobre el cáncer en días o meses en lugar de años. Esto es un avance significativo.

Las tecnologías que eventualmente conducirán a estos dramáticos avances están en una etapa embrionaria al día de hoy, pero están empezando a salir de allí. Por ejemplo, el software de aprendizaje automático TensorFlow de Google permite a los desarrolladores crear funciones de redes neuronales directamente dentro de las aplicaciones, como la capacidad de reconocer personas y objetos en las fotos. Ya no necesitas un doctorado para trastear con estas ideas. Éste podría ser el avance más grande de la inteligencia artificial.

¿Crees aún que todo esto pertenece a un futuro muy lejano? Podrías sorprenderte al saber que las empresas ya están utilizando los conceptos de la IA en sus sistemas de gestión de proyectos internos, como Google, que construyó un programa de predicción de bugs que utiliza aprendizaje automático y análisis estadístico para determinar si un fragmento de código es potencialmente defectuoso o no. Ilya Grigorik, copresidenta del W3C, creó una versión de código abierto de esta herramienta llamada bugspots, que se ha descargado más de 20.000 veces.

Otro ejemplo es Viv, el sucesor de Siri. Viv no solamente hace reconocimiento de voz con un poco de procesamiento de lenguaje natural. Viv construye complejos programas de computadora adaptativos basados ​​en palabras inglesas. Código que escribe código. Debido a que el código escrito es preparado específicamente por los creadores de Viv, ésta no es una capacidad de escritura de código como la que estoy describiendo en este artículo, pero es un paso hacia esa dirección.

A medida que esta tecnología madure, las máquinas serán capaces de superar a los seres humanos en casi cualquier tarea: procesamiento visual, procesamiento de imágenes, juegos, y ahora también en la programación de otras computadoras.

Entonces, ¿por qué las computadoras no se entienden todavía? La respuesta es que solamente es cuestión de tiempo antes de que lo hagan. Y una vez que lo hagan, sólo se puede esperar ver los avances radicales en todos los campos donde el software es importante.

Vía | VentureBeat
Imagen | Ursa Major/Shutterstock