NP: Por qué el desarrollo de software necesita estar más enfocado a las máquinas

NP: Por qué el desarrollo de software necesita estar más enfocado a las máquinas

Hemos recibido una nota de prensa por parte de Intel, os la dejamos a continuación:

Por qué el desarrollo de software necesita estar más enfocado a las máquinas

El futuro de la programación de máquinas: Justin Gottschlich, jefe de investigación de programación de máquinas en Intel Labs, explica la programación de máquinas

Nuestro experto: Justin Gottschlich dirige el equipo de Investigación en Programación de Máquinas (MPR) en el Laboratorio de Investigación de Sistemas y Software. El nuevo grupo de investigación de Justin se centra en la promesa pionera de la programación de máquinas, que es una fusión de aprendizaje automático, métodos formales, lenguajes de programación, compiladores y sistemas informáticos.

Su simple explicación de la programación de máquinas: MPR utiliza formas de aprendizaje automático y otros métodos automáticos para crear software capaz de crear su propio software. Se llama programación de máquinas y se trata fundamentalmente de automatizar el desarrollo y mantenimiento de software. Una vez realizada, la programación de la máquina permitirá a cada uno expresar su creatividad y desarrollar su propio software sin tener que escribir una sola línea de código.

La promesa de la programación de máquinas: En el panorama tecnológico actual, el software está integrado en casi todo lo que hacemos. Controla muchos aspectos de nuestros dispositivos móviles – portátiles, tabletas, teléfonos. Nos conecta a Internet y dirige nuestros canales de medios sociales. Virtualiza nuestros centros de datos y hace que nuestros hogares sean más inteligentes. Pero desarrollar y mantener el software es un proceso que consume mucho tiempo y es propenso a errores, dice Justin. «Creo que podemos crear una sociedad en la que todo el mundo pueda crear software, pero las máquinas se encargarán de la parte de la’programación'», dice. «Así,’programación de la máquina'».

Una escasez de programadores humanos: Un problema central para Intel y otras empresas tecnológicas líderes, según Justin, es que se están quedando sin desarrolladores senior, una escasez que reduce la cantidad de programación en todas las industrias. Según code.org, sólo en Estados Unidos hay 500.000 puestos de programación disponibles, en comparación con una cosecha anual de 50.000 licenciados en informática. Una escasez similar puede encontrarse en toda la Unión Europea. En el mercado laboral de la programación, dice Justin, en el mejor de los casos sólo el 10% de las personas que ocupan esos puestos de trabajo tienen la formación informática necesaria para convertirse en desarrolladores avanzados de alto nivel. Con el hardware heterogéneo actual – CPUs, GPUs, FPGAs, ASICs, chips neuromórficos y, pronto, cuánticos – será difícil, quizás imposible, encontrar desarrolladores que puedan programar de forma correcta, eficiente y segura en todo ese hardware.

Ahora es el momento: La programación de máquinas es una fusión de diferentes campos. Utiliza técnicas de programación automática, desde métodos precisos (por ejemplo, síntesis de programas formales) hasta probabilísticos (por ejemplo, programación diferenciada). También utiliza y aprende de todo lo que hemos construido en hardware y software hasta la fecha. Los investigadores se han dedicado a la programación de máquinas desde la década de 1950, dice Justin. «Pero hoy es diferente. Estamos en un punto de inflexión con nuevos algoritmos de aprendizaje de máquina, hardware nuevo y mejorado, y datos de programación ricos y densos. Estos son los tres ingredientes esenciales que creemos que permiten la programación de la máquina». Un ejemplo es la reciente investigación de algoritmos genéticos (GA) del equipo de Justin, que ilustra cómo se puede automatizar la función de aptitud de un algoritmo genético – una complicada heurística de aprendizaje de máquina desarrollada por programadores expertos. Justin dice que este trabajo probablemente no hubiera sido posible hace unos años.

Negarse a aceptar bichos: Casi todo el software a gran escala actual (por ejemplo, sistemas operativos, navegadores, plataformas de medios sociales) incluye errores de precisión, rendimiento o seguridad. «Nuestro último trabajo de NeurIPS ’19 proporciona evidencia temprana de que ciertos tipos de errores que históricamente han evitado incluso la detección de programadores expertos pueden ser detectados automáticamente con la programación de máquinas, lo que requiere una intervención humana cero», dice Justin. «El siguiente paso es arreglarlos automáticamente.»

De 500.000 líneas de código a 500: Justin señala un ejemplo bien conocido de las ventajas de la programación de máquinas. Google Translate, un servicio que traduce automáticamente entre lenguajes, fue construido por ingenieros que codificaron a mano alrededor de 500.000 líneas utilizando técnicas de programación clásicas. Con el advenimiento de la programación de máquinas, Google reescribió su código, parcialmente usando programación diferenciada (una pequeña porción del pastel de programación de máquinas). Esa reescritura redujo la base de código de 500.000 líneas a 500 líneas, una reducción de 1.000 veces. «El tamaño del código no sólo se ha reducido 1.000 veces», dice Justin, «la precisión del sistema ha mejorado realmente, es increíble».

Más trabajos de programación, no menos: La programación de máquinas no eliminará trabajos, sostiene Justin, sino que los creará, posiblemente millones de ellos. Los aspectos más serviles de la programación serán automatizados, dice, que es el objetivo. Con la programación de máquinas, añade, «nuestra visión de cielo azul es tan larga como para que puedas expresar tus ideas (como la llamamos – intención) de alguna manera que la máquina pueda reconocer – ya sea en lenguaje natural, diagramas visuales o gestos – la programación de máquinas construye un camino para que tú puedas crear tu propio software». Para empezar a construir estos avanzados sistemas de programación de máquinas, dice Justin, dependeremos en gran medida de una comunidad de programadores y científicos – aquellos que pueden trabajar a través de plataformas, aprendizaje de máquinas y técnicas formales, hardware heterogéneo y muchos lenguajes de programación. Justin y su equipo esbozan su visión futura de la programación de máquinas en un artículo publicado conjuntamente con investigadores del MIT, «Los Tres Pilares de la Programación de Máquinas«.

Justin pronunciará el discurso principal en el evento del Día de la Industria de la Universidad de Pennsylvania el viernes 25 de octubre: El futuro de la autonomía segura.

Sobre el autor