Programación en lenguaje natural Las IA están eliminando la monotonía de la codificación


“Aprende a programar”. Ese peyorativo de tres palabras está perpetuamente en los labios y en la punta de los dedos de los trolls de Internet y los tech bros cada vez que se anuncian despidos de medios. Un sentimiento inútil por derecho propio, pero con el reciente advenimiento de la IA que genera código, conocer los entresijos de un lenguaje de programación como Python pronto podría ser tan útil como saber hablar con fluidez un idioma muerto como el sánscrito. De hecho, estos genAI ya están ayudando a los desarrolladores de software profesionales a codificar de manera más rápida y efectiva al manejar gran parte del trabajo pesado de programación.

Cómo funciona la codificación

Dos de los lenguajes de codificación más ampliamente distribuidos y escritos de la actualidad son Java y Python. El primero revolucionó casi sin ayuda la operación multiplataforma cuando se lanzó a mediados de los años 90 y ahora maneja «todo, desde tarjetas inteligentes hasta vehículos espaciales», como Revista Java ponlo en 2020, sin mencionar la función de búsqueda de Wikipedia y todo Minecraft. Este último en realidad es anterior a Java por algunos años y sirve como base de código para muchas aplicaciones modernas como Dropbox, Spotify e Instagram.

Difieren significativamente en su funcionamiento en el sentido de que Java debe compilarse (tener su código legible por humanos traducido a código de máquina ejecutable por computadora) antes de que pueda ejecutarse. Mientras tanto, Python es un lenguaje interpretado, lo que significa que su código humano se convierte en código de máquina línea por línea a medida que se ejecuta el programa, lo que le permite ejecutarse sin compilarlo primero. El método de interpretación permite que el código se escriba más fácilmente para varias plataformas, mientras que el código compilado tiende a centrarse en un tipo de procesador específico. Independientemente de cómo se ejecuten, el proceso real de escritura de código es casi idéntico entre los dos: alguien tiene que sentarse, abrir un editor de texto o un entorno de desarrollo integrado (IDE) y escribir todas esas líneas de instrucción. Y hasta hace poco, ese alguien típicamente era un humano.

El proceso de escritura de «programación clásica» de hoy no es tan diferente del proceso de ENIAC, con un ingeniero de software tomando un problema, dividiéndolo en una serie de subproblemas, escribiendo código para resolver cada uno de esos subproblemas. en orden, y luego depurando y recompilando repetidamente el código hasta que se ejecute. La «programación automática», por otro lado, elimina el programador por un grado de separación. En lugar de que un ser humano escriba cada línea de código individualmente, la persona crea una abstracción de alto nivel de la tarea para que la computadora genere un código de bajo nivel para abordar. Esto difiere de la programación «interactiva», que le permite codificar un programa mientras ya se está ejecutando.

Los sistemas de codificación de IA conversacional de hoy, como lo que vemos en Copilot de Github o ChatGPT de OpenAI, eliminan aún más al programador al ocultar el proceso de codificación detrás de una apariencia de lenguaje natural. El programador le dice a la IA qué quiere programar y cómo, y la máquina puede generar automáticamente el código requerido.

Entre los primeros de esta nueva generación de IA de codificación conversacional se encontraba Codex, desarrollado por OpenAI y lanzado a fines de 2021. modelo notablemente experto en imitar el habla y la escritura humana después de haber sido entrenado en miles de millones de palabras de la web pública. Luego, la compañía ajustó ese modelo utilizando más de 100 gigabytes de datos de GitHub para crear Codex. Es capaz de generar código en 12 idiomas diferentes y puede traducir programas existentes entre ellos.

Codex es experto en generar activos pequeños, simples o repetibles, como «un gran botón rojo que sacude brevemente la pantalla cuando se hace clic» o funciones regulares como el validador de direcciones de correo electrónico en un formulario web de Google. Pero no importa cuán prolífica sea su prosa, no la usará para proyectos complejos como codificar un programa de equilibrio de carga del lado del servidor; es una pregunta demasiado complicada.

DeepMind de Google desarrolló AlphaCode específicamente para abordar tales desafíos. Al igual que Codex, AlphaCode se entrenó primero en varios gigabytes de archivos de código GitHub existentes, pero luego recibió miles de desafíos de codificación extraídos de competencias de programación en línea, como averiguar cuántas cadenas binarias con una longitud determinada no contienen ceros consecutivos.

Para hacer esto, AlphaCode generará hasta un millón de candidatos de código, luego rechazará todos menos el 1 por ciento superior para pasar sus casos de prueba. Luego, el sistema agrupa los programas restantes en función de la similitud de sus resultados y los prueba secuencialmente hasta que encuentra un candidato que resuelve con éxito el problema dado. Según un estudio de 2022 publicado en Ciencia, AlphaCode logró responder correctamente esas preguntas de desafío el 34 por ciento de las veces (en comparación con el éxito de un solo dígito de Codex en los mismos puntos de referencia, eso no está mal). DeepMind incluso ingresó a AlphaCode en un concurso de programación en línea de 5000 competidores, donde superó a casi el 46 por ciento de los competidores humanos.

Ahora hasta la IA tiene notas

Así como GPT-3.5 sirve como modelo fundamental para ChatGPT, Codex sirve como base para Copilot AI de GitHub. Copilot, capacitado en miles de millones de líneas de código ensambladas a partir de la web pública, ofrece funciones de autocompletado de codificación asistida por IA basadas en la nube a través de un complemento de suscripción para los entornos de desarrollo integrado (IDE) de Visual Studio Code, Visual Studio, Neovim y JetBrains.

Lanzado inicialmente como una vista previa para desarrolladores en junio de 2021, Copilot estuvo entre las primeras IA con capacidad de codificación en llegar al mercado. Más de un millón de desarrolladores han aprovechado el sistema en los dos años transcurridos desde entonces, dijo a Engadget el vicepresidente de producto de GitHub, Ryan J Salva. Con Copilot, los usuarios pueden generar código ejecutable a partir de entradas de texto en lenguaje natural, así como autocompletar secciones de código y funciones de programación comúnmente repetidas.

Salva señala que antes del lanzamiento de Copilot, las sugerencias de codificación generadas por máquinas anteriores de GitHub solo eran aceptadas por los usuarios entre el 14 y el 17 por ciento de las veces. “Lo cual está bien”, dijo. “Significa que estaba ayudando a los desarrolladores”. En los dos años transcurridos desde el debut de Copilot, esa cifra ha crecido hasta el 35 por ciento, «y eso representa poco menos de la mitad de la cantidad de código que se escribe». [on GitHub] — 46 por ciento por IA, para ser exactos”.

“[It’s] no es una cuestión de porcentaje de código escrito”, aclaró Salva. “Realmente se trata de la productividad, el enfoque, la satisfacción de los desarrolladores que están creando”.

Al igual que con los resultados de los generadores de lenguaje natural como ChatGPT, el código que proviene de Copilot es en gran parte legible, pero como cualquier modelo de lenguaje grande entrenado en Internet abierto, GitHub se aseguró de incorporar protecciones adicionales contra el sistema que produce código explotable sin querer.

“Entre cuando el modelo produce una sugerencia y cuando esa sugerencia se presenta al desarrollador”, dijo Salva, “en tiempo de ejecución realizamos […] un análisis de calidad del código para el desarrollador, en busca de errores comunes o vulnerabilidades en el código, como secuencias de comandos entre sitios o inyección de rutas”.

Ese paso de auditoría está destinado a mejorar la calidad del código recomendado con el tiempo en lugar de monitorear o controlar para qué se podría usar el código. Copilot puede ayudar a los desarrolladores a crear el código que compone el malware, el sistema no lo impedirá. “Hemos tomado la posición de que Copilot existe como una herramienta para ayudar a los desarrolladores a producir código”, dijo Salva, señalando las numerosas aplicaciones White Hat para dicho sistema. “Poner en sus manos una herramienta como Copilot […] los convierte en investigadores de seguridad más capaces”, continuó.

A medida que la tecnología continúa desarrollándose, Salva ve que la codificación de IA generativa se expandirá mucho más allá de sus límites tecnológicos actuales. Eso incluye «hacer una gran apuesta» en la IA conversacional. “También vemos que el desarrollo asistido por IA realmente se filtra en otras partes del ciclo de vida del desarrollo de software”, dijo, como usar IA para reparar de manera autónoma errores de compilación de CI/CD, corregir vulnerabilidades de seguridad o hacer que la IA revise escritos por humanos. código.

“Así como usamos compiladores para producir código a nivel de máquina hoy en día, creo que eventualmente llegarán a otra capa de abstracción con IA que permite a los desarrolladores expresarse en un lenguaje diferente”, dijo Salva. “Tal vez sea un lenguaje natural como el inglés, el francés o el coreano. Y eso luego se ‘compila’ en algo que las máquinas pueden entender”, liberando a los ingenieros y desarrolladores para que se concentren en el crecimiento general del proyecto en lugar de en los aspectos prácticos de su construcción.

De codificadores a gabbers

Con la toma de decisiones humana todavía firmemente encajada dentro del ciclo de programación de IA, al menos por ahora, tenemos poco que temer de tener software de escritura. Como señaló Salva, las computadoras ya hacen esto hasta cierto punto al compilar el código, y las babas grises digitales aún tienen que tomar el control debido a eso. En cambio, los desafíos más inmediatos que enfrenta la IA de programación reflejan los de la IA generativa en general: sesgos inherentes que sesgan los datos de entrenamiento, resultados de modelos que violan los derechos de autor y preocupaciones en torno a la privacidad de los datos del usuario cuando se trata de entrenar modelos de lenguaje grandes.

GitHub está lejos de estar solo en sus esfuerzos por crear un compañero de programación de IA. ChatGPT de OpenAI es capaz de generar código, al igual que las innumerables variantes independientes que se están construyendo sobre la plataforma GPT. También lo es el sistema AWS CodeWhisperer de Amazon, que proporciona gran parte de la misma funcionalidad de autocompletar que Copilot, pero optimizada para su uso dentro del marco de AWS. Después de múltiples solicitudes de los usuarios, Google también incorporó la generación de código y las capacidades de depuración en Bard en abril pasado, antes de su pivote en todo el ecosistema para adoptar la IA en I/O 2023 y el lanzamiento de Codey, la respuesta de Alphabet a Copilot. Todavía no podemos estar seguros de en qué se convertirán eventualmente los sistemas de codificación generativa o cómo podría afectar a la industria tecnológica; podríamos estar viendo las primeras iteraciones de una tecnología transformadora y democratizadora, o podría ser Clippy para una nueva generación.

Todos los productos recomendados por Engadget son seleccionados por nuestro equipo editorial, independiente de nuestra empresa matriz. Algunas de nuestras historias incluyen enlaces de afiliados. Si compra algo a través de uno de estos enlaces, podemos ganar una comisión de afiliado. Todos los precios son correctos en el momento de la publicación.



Source link-47