ChatGPT caso de uso: Portear Javascript a Java
Últimamente, he estado escuchando hablar de ChatGPT y la inteligencia artificial. Mucha gente parece confundida acerca de para qué sirve ChatGPT. Me recuerda cuando explotó el tema de los NFTs y escuché propuestas de uso que ya se cubrían con otras tecnologías.
Un ejemplo sencillo en el que estoy utilizando ChatGPT es como Ghostwriter para mis posts. Así evito tener que detenerme a corregir ortografía, buscar sinónimos y evitar las muletillas que cualquier humano usa a menudo.
Sin embargo, también se puede utilizar ChatGPT para el desarrollo de software con otro enfoque. Algo parecido a lo que hacía cuando estuve utilizando la beta de GitHub CoPilot.
Me acaban de dar luz verde para usar Github Copilot , me recordó al piloto automático de los traileros en los Simpson. pic.twitter.com/InOnl6cnGM
— Israel Perales (@ripper2hl) November 2, 2021
¿Por qué?
Se me ocurrió utilizar ChatGPT para transformar una librería para generar la CURP (clave mexicana) que tengo en NPM, generar esta clave es una tarea muy tediosa y rutinaria en cada empresa a la que voy, entonces podemos ahorrar mucho tiempo y recursos al implementarla.
Tenía pendiente desde el 11 de abril del 2021, cuando cree el repositorio, hacer el port de NPM a Java, pero por pereza no lo había hecho.
Intenté hacerlo con GitHub CoPilot y no tuve buenos resultados.
¿Cómo?
El primer intento fue copiar todo el código JavaScript y pedirle a ChatGPT que lo transformara, pero obviamente no pudo hacerlo y tuve que cambiar de estrategia.
El siguiente intento fue ir pasando función por función para que convirtiera en métodos de Java.
Esto funcionó, pero hay tener una idea abstracta de la estructura que queremos lograr para la librería y ChatGPT hace el trabajo rutinario de transformación.
Una chulada como decimos acá en el Norte de México.
En algunos casos, ChatGPT generó código que a simple vista parecía funcionar, pero al momento de ejecutar los tests comprobamos que generaba salidas incorrectas. Es en este momento cuando las pruebas unitarias muestran su importancia y cómo son necesarias para asegurar el correcto funcionamiento de la librería.
En otras ocasiones, el código simplemente no compilaba y, por más que tratábamos de ayudar a ChatGPT a corregirlo, no lo hacía. En esos casos, tuvimos que hacer uso de nuestros conocimientos de programación para solucionar el problema.
El port de la librería a Java fue todo un éxito y espero que sea mi primera librería publicada en los repositorios de Maven. Aquí dejo el enlace al código de Java.
https://github.com/ripper2hl/curp-java
¡Cuidado!
Recomiendo utilizar esta herramienta solo para proyectos en los que seas el propietario, ya que enviar tu código a terceros, especialmente si trabajas para una empresa, podría traerte problemas.
Si estás muy emocionado y quieres implementar ChatGPT en tu trabajo, habla con tus superiores, explica las ventajas, desventajas y riesgos.
Conclusión
Sin duda, el desarrollo de software nunca volverá a ser lo mismo, al igual que cualquier trabajo relacionado con la escritura. Esto ocurrirá tanto a corto como a largo plazo. No sé qué otras industrias se verán afectadas por esto, pero es evidente que lo estarán tanto de manera positiva como negativa.
Es el futuro del desarrollo de software, no el clavo final del ataúd.
¿Estuviste toda la noche programando con #ChatGPT ? pic.twitter.com/qnJRAvmvbQ
— Israel Perales (@ripper2hl) December 11, 2022