«Aprender a programar». Esta palabra despectiva de tres palabras sale constantemente de la boca de los trolls de Internet y los técnicos cada vez que se anuncia un despido en los medios. Una opinión inútil en sí misma, pero con el reciente advenimiento de la IA generadora de código, conocer los entresijos de un lenguaje de programación como Python pronto podría resultar tan útil como saber hablar con fluidez en un idioma muerto como el sánscrito. De hecho, estas genAI ya están ayudando a los desarrolladores de software profesionales a escribir de manera más rápida y eficiente, haciendo gran parte de la tarea de la programación.
Cómo funciona la codificación
Los dos lenguajes de programación más utilizados y escritos en la actualidad son Java y Python. El primero revolucionó casi sin ayuda las operaciones multiplataforma cuando se lanzó a mediados de los 90 y ahora gobierna «todo, desde tarjetas inteligentes hasta naves espaciales», según la revista Java en 2022, sin mencionar la función de búsqueda de Wikipedia y todo Minecraft. Este último es varios años más antiguo que Java y sirve como código base para muchas aplicaciones modernas como Dropbox, Spotify e Instagram.
Difieren significativamente en la forma en que funcionan, ya que Java debe compilarse (traducir su código legible por humanos en código ejecutable por máquina) antes de que pueda ejecutarse, mientras que 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 compilación previa. El método de interpretación facilita la escritura de código para múltiples plataformas, mientras que el código compilado generalmente está dirigido a un tipo particular de procesador. Independientemente de cómo funcionen, el proceso real de escribir código entre ellos es casi idéntico: alguien tiene que sentarse, piratear un editor de texto o un entorno de desarrollo integrado (IDE) y escribir todas esas líneas de instrucciones. Y hasta hace poco, ese alguien solía ser un humano.
El proceso moderno de escribir «programación clásica» no es muy diferente del proceso ENIAC, donde un ingeniero de software toma un problema, lo divide en varias subtareas, escribe código para resolver cada una de esas subtareas. en orden, y luego depurar y recompilar repetidamente el código hasta que funcione. Por otro lado, la «programación automática» quita al programador un cierto grado de separación. En lugar de que una persona escriba cada línea de código individualmente, una persona crea una abstracción de alto nivel del problema para que la computadora genere un código de bajo nivel para la solución. Esto es diferente de la programación «interactiva», que le permite codificar un programa mientras ya se está ejecutando.
Los sistemas modernos de codificación de IA conversacional como 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 máscara 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 necesario.
Uno de los primeros representantes de esta nueva generación de IA para la codificación conversacional fue Codex, desarrollado por OpenAI y lanzado a fines de 2022. el modelo es notablemente capaz de imitar el habla y la escritura humana después de haber sido entrenado en miles de millones de palabras de la red pública. Luego, la compañía refinó este modelo utilizando más de 100 gigabytes de datos de GitHub para crear el Codex. Es capaz de generar código en 12 idiomas diferentes y puede traducir programas existentes entre ellos.
Codex es ideal para crear objetos pequeños, simples o repetitivos como «un gran botón rojo que sacude brevemente la pantalla cuando se presiona» o funciones comunes como el validador de direcciones de correo electrónico de Google Forms. Pero no importa cuán fructífera sea su prosa, no la usará para proyectos complejos como codificar un balanceador de carga del lado del servidor; es una tarea demasiado grande.
DeepMind de Google desarrolló AlphaCode específicamente para esta tarea. Al igual que Codex, AlphaCode primero se entrenó en varios gigabytes de archivos de código GitHub existentes, pero luego se le presentaron miles de desafíos de codificación tomados de competencias de codificación en línea, como averiguar cuántas cadenas binarias de una longitud determinada no contenían ceros consecutivos.
Para hacer esto, AlphaCode generará hasta un millón de opciones de código y luego rechazará todo menos el 1 por ciento superior para pasar los 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 la revista Science, AlphaCode pudo responder correctamente estas preguntas difíciles el 34 por ciento de las veces (en comparación con el éxito inequívoco de Codex en las mismas pruebas, lo cual no está mal). DeepMind incluso ingresó a AlphaCode en una competencia de codificación en línea con 5000 participantes, 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 base para ChatGPT, Codex sirve como base para GitHub Copilot AI. Entrenado en miles de millones de líneas de código recopiladas de la web pública, Copilot ofrece finalización de código de IA basada en la nube a través de un complemento de suscripción para Visual Studio Code, Visual Studio, Neovim y entornos de desarrollo integrados (IDE) de JetBrains.
Lanzado inicialmente como una vista previa para desarrolladores en junio de 2022, Copilot fue una de las primeras IA capaces de codificar en llegar al mercado. Más de un millón de desarrolladores han usado el sistema en los últimos dos años, dijo a SocialRed Ryan J. Salva, vicepresidente de productos de GitHub, en una entrevista reciente. Con Copilot, los usuarios pueden generar código ejecutable a partir de la entrada de texto en lenguaje natural, así como funciones de programación y fragmentos de código que se repiten con frecuencia.
Salva señala que antes del lanzamiento de Copilot, los usuarios solo aceptaban propuestas anteriores de codificación de GitHub generadas por máquinas entre el 14 % y el 17 % de las veces, “lo cual es normal. Eso significa que ayudó a los desarrolladores». En los dos años transcurridos desde el debut de Copilot, esa cifra aumentó al 35 por ciento, «y eso es poco menos de la mitad de la cantidad de código escrito». [on GitHub] «46 por ciento con IA, para ser exactos».
“[It’s] no se trata solo del porcentaje de código escrito”, explicó Salva. «Realmente se trata de la productividad, el enfoque y la satisfacción de los desarrolladores que crean».
Al igual que con la salida de los generadores de lenguaje natural como ChatGPT, el código que proviene de Copilot es en su mayoría legible, pero como cualquier modelo de lenguaje grande entrenado en la web abierta, GitHub se ha ocupado de incluir protecciones adicionales contra la creación inadvertida de código explotable por parte del sistema.
“Entre el momento en que el modelo genera una propuesta y el momento en que esa propuesta se presenta al desarrollador”, dijo Salva, “realizamos, en tiempo de ejecución, un análisis de calidad del código para el desarrollador, buscando errores o vulnerabilidades comunes en el código, como como secuencias de comandos entre sitios. o inyección de trayectoria».
Este paso de auditoría está diseñado para mejorar la calidad del código recomendado con el tiempo, no para rastrear o controlar para qué se puede usar el código. Copilot puede ayudar a los desarrolladores a crear el código que crea el malware sin que el sistema se lo impida. “Nuestra posición es que Copilot es una herramienta que ayuda a los desarrolladores a crear código”, dijo Salva, señalando las muchas aplicaciones de White Hat para dicho sistema. “Darles una herramienta como Copilot… los convierte en investigadores de seguridad más capaces”, continuó.
A medida que la tecnología continúa avanzando, Salva cree que la codificación generativa de IA irá mucho más allá de las limitaciones tecnológicas actuales. Esto incluye una «gran apuesta» en la IA conversacional. “También estamos viendo cómo el desarrollo asistido por IA realmente se está abriendo camino en otras partes del ciclo de vida del desarrollo de software”, dijo, usando IA para corregir errores de compilación de CI/CD fuera de línea, corregir vulnerabilidades de seguridad o validar IA escrita por humanos. Por ejemplo. código.
“Al igual que hoy usamos compiladores para crear código a nivel de máquina, creo que eventualmente pasarán a otro nivel de abstracción con IA que permitirá a los desarrolladores expresar sus pensamientos en otro idioma”, dijo Salva. “Tal vez sea un idioma natural como el inglés, el francés o el coreano. Esto luego se «compila» en algo que las máquinas pueden entender, lo que permite a los ingenieros y desarrolladores centrarse en el crecimiento general del proyecto en lugar de los detalles de su diseño.
De codificadores a gabbers
Dado que la toma de decisiones humanas todavía está estrechamente ligada al ciclo de programación de la IA, al menos por ahora, no tenemos nada que temer de tener software para escribir software. Como señaló Salva, las computadoras ya hacen esto hasta cierto punto al compilar el código, y debido a eso, la sustancia gris digital aún no se ha hecho cargo. En cambio, los problemas más apremiantes a los que se enfrenta la programación de IA son similares a los de la IA generativa en general: sesgos inherentes que sesgan los datos de entrenamiento, resultados del modelo que infringen los derechos de autor y preocupaciones sobre la privacidad de los datos del usuario cuando se trata de aprender lenguajes de lenguajes extensos.
GitHub está lejos de estar solo en sus esfuerzos por crear un compañero de codificación de IA. ChatGPT de OpenAI es capaz de generar código, al igual que innumerables variaciones independientes creadas en la plataforma GPT. Lo mismo se aplica a Amazon AWS CodeWhisperer, que proporciona gran parte de la misma funcionalidad de autocompletado que Copilot, pero está optimizado para su uso en un entorno de AWS. Por demanda popular, Google también incluyó capacidades de depuración y generación de código en Bard en abril de este año, antes de un giro masivo de todo el ecosistema hacia 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ían impactar en la industria tecnológica; podemos observar 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 SocialRed son seleccionados por nuestro equipo editorial independientemente de nuestra empresa matriz. Algunas de nuestras historias contienen 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 actuales en el momento de la publicación.