Inicio > Tecnologías digitales > IA y big data > AI: generadores de código, una revolución para los desarrolladores

AI: generadores de código, una revolución para los desarrolladores

Publicado el 7 de febrero de 2024
Compartir esta página :

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?

Ilustración artículo IA de código

“La IA escribirá 80 % de código en 5 años”, afirmó en 2022 de manera profética y un poco provocativa Thomas Dohmke, jefe de GitHub, la plataforma 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.

Sólo tardamos 16 minutos en crear este juego.

Gracias a la IA de FRVR, solo tomó 8 minutos crear el código del juego Space Aliens y otros 8 minutos para el diseño.

Código, los datos ideales para alimentar 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.

¿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. 

En Hay muchos usos de la IA para el desarrollo. :

La generación de código y la corrección de errores representan la mitad del uso de los usuarios de Tabnine

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 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.

GitHub Copilot te permite crear un componente de botón en un segundo. Sólo tienes que preguntar !

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 huelen el código 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 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 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 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, lo que permite a los desarrolladores concentrarse en su actividad 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 detectan vulnerabilidades y hacen recomendaciones para cerrarlas, 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.

Codacy analiza el código y muestra las correcciones necesarias en su repositorio Git.

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 altamente especializada e interactiva que ofrecemos en ORSYS. Nuestra 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

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 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.. A la inversa, sus sugerencias son menos pertinentes en 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.).

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 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 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 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!

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 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 de colaboración 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 IA de generación de código

Copiloto de GitHub

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: Desde 10 $/mes o 100 $ al año

Logotipo de tabnina

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)

Logotipo de Amazon Code Whisperer

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)

Nuestro experto

Formado por periodistas especializados en informática, gestión y desarrollo personal, el equipo editorial de ORSYS Le mag [...].

dominio asociado

formación asociada