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 o Gemini (antes Google Bard) han marcado la democratización de la inteligencia artificial. Residencia en modelos de lenguaje grandes (LLM), estas IA no se utilizan solo para crear texto o imágenes. También pueden generar código, comentarlo, sugerir optimizaciones o buscar errores, lo que ahorra a los desarrolladores un tiempo valioso.
Lanzado en 2021, Copiloto de GitHub, la IA de generación de código más popular, ya cuenta en octubre de 2023 más de 1 millón de usuarios de pago en más de 37 000 organizaciones !
No hace falta más que dedicar el año 2024 como el de la IA especializada en codificación. Suficiente para reavivar el debate generado por la tendencia código bajo/sin código sobre la desaparición de la profesión de desarrollador, o al menos de su inevitable evolución.
¡Solo tomó 16 minutos crear este juego!
Código, datos ideales para impulsar la IA
El código es una de las áreas favoritas de la IA. Y esto, mucho antes de la llegada de ChatGPT en noviembre de 2022. Citemos el asistente IBM Watson Code en 2015, DeepCode en 2016 para encontrar vulnerabilidades de seguridad en un programa o Microsoft IntelliCode en 2017 para mejorar la finalización automática de código de IntelliSense que apareció diez años antes en Visual Studio.
No es sorprendente que estas IA se basen en grandes modelos de lenguaje (LLM) entrenados en grandes conjuntos de datos basados en texto. Y para impulsar los algoritmos de aprendizaje automático, estas IA necesitan datos estructurados. El código se convierte entonces en un candidato ideal: en formato de texto, estructurado, disponible en grandes cantidades, en código abierto, en repositorios enormes como GitHub o SourceForge.
Y así, GitHub Copilot se entrenó en los 54 millones de repositorios de GitHub, incluido un conjunto de datos de 159 GB de código Python.
Resumen
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 de código.
- Análisis y explicación del código
- Documentación de código
- Detección de violaciones de seguridad
- Pruebas automatizadas
- Convertir de un idioma a otro
- Aprendiendo un nuevo lenguaje
2. Los límites de las IA de código
3. Lista de la mejor IA para generación de código
¿Para qué se utilizan las IA de código?
Por tanto, el uso de la inteligencia artificial se ha convertido en una práctica habitual para muchos desarrolladores. Sobre todo porque estas herramientas están a su alcance. Se encuentran en forma deExtensiones en los entornos de desarrollo (IDE) más comunes., como Visual Studio Code, Eclipse o software especializado de JetBrains (IntelliJ, PhpStorm, PyCharm, WebStorm…).
Hasta la fecha, existen varios cientos de herramientas de soporte al desarrollo que cubren una amplia variedad de aplicaciones. Su número aumenta constantemente. Cada semana aparecen nuevas herramientas basadas en IA que satisfacen la demanda de los desarrolladores de soluciones más eficientes y efectivas.
Las Hay muchos usos de la IA para el 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 solicitud (un aviso), una descripción en lenguaje natural de lo que queremos, o del código ya introducido completándolo automáticamente. Esta última función de autocompletar es una mejora de los sistemas de autocompletar que existen desde hace mucho tiempo en los IDE. Pero en lugar de simplemente adivinar la siguiente palabra, la IA generará una o más líneas de código basadas en estadísticas de probabilidad.
La IA sólo hace sugerencias. El desarrollador puede refinar iterativamente su solicitud 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
Una IA de código también se utiliza para depurar código, validarlo con la sintaxis de un idioma determinado, pero también para detectar errores difíciles de encontrar en código complejo. Así, la IA analiza el código que se le envía y detecta posibles errores, como por ejemplo:
- 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, una llave adicional en CSS, etc.
- errores de tiempo de ejecución: uso de una variable no inicializada o eliminada (NullPointer), intento de acceder a un objeto al que ya no se puede acceder en la memoria (PointerException), pila de llamadas demasiado grande (StackOverflow)…
- errores lógicos : división por cero, desbordamiento aritmético, llamada a función inexistente…
- errores de entrada-salida : errores de lectura o escritura en un medio de almacenamiento, intento de abrir un archivo que no existe, etc.
- errores de formato : formato inesperado por una cadena de caracteres, tipo de datos incorrecto…
Optimización y reescritura de código.
Las IA son capaces de mejorar la calidad del código, la velocidad de ejecución y la legibilidad. Sugieren cambios a realizar: refactorización código (simplificación de la estructura, hacer el código más modular y reutilizable, aplicación de principios SOLID, etc.), reducción de bucles innecesarios, paralelización de tareas, optimización de estructuras de datos y entradas-salidas, etc.
Las IA son capaces de detectar los Code Smells (o un código que huele), malas prácticas de diseño de software que pueden hacer que el código sea más difícil de depurar y aumentar el riesgo de errores. Así, las duplicaciones de código, los nombres de variables no explícitos o los acoplamientos excesivos (clases y módulos demasiado interdependientes) se detectan en pocos segundos.
Además, elIA formatea el código de acuerdo con las convenciones y mejores prácticas de un idioma determinado. mientras agrega comentarios y documentación. Se facilita la legibilidad del código, su comprensión y su mantenibilidad, permitiendo a los desarrolladores retomar rápidamente el proyecto, incluso aquellos que no participaron en él.
Análisis y explicación del código
Para comprender mejor el código, un desarrollador puede cuestionar 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 diferentes partes que lo componen.
El uso masivo de la IA para explicar código ha provocado que la audiencia de Stack Overflow, el popular foro de preguntas y respuestas consultado por millones de desarrolladores, caiga en picado, provocando la eliminación de 28 % de su plantilla en octubre de 2023.
Documentación de código
Completar el código requiere escribir su documentación, un paso tedioso y que a menudo se pasa por alto. Con demasiada frecuencia, los desarrolladores se ven obligados a entregar código funcional cada vez más rápido, dejando la documentación en un segundo plano.
La inteligencia artificial puede cambiar las reglas del juego. Al analizar el código, puede producir inmediatamente documentación completa y formateada, garantizando su claridad y legibilidad. Este proceso revolucionario reduce significativamente la deuda técnica y permite a los desarrolladores centrarse en su negocio principal: crear código.
Detección de violaciones de seguridad
Se podría pensar que las IA son tan útiles para corregir código como para detectar vulnerabilidades de seguridad. Este es el caso. A las IA les gusta Checkmarx CheckAI, BurpGPT, Código profundo, codecia, Copiloto de GitHub detectar fallas y hacer recomendaciones para subsanarlas, a veces con un solo clic. Detectan vulnerabilidades conocidas, antipatrones de seguridad 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 ataques.
Sin embargo, debemos permanecer alerta y no depender únicamente de la IA. La realización de pruebas estáticas y dinámicas manuales sigue siendo imperativa.

Generación de pruebas automatizada
Gracias a sus capacidades, la IA es capaz de realizar pruebas automáticas. Esto trae muchos beneficios, como ahorrar tiempo, mejorar la cobertura del código (identificar partes del código que no se han probado manualmente), una mejor detección de errores y reducir los costos asociados con las pruebas manuales.
Las herramientas de generación de pruebas incluyen Código profundo quien usa elaprendizaje automático para generar pruebas unitarias y de integración.
Sin embargo, esta tecnología aún no es perfecta. Ahorra tiempo, pero aun así debe complementarse con pruebas manuales, en particular para probar aspectos no funcionales de una aplicación o sitio, como la usabilidad o el rendimiento. Todavía no podemos considerar la IA como un sustituto de las pruebas manuales.
Convertir de un idioma a otro
Con dominio de varios lenguajes de programación, la mayoría de las IA de código pueden traducir código de un lenguaje a otro. La operación no es fácil, porque pasar de un idioma a otro requiere convertir la sintaxis (cambiar la estructura del bloque a sangría, por ejemplo), la lógica (cambiar paradigmas y estructuras de control), encontrar bibliotecas equivalentes en el idioma de destino, convertir comentarios y documentación, y optimizar el código para el idioma de destino.
De este modo podemos pasar de C++ a Python y viceversa o de Java a Python en unos segundos. La conversión automática de código impulsada por 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 siguientes, 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 una gran cantidad de lenguajes de programación, rompiendo la barrera que existe entre los diferentes desarrolladores. De este modo, podemos aprender fácilmente un nuevo idioma pidiéndole a la IA que lo convierta a partir de un idioma que dominamos. Como vimos anteriormente, la IA también podrá explicar el código existente o permitirle ponerse a prueba pidiéndole que corrija sus errores. La guinda del pastel es que las IA como ChatGPT o Gemini (antes Bard) son capaces de crear ejercicios de código y preguntas de opción múltiple para poner a prueba tus nuevos conocimientos.
Por ejemplo, GitHub Copilot es capaz de comprender y generar código en los principales lenguajes y marcos, incluidos:
- Idiomas compilados : C, C++, C#, Ir, Java…
- Lenguajes de scripting : Bash, JavaScript, Powershell, Python, Ruby, TypeScript…
- Lenguajes de marcado: CSS, HTML, XML, JSON, YAML…
- Idiomas 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 tan 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 el campo que adaptan sus cursos a sus necesidades. La IA no reemplaza el contacto humano.
Los límites de la IA para la generación de código
La IA está revolucionando el proceso de desarrollo en todas las etapas. Sin embargo, todavía enfrentan muchas limitaciones y limitaciones que deben tenerse en cuenta antes de utilizarlos.
Un código estandarizado
Procedente de repositorios de código fuente abierto, el código generado por la IA conduce a un código estandarizado, código repetido que a veces degrada la calidad y empobrece el código general. Así, la consultora GitClear analizó 153 millones de líneas de código modificado, escritas entre enero de 2020 y diciembre de 2023. Concluyó 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 – Se espera que se duplique en 2024 en comparación con su valor de referencia de 2021, antes de la aparición de la IA. "
Según GitClear, se espera 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 según el idioma
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 su entrenamiento. Entonces, Cuanto más popular sea un lenguaje de programación en repositorios de código públicos como GitHub, GitLab o Bitbucket, más relevantes serán las sugerencias de IA..
Por ejemplo, JavaScript está muy presente en los repositorios. Por tanto, las sugerencias de la IA sobre JavaScript serán muy relevantes. Por el contrario, los lenguajes conocidos, pero comparativamente menos presentes en los repositorios de código, como Julia, ABAP de SAP o MATLAB, tendrán un soporte deficiente.
Sesgos de programación
Los repositorios públicos que sirven como datos de entrenamiento de IA pueden contener código mal escrito o orientado a resultados. Esto puede afectar las sugerencias de códigos de IA, como la generación de códigos discriminatorios.
La IA no entiende código complejo
Por el momento, las IA de generación de código no pueden manejar un proyecto en su totalidad.
Las IA son perfectas para generar código corto, fragmentos de código como fragmentos o funciones.. Por el contrario, sus sugerencias son menos relevantes en código largo. De momento, trabajar en un proyecto complejo requiere fragmentarlo para que la IA lo analice parte por parte. Sin embargo, la IA no podrá tener en cuenta el panorama general ni integrar todo el contexto del proyecto (presupuesto, tiempo, plataforma de destino, habilidades del desarrollador, herramientas disponibles, necesidades de las partes interesadas, etc.).
IA víctimas de alucinaciones
Bien conocidas por los usuarios de ChatGPT, las alucinaciones son respuestas inventadas por los LLM cuando no pueden encontrar la respuesta correcta a una pregunta y se presentan como un hecho determinado. Aplicado al desarrollo, esto puede dar lugar a un código incorrecto e inseguro que, por tanto, hará perder el tiempo al desarrollador.
Problemas de derechos de autor y privacidad de datos
Si las IA utilizan en gran medida datos públicos, sin duda existe un código sujeto a derechos de autor con riesgos de plagio. Además, es importante recordar que cuando usas una IA, la estás entrenando. Al escribir código propietario o sujeto a acuerdos de confidencialidad, podría estar violando la política de su empresa. Algunos editores, como Tabnine y GitHub para Copilot Business, no almacenan su código y solo entrenan sus IA en repositorios de código abierto cuya licencia lo permite.
Posibles violaciones de seguridad
Tenga cuidado de no depender demasiado de la IA para la seguridad de sus datos. El código generado por las IA no es probado ni validado por humanos. Además, la calidad del código depende, como hemos visto, de la calidad de los datos con los que se entrena. Si los datos están comprometidos o incluyen errores, el código generado también podría verse comprometido.
Además, el código generado por IA puede ser difícil de auditar y comprender, lo que dificulta la detección de vulnerabilidades de seguridad. De lo contrario, ¡solo la IA especializada en ciberseguridad podrá analizarlo!
Problemas éticos
Los programas que afectan a los seres humanos (salud, conducción autónoma, selección de candidatos, etc.) pueden plantear cuestiones éticas que no son gestionadas por la IA o que pueden conducir a resultados sesgados. ¿Confiarías la vida de pacientes o usuarios de vehículos autónomos a una IA?
El futuro del desarrollo lo escribirá la IA
Aunque las herramientas aún se pueden mejorar, la IA está progresando constantemente y ya está brindando muchos servicios a los desarrolladores que pueden concentrarse en otras tareas colaborativas y de mayor valor agregado. Así, tendrán más tiempo para asistir a las numerosas reuniones del proyecto (coordinación, demostraciones, seguimiento, validación, retrospectiva, etc.), donde, lamentablemente, la IA todavía no puede sustituirlos.
Las principales IA 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, una subsidiaria de Microsoft, en asociación con OpenAI. Su principal ventaja: integrarse como extensión en los principales IDE como Visual Studio Code, Visual Studio, Vim, Neovim, JetBrains IDE y Azure Data Studio.
Precio: Desde 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 escribe el desarrollador. La herramienta también proporciona fragmentos de tareas comunes y una función de chat. Tabnine se integra con los principales IDE: Visual Studio, Eclipse, Android Studio y JetBrains IDE.
Precio: desde 12 $/mes (gratis en versión limitada)

Código de Amazon Whisperer
Desarrollado por Amazon, CodeWhisperer escribe fragmentos y funciones completas de su solicitud o código existente. Se puede utilizar desde la línea de comandos o mediante un IDE (VS Code, Visual Studio, JetBrains IDE, AWS Cloud9, etc.). Su asistente conversacional Amazon Q brinda asesoramiento personalizado.
Premio : desde 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 eficiencia, sobre todo en desarrollo. Bard genera código en unos veinte 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 fue diseñada específicamente para la programación, pero puede comprender y generar código en los principales lenguajes. ChatGPT tiene muchas limitaciones: no crea programas completos, no se integra con IDE y no es muy bueno para detectar vulnerabilidades de seguridad.
Premio : desde 20 $/mes (gratis en la versión limitada GPT-3.5)