La nueva red neuronal ayudará a las computadoras a codificarse a sí mismas

¡Hola, Habr! Les presento la traducción del artículo “Una nueva red neuronal podría ayudar a las computadoras a codificarse” de Will Douglas Heaven.



imagen



La herramienta detecta similitudes entre programas para ayudar a los programadores a escribir software más rápido y eficiente.



La programación de computadoras nunca ha sido fácil. Los primeros codificadores escribieron programas a mano, trazando caracteres en papel cuadriculado antes de convertirlos en grandes pilas de tarjetas perforadas que podían ser procesadas por una computadora. Un error, y podría tener que rehacerlo todo.



Los programadores de hoy en día utilizan muchas herramientas poderosas que automatizan gran parte del trabajo, desde detectar errores mientras escribe, hasta probar su código antes de aplicarlo. Pero por lo demás, poco ha cambiado. Un error tonto puede bloquear todo el software. Y a medida que los sistemas se vuelven cada vez más complejos, rastrear estos errores se vuelve cada vez más difícil.
“A veces, los equipos de codificadores pueden tardar varios días en corregir un error”, dice Justin Gottschlich, director del grupo de investigación de programación de máquinas de Intel.




Es por eso que algunas personas piensan que deberíamos hacer que las máquinas se programen por sí mismas. La generación automática de código ha sido un tema candente de investigación durante varios años. Microsoft está incorporando la generación de código básico en sus herramientas de desarrollo de software ampliamente utilizadas, Facebook ha creado un sistema llamado Aroma que finaliza automáticamente los programas pequeños, y DeepMind ha desarrollado una red neuronal que puede crear versiones más eficientes de algoritmos simples que los desarrollados por humanos. Incluso el modelo de lenguaje OpenAI GPT-3 puede componer fragmentos de código simples , como diseños de páginas web, a partir de consultas en lenguaje natural.



Gottslich y sus colegas lo llaman programación de máquinas.... Trabajando con un grupo de Intel, MIT y el Georgia Institute of Technology en Atlanta, desarrolló un sistema llamado Machine Inferred Code Similarity , o MISIM, que puede extraer el significado de un fragmento de código, lo que el código le dice a una computadora, de de la misma manera que los sistemas de procesamiento del lenguaje natural (PNL) pueden leer un párrafo escrito en inglés.



MISIM puede sugerir otras formas de escribir el código, sugiriendo correcciones y formas de hacerlo más rápido o más eficiente. La capacidad de la herramienta para comprender lo que intenta hacer un programa le permite identificar otros programas que están haciendo cosas similares. En teoría, este enfoque podría ser utilizado por máquinas que han escrito su propio software, basándose en un tejido de retazos de software preexistente con un mínimo de control o entrada humana.



MISIM funciona comparando fragmentos de código con millones de otros programas que ya ha visto, tomados de una gran cantidad de repositorios en línea. Primero traduce el código a una forma que captura lo que hace, pero ignora cómo está escrito porque dos programas, escritos de formas muy diferentes, a veces hacen lo mismo. MISIM luego usa la red neuronal para buscar otro código que tenga un significado similar. En una preimpresión, Gottshlich y sus colegas informan que MISIM es 40 veces más preciso que los sistemas anteriores que intentan hacerlo, incluido Aroma.



MISIM es un emocionante paso adelante, dice Veselin Raychev, director de tecnología de la empresa suiza DeepCode, cuyas herramientas de detección de errores, algunas de las más avanzadas del mercado, utilizan redes neuronales capacitadas en millones de programas para sugerir mejoras a los codificadores mientras las escriben.

Pero el aprendizaje automático aún no puede predecir si algo es un error, dice Raichev. Esto se debe a que es difícil enseñarle a una red neuronal lo que es o no es un error si no está etiquetada como tal por un humano.
Según él, ha habido muchos estudios interesantes con redes neuronales profundas y corrección de errores, "pero prácticamente aún no están ahí, por un margen muy amplio". Como regla general, las herramientas de detección de errores de IA dan muchos falsos positivos, dijo.



MISIM maneja esto mediante el uso del aprendizaje automático para identificar similitudes entre programas, en lugar de detectar errores directamente. Al comparar un programa nuevo con un software existente que se sabe que es correcto, puede alertar al codificador sobre diferencias importantes que conducen a errores.



Intel planea usar esta herramienta como un sistema de recomendación para sus propios desarrolladores, ofreciendo alternativas para escribir código de manera más rápida o eficiente. Pero dado que MISIM no está vinculado a la sintaxis de un programa en particular, puede hacer mucho más. Por ejemplo, se puede usar para traducir código escrito en un lenguaje más antiguo como COBOL a un lenguaje más moderno como Python. Esto es importante porque muchas instituciones, incluido el gobierno de EE. UU. , Todavía dependen del software escrito en idiomas que pocos codificadores saben cómo mantener o actualizar.



En última instancia, Gottslich cree que esta idea se puede aplicar al lenguaje natural. Combinado con PNL (Procesamiento del lenguaje natural, que no debe confundirse con la programación neurolingüística ), la capacidad de trabajar con el significado del código por separado de su representación textual puede algún día permitir a las personas escribir software simplemente describiendo lo que quieren hacer en palabras, dice.

“Hacer pequeñas aplicaciones para tu teléfono o cosas así te ayudará en tu vida diaria, creo que no está tan lejos”, dice Gottshlich. "Me gustaría ver a 8 mil millones de personas crear software de cualquier forma que les resulte natural".



All Articles