Artículo 1 Inteligencia Artificial: Herramientas de finalización de código

En la actualidad, contamos con una gran variedad de herramientas desarrolladas en distintos lenguajes de programación, que tienen como objetivo facilitar el trabajo de los desarrolladores de software. Existen herramientas que facilitan el ciclo de vida del software, integración continua y despliegue continuo, o que permiten realizar pruebas y análisis de la calidad de un código fuente. Sin embargo, han surgido unas cuantas herramientas que desde su lanzamiento han generado debate sobre el impacto que podrían tener a futuro en la industria del desarrollo de software. Las herramientas de completado o finalización de código; tales como Github Copilot o Tabnine ¿Significa esto el fin de los desarrolladores? ¿Serán capaces de reemplazarlos? ¿Bajar la demanda competitiva en el mercado? Es necesario analizar que son realmente estas herramientas, y cuál es su verdadero propósito para dar respuesta a esta y muchas otras interrogantes. Por lo tanto, analizaremos cómo impactan estas herramientas con inteligencia artificial sobre el trabajo que realizamos como desarrolladores de software.

1.1 Artículo

La idea de reemplazar a los humanos no es para nada nueva. Hace años, desde que aparecieron los primeros sistemas automatizados, han existido personas que creen que los humanos seremos reemplazados y seremos inútiles ante el avance tecnológico. Sin embargo, muchos ignoran la realidad de los sistemas, y el verdadero beneficio que estos pueden representar al realizar tareas y procesos. Para quienes tenemos un background en la informática o desarrollo de software, este tipo de ideas realmente no debería causar ningún tipo de situación alarmante. Pero, ¿qué son las herramientas de finalización de código inteligente?

Entrando en contexto, el término “finalización de código” puede entenderse como un autocompletado o predicción de palabras. Este concepto no es tan nuevo, puesto que ya existen algunos editores de texto que tienen esta función integrada, donde el editor predice palabras o texto que el usuario está tratando de escribir. Esto permite acelerar las interacciones entre el usuario y el software, especialmente cuando las palabras tienen una predicción correcta. Estas funciones de autocompletado siguen algoritmos donde aprenden nuevas palabras después que el usuario las ha escrito una cantidad considerable de veces, para así hacer sugerencias. Partiendo de esta idea, ¿cuál es el “plus” de las herramientas de finalización de código inteligente?

Github Copilot

  • “El software se está comiendo el mundo, pero la IA se va a comer el software.” – Jensen Huang, Nividia CEO (2017)

Copilot a diferencia de otras IA otras existentes es que desarrolla su lógica conforme a la información a la que tiene acceso, github copilot hace uso de “miles de millones líneas de código público existentes en repositorios, pone el conocimiento a nuestro alcance, ahorrándonos tiempo y apoyándonos en el enfoque de nuestra aplicación”, otra cosa importante es que Copilot va aprendiendo y evolucionando con el tiempo.

En ocasiones sin darnos cuenta, realizamos tareas repetitivas y Copilot es capaz de detectar esto y optimizar mejor nuestro tiempo. También a base de instrucciones puede hacer varias proyecciones de código y darnos la opción de seleccionar la que más se ajusta a nuestra instrucción.

Tabnine

Tabnine actualmente ofrece muchas más características de autocompletado que Copilot, pero esto se debe a que lleva mucho más tiempo en el mercado. Ambos ofrecen autocompletado de código basado en machine learning, lo que los separa es que Tabnine procesa el código línea por línea. Tabnine se encuentra en fase ‘producción’ por lo que ofrece mejor predicción sobre Copilot y tiene mejores análisis predictivo en los diferentes lenguajes de programación.

Diferencias entre algunas herramientas de autocompletado

Tabla comparativa, Copilot de github contra Tabnine. Fuente: http://bitly.ws/pjgC

Figura 1.1: Tabla comparativa, Copilot de github contra Tabnine. Fuente: http://bitly.ws/pjgC

1.2 Conclusión

  • Las aplicaciones con IA no reemplazarán a los desarrolladores, no de momento; pero hay que estar atentos a los cambios tecnológicos. Es muy complicado predecir cuándo se lanzará una herramienta capaz de tener un mejor nivel de comprensión y aprendizaje para poder ponerse a la par que un desarrollador. Pero de lo que podemos estar seguros es que estas herramientas buscan servir como asistentes y ayudantes de los desarrolladores, facilitándonos de esta forma nuestro trabajo.

1.3 Referencias

  • [1] [Tabnine][GitHub Copilot vs. Tabnine]. Recuperado de: http://bitly.ws/pjgC. [Último acceso: marzo 2022].

  • [2] [GitHub Copilot][Your AI pair programmer]. Recuperado de: http://bitly.ws/pjgG. [Último acceso: marzo 2022].

  • [3] [Pit, Catalin][Will artificial intelligence Replace Developers]. Recuperado de: http://bitly.ws/pjgJ. [Último acceso: marzo 2022].

  • [4] [Laborfox][¿Podrá la inteligencia artificial reemplazar a un buen trabajador?]. Recuperado de: http://bitly.ws/pjgL. [Último acceso: marzo 2022].