El desarrollo es una de las áreas más afectadas por los avances de la IA. El fenómeno no ha esperado a ChatGPT. ¿Cómo puede la IA facilitar el diseño, la programación y la optimización de software y páginas web? ¿Cuáles son los mejores asistentes de código de IA? ¿Cuáles son sus limitaciones?
"La IA escribirá 80 % de código en 5 años".
Thomas Dohmke, director ejecutivo de GitHub
"La IA escribirá 80 % del código dentro de 5 años" fue la profética y ligeramente provocadora afirmación realizada en 2022 por Thomas Dohmke, el jefe de GitHub, la plataforma de colaboración y gestión de código fuente utilizada por más de 100 millones de desarrolladores.
Las IA generativas como ChatGPT, Copilot y Gemini (antes Google Bard) han marcado la democratización de la inteligencia artificial. Basado en grandes modelos lingüísticos (LLM)Estas IA no sólo sirven para crear textos o imágenes. También pueden generar código, comentarlo, sugerir optimizaciones o detectar errores, ahorrando un tiempo precioso a los desarrolladores.
Lanzamiento en 2021, Copiloto de GitHubla IA generadora de código más popular, ya cuenta en octubre de 2023 más de un millón de usuarios de pago en más de 37.000 organizaciones !
Eso es todo lo que hace falta para que 2024 sea el año de las IA especializadas en código. Razón de más para reavivar el debate suscitado por la tendencia hacia la IA. código bajo/sin código sobre la desaparición de la profesión de promotor, o al menos sobre su inevitable evolución.
Sólo tardamos 16 minutos en crear este juego.
Código, los datos ideales para alimentar la IA
El código es uno de los campos favoritos de la IA. Mucho antes de la llegada de ChatGPT en noviembre de 2022. Entre ellas, el asistente de código IBM Watson en 2015, DeepCode en 2016 para encontrar fallos de seguridad en un programa o Microsoft IntelliCode en 2017 para mejorar la entrada semiautomática de código de IntelliSense que apareció diez años antes en Visual Studio.
No es de extrañar que estas IA se basen en grandes modelos lingüísticos (LLM) entrenados en grandes conjuntos de datos basados en texto. Y para alimentar los algoritmos de aprendizaje automático, estas IA necesitan datos estructurados. El código es el candidato ideal: en formato de texto, estructurado, disponible en grandes cantidades, de código abierto, en enormes repositorios como GitHub o SourceForge.
Y así, GitHub Copilot se ha entrenado con los 54 millones de repositorios de GitHub, incluido un conjunto de datos de 159 GB de código Python.
Contenido
1. Los principales usos de la IA de código :
- Generación automática de código
- Detección y corrección de errores
- Optimización y reescritura del código
- Análisis y explicación del código.
- Documentación de código
- Detección de vulnerabilidades de seguridad
- Pruebas automatizadas
- Conversión de una lengua a otra
- Aprender un nuevo idioma
2. Los límites de las IA de código
3. Lista de las mejores IA para la generación de código
¿Para qué sirven las IA de código?
Por ello, el uso de la inteligencia artificial se ha convertido en una práctica habitual para muchos desarrolladores. Sobre todo porque estas herramientas son fáciles de conseguir. Se pueden encontrar en forma deextensiones en los entornos de desarrollo más comunes (IDE)como Visual Studio Code, Eclipse o el software especializado de JetBrains (IntelliJ, PhpStorm, PyCharm, WebStorm...).
Hasta la fecha, existen varios centenares de herramientas de desarrollo que cubren una amplia variedad de aplicaciones. Y el número no deja de crecer. Cada semana aparecen nuevas herramientas basadas en IA, que responden a la demanda de los desarrolladores de soluciones más eficientes y de alto rendimiento.
En La IA puede utilizarse para una amplia gama de fines de desarrollo :
Generación automática de código
Esta es, con diferencia, la función más utilizada por los desarrolladores. La IA crea código a partir de una petición (un prompt), una descripción en lenguaje natural de lo que quieres, o a partir de código ya introducido autocompletándolo. Esta última función de autocompletado es una mejora de los sistemas de entrada semiautomáticos que existen desde hace tiempo en los IDE. Pero en lugar de limitarse a adivinar la siguiente palabra, la IA generará una o varias líneas de código basándose en estadísticas de probabilidad.
La IA sólo hace sugerencias. El desarrollador puede refinar su petición de forma iterativa para obtener el resultado deseado.
El ahorro de tiempo es enorme. Los desarrolladores pueden codificar más rápido (55 % más rápido según las estadísticas de GitHub), con más precisión y con una mejor comprensión del código.
Detección y corrección de errores
La IA de código también se utiliza para depurar código, validarlo con respecto a la sintaxis de un lenguaje determinado y detectar errores difíciles de encontrar en código complejo. La IA analiza el código que se le envía y detecta cualquier error, como :
- errores de sintaxis Falta un punto y coma al final de una instrucción en Java o JavaScript, falta una etiqueta de cierre en PHP o hay demasiadas llaves en un CSS...
- errores de ejecución : uso de una variable no inicializada o borrada (NullPointer), intento de acceder a un objeto que ya no es accesible en memoria (PointerException), pila de llamadas demasiado grande (StackOverflow)...
- errores lógicos división por cero, desbordamiento aritmético, llamadas a funciones inexistentes, etc.
- errores de entrada-salida errores: errores de lectura o escritura en un soporte de almacenamiento, intentos de abrir un archivo que no existe, etc.
- errores de formato formato inesperado por una cadena de caracteres, tipo de datos incorrecto, etc.
Optimización y reescritura del código
Las IA son capaces de mejorar la calidad del código, la velocidad de ejecución y la legibilidad. Sugieren los cambios que hay que hacer: refactorización código (simplificando la estructura, haciendo el código más modular y reutilizable, aplicando los principios SOLID, etc.), reduciendo los bucles superfluos, paralelizando tareas, optimizando las estructuras de datos y de entrada-salida, etc.
Las IA huelen el código hueleSe trata de malas prácticas de diseño de software que pueden dificultar la depuración del código y aumentar el riesgo de errores. La duplicación de código, los nombres de variables no explícitos o el acoplamiento excesivo (clases y módulos demasiado interdependientes) se detectan en cuestión de segundos.
Además, elLa IA formatea el código de acuerdo con las convenciones y buenas prácticas de un lenguaje determinado. al tiempo que se añaden comentarios y documentación. Esto hace que el código sea más fácil de leer, comprender y mantener, lo que permite a los desarrolladores volver al proyecto rápidamente, incluso a los que no han participado.
Análisis y explicación del código.
Para entender mejor un código, un desarrollador puede hacer preguntas a una IA en lenguaje natural a través de una interfaz de chat. Algunas IA también son capaces de generar visualizaciones de código para ayudar a los desarrolladores a comprender mejor la estructura del código, su lógica y las relaciones entre las distintas partes que lo componen.
El uso masivo de la IA para explicar código ha provocado una caída de la audiencia de Stack Overflow, el famoso foro de preguntas y respuestas consultado por millones de desarrolladores, causando la baja de 28 % de su plantilla en octubre de 2023.
Documentación de código
Completar el código significa escribir su documentación, una etapa tediosa y a menudo descuidada. Con demasiada frecuencia, los desarrolladores se ven empujados a entregar código funcional cada vez más rápido, dejando la documentación en un segundo plano.
La inteligencia artificial puede cambiar todo eso. Al analizar el código, puede producir inmediatamente una documentación completa y formateada, garantizando su claridad y legibilidad. Este revolucionario proceso reduce considerablemente la deuda técnica y permite a los desarrolladores concentrarse en su actividad principal: crear código.
Detección de vulnerabilidades de seguridad
Podría pensarse que la IA es tan útil para corregir código como para detectar fallos de seguridad. Lo son. Las IA como Checkmarx CheckAI, BurpGPT, Código profundo, codecia, Copiloto de GitHub detectan vulnerabilidades y hacen recomendaciones para cerrarlas, a veces con un solo clic. Detectan vulnerabilidades conocidos, dispositivos de seguridad antipatrón como Inyecciones SQL o XSS. Algunas IA pueden analizar el flujo de datos en el código fuente para identificar posibles puntos de entrada y salida de los ataques.
Sin embargo, debemos permanecer alerta y no confiar únicamente en la IA. Las pruebas manuales estáticas y dinámicas siguen siendo imprescindibles.
Generación automática de pruebas
Gracias a sus capacidades, la IA es capaz de realizar pruebas automáticas. Esto aporta una serie de ventajas, como ahorro de tiempo, mejora de la cobertura del código (identificación de partes del código que no se han probado manualmente), mejor detección de errores y reducción de los costes asociados a las pruebas manuales.
Las herramientas de generación de pruebas incluyen Código profundo que utilizaaprendizaje automático para generar pruebas unitarias y de integración.
Sin embargo, esta tecnología aún no es perfecta. Ahorra tiempo, pero debe complementarse con pruebas manuales, sobre todo para comprobar los aspectos no funcionales de una aplicación o sitio web, como la usabilidad o el rendimiento. Por tanto, la IA aún no puede considerarse un sustituto de las pruebas manuales.
Conversión de una lengua a otra
Al dominar varios lenguajes de programación, la mayoría de las IA de código son capaces de traducir código de un lenguaje a otro. No es una operación fácil, ya que pasar de un lenguaje a otro implica convertir la sintaxis (cambiar de estructura de bloques a sangría, por ejemplo), la lógica (cambiar paradigmas y estructuras de control), encontrar bibliotecas equivalentes en el lenguaje de destino, convertir los comentarios y la documentación, y optimizar el código para el lenguaje de destino.
Así, puedes pasar de C++ a Python y viceversa, o de Java a Python en cuestión de segundos. La conversión automática de código mediante IA acelera el proceso de desarrollo de software en diferentes plataformas y evita errores de traducción manual. Además de las IA de código que se enumeran a continuación, existen IA especializadas como Código profundo, Polígloto, Código Trans y Traductor de códigos AI.
Aprender un nuevo lenguaje
Las IA de código admiten un gran número de lenguajes de programación, rompiendo las barreras que existen entre los distintos desarrolladores. Así, puedes aprender fácilmente un nuevo lenguaje pidiéndole a la IA que lo convierta a partir de un lenguaje que ya conozcas. Como hemos visto antes, la IA también puede explicar el código existente o ponerse a prueba pidiéndole que corrija tus errores. La guinda del pastel es que IAs como ChatGPT o Gemini (antes Bard) son capaces de crear ejercicios de código y MCQs para poner a prueba tus nuevos conocimientos.
Por ejemplo, GitHub Copilot es capaz de entender y generar código en los principales lenguajes y frameworks, incluido :
- Lenguas compiladas C, C++, C#, Go, Java...
- Lenguajes de scripting Bash, JavaScript, Powershell, Python, Ruby, TypeScript...
- Lenguajes de marcado: CSS, HTML, XML, JSON, YAML...
- Lenguajes de bases de datos SQL, MySQL, PostgreSQL...
- Lenguajes de programación específicos SQL, R...
- Marcos Django (Python), Angular y React (JavaScript), ASP.NET (C#), Spring Boot (Java), Laravel (PHP), Qt (C++)...
Por supuesto, la inteligencia artificial no puede igualar la formación altamente especializada e interactiva que ofrecemos en ORSYS. Nuestro 246 cursos de formación en desarrollo de software y web están dirigidos por profesionales experimentados en la materia que adaptan sus cursos a sus necesidades. La IA no sustituye al contacto humano.
Los límites de la IA de generación de código
La IA está revolucionando el proceso de desarrollo en todas sus fases. Sin embargo, aún se enfrentan a numerosas limitaciones y restricciones que hay que tener en cuenta antes de utilizarlas.
Un código normalizado
Procedente de repositorios de código abierto, el código generado por las IA da lugar a código estandarizado, código repetido que a veces degrada la calidad y empobrece el código global. La consultora GitClear ha analizado 153 millones de líneas de código modificado escritas entre enero de 2020 y diciembre de 2023. Su conclusión es que
“ rotación de código - el porcentaje de líneas que se revisan o actualizan menos de dos semanas después de su creación - el porcentaje de líneas que se revisan o actualizan menos de dos semanas después de su creación se espera que se duplique en 2024 en comparación con su valor de referencia en 2021, antes de la llegada de la IA. "
Según GitClear, es probable que el aumento del copiado y pegado de código provocado por la IA empeore la deuda técnica de las empresas en los próximos años.
Calidad desigual en las distintas lenguas
Las IA de código son como todas las IA: la calidad de su respuesta depende estrechamente de la cantidad y calidad de los datos utilizados para entrenarlas. En consecuencia, cuanto más popular sea un lenguaje de programación en repositorios de código públicos como GitHub, GitLab o Bitbucket, más pertinentes serán las sugerencias de la IA.
Por ejemplo, JavaScript está muy presente en los repositorios. Por tanto, las sugerencias de IA para JavaScript serán muy pertinentes. Por el contrario, los lenguajes conocidos pero comparativamente menos presentes en los repositorios de código, como Julia, SAP's ABAP o MATLAB, estarán poco soportados.
Sesgos de programación
Los repositorios públicos que sirven de datos de entrenamiento para las IA pueden contener código mal escrito u orientado a un determinado resultado. Esto puede afectar a las sugerencias de código de las IA, como generar código discriminatorio.
La IA no entiende códigos complejos
Por el momento, las IA de generación de código son incapaces de gestionar un proyecto en su conjunto.
Las IA son ideales para generar código corto, fragmentos de código como fragmentos o funciones.. A la inversa, sus sugerencias son menos pertinentes para el código largo. Por el momento, trabajar en un proyecto complejo significa descomponerlo para que la IA pueda analizarlo parte por parte. Sin embargo, la IA no podrá tener en cuenta todo el panorama ni integrar todo el contexto del proyecto (presupuesto, tiempo, plataforma de destino, competencias de los desarrolladores, herramientas disponibles, necesidades de las partes interesadas, etc.).
AIs que sufren alucinaciones
Bien conocidas por los usuarios de ChatGPT, las alucinaciones son respuestas inventadas por los LLM cuando no encuentran la respuesta correcta a una pregunta y presentadas como un hecho cierto. Aplicado al desarrollo, esto puede dar lugar a código falso e inseguro que hace perder el tiempo al desarrollador.
Derechos de autor y confidencialidad de los datos
Si las IA hacen un uso extensivo de datos públicos, no cabe duda de que hay código sujeto a derechos de autor, con riesgos de plagio. Además, es importante recordar que cuando se utiliza una IA, se la está entrenando. Si escribes código propietario o sujeto a acuerdos de confidencialidad, podrías estar incumpliendo la política de tu empresa. Algunos editores, como Tabnine y GitHub para Copilot Business, no almacenan su código y sólo entrenan su IA en repositorios de código abierto cuya licencia lo permite.
Posibles fallos de seguridad
Tenga cuidado de no confiar demasiado en la IA para la seguridad de sus datos. El código generado por las IA no es probado ni validado por humanos. Es más, la calidad del código depende, como hemos visto, de la calidad de los datos sobre los que se ha entrenado. Si los datos están comprometidos o contienen errores, el código generado también podría estar comprometido.
Además, el código generado por las IA puede ser difícil de auditar y comprender, lo que dificulta la detección de fallos de seguridad. Por lo demás, ¡solo las IA especializadas en ciberseguridad podrán analizarlo!
Cuestiones éticas
Los programas en los que intervienen seres humanos (sanidad, conducción autónoma, selección de candidatos, etc.) pueden plantear problemas éticos que las IA no resuelven o que pueden dar lugar a resultados sesgados. Confiaría la vida de los pacientes o de los usuarios de vehículos autónomos a una IA?
El futuro del desarrollo lo escribirá la IA
Aunque aún queda margen de mejora en las herramientas, la IA avanza con paso firme y ya presta numerosos servicios a los desarrolladores, que pueden concentrarse en otras tareas colaborativas de mayor valor añadido. Por ejemplo, dispondrán de más tiempo para asistir a las numerosas reuniones del proyecto (coordinación, demostraciones, seguimiento, validación, retrospectiva, etc.), en las que, por desgracia, la IA aún no puede sustituirles.
Las principales IAs de generación de código
Copiloto de GitHub
El asistente de código más famoso. No confundir con Copilot, la IA conversacional de Windows 11, Bing y Microsoft 365. GitHub Copilot fue desarrollado en 2021 por GitHub, filial de Microsoft, en colaboración con OpenAI. Su principal ventaja es que puede integrarse como extensión en los principales IDE, como Visual Studio Code, Visual Studio, Vim, Neovim, JetBrains IDEs y Azure Data Studio.
Precio: A partir de 10 $/mes o 100 $ al año
tabino
Utilizada por 3 millones de desarrolladores, esta herramienta de código abierto funciona con modelos GPT para predecir y sugerir código a medida que el desarrollador escribe. La herramienta también ofrece fragmentos para tareas comunes y una función de chat. Tabnine se integra con los principales IDE: Visual Studio, Eclipse, Android Studio y JetBrains IDEs.
Precio: a partir de 12 $/mes (versión limitada gratuita)
Código de Amazon Whisperer
Desarrollado por Amazon, CodeWhisperer escribe tanto fragmentos como funciones completas a partir de su solicitud o del código existente. Puede utilizarse en la línea de comandos o a través de un IDE (VS Code, Visual Studio, JetBrains IDE, AWS Cloud9, etc.). Su asistente conversacional Amazon Q proporciona asesoramiento personalizado.
Premio : a partir de 20 $/mes (gratis para uso personal)
Google Géminis (anteriormente Bard)
La nueva versión de la IA de Google se llama Gemini y mejora su eficacia, sobre todo en el desarrollo. Bard genera código en una veintena de idiomas, puede explicar, depurar y comentar código y escribir funciones para Google Sheets.
Precio: gratis (por el momento)
ChatGPT
La famosa IA generativa no se diseñó específicamente para programar, pero puede entender y generar código en los principales lenguajes. ChatGPT tiene una serie de limitaciones: no crea programas completos, no se integra con IDEs y no es muy eficaz a la hora de detectar fallos de seguridad.
Premio : a partir de 20 $/mes (versión limitada gratuita GPT-3.5 )