Vale, así que ChatGPT acaba de depurar mi código. En serio.

1-debugging(1).png

Así que. Programación. Para aquellos que programan para ganarse la vida, es un juego constante de Jenga mental: una línea de código apilada sobre otra, construyendo una torre de código que esperas que sea lo suficientemente robusta como para no derrumbarse.

Pero siempre es así. El código nunca funciona correctamente la primera vez que se ejecuta. Y por lo tanto, una de las habilidades clave para cualquier programador es la depuración, el arte y la ciencia de encontrar por qué el código no se está ejecutando o está haciendo algo inesperado o indeseable.

Es un poco como ser un detective, encontrar pistas, y después descubrir lo que esas pistas están tratando de decirte. Es muy frustrante y muy satisfactorio, a veces al mismo tiempo exactamente.

Hago mucho depuración. No solo porque el código nunca funciona a la primera ejecución. También porque uso la depuración para ver cómo se ejecuta el código y ajustarlo a lo largo del camino.

Pero si bien la depuración efectiva requiere un conjunto especial de habilidades, al final es simplemente programación. Una vez que descubras por qué algún bloque de código no está funcionando, tendrás que averiguar cómo escribir algo que funcione.

Pruebas en el mundo real de ChatGPT

Esta semana, estuve trabajando en tres tareas de programación para el software que mantengo. Dos eran correcciones de errores reportados por los usuarios. Uno era un nuevo fragmento de código para añadir una nueva funcionalidad. Este era un trabajo de programación común y corriente para mí. Formaba parte de mi horario de trabajo habitual.

También:¿Cómo funciona ChatGPT?

Te lo digo porque, hasta ahora, he probado ChatGPT con código de prueba. He creado escenarios para ver qué tan bien funcionaría ChatGPT. Esta vez fue diferente. Estaba intentando hacer un trabajo real y decidí ver si ChatGPT podría ser una herramienta útil para llevar a cabo ese trabajo.

Es una forma diferente de ver ChatGPT. Los escenarios de prueba a menudo son un poco artificiales y simplistas. La programación del mundo real consiste en tomar otro ticket de soporte al cliente de la pila y analizar qué hizo que la experiencia del usuario fuera negativa.

Por tanto, con eso, veamos esas tareas y veamos cómo se desempeñó ChatGPT.

Reescribiendo código de expresiones regulares

En programación, tenemos que encontrar muchos patrones en el texto. Para hacerlo, utilizamos una forma de matemáticas simbólicas llamada expresiones regulares. Llevo décadas escribiendo expresiones regulares y todavía no me gusta hacerlo. Es tedioso, propenso a errores y arcano.

También:Estoy utilizando ChatGPT para ayudarme a corregir código más rápido, pero ¿a qué costo?

Así que cuando me llegó un informe de error diciéndome que una parte de mi código solo permitía números enteros cuando debería permitir dólares y centavos (en otras palabras, algún número de dígitos, posiblemente seguido de un punto y luego, si hay un punto, seguido de otros dos dígitos), supe que tendría que usar una codificación de expresiones regulares.

Dado que encuentro eso tedioso y molesto, decidí pedir ayuda a ChatGPT. Esto es lo que pregunté:

2-regex-q.jpg

Y aquí está la respuesta del IA muy bien presentada (haz clic en el pequeño cuadro para ampliar):

3-regex-a.jpg

Inserté el código de ChatGPT en mi función, y funcionó. En lugar de pasar 2-4 horas frustrado, solo tardé unos cinco minutos en crear la indicación y obtener una respuesta de ChatGPT.

Reformatear un array

A continuación, estaba reformateando un array. Me gusta programar con arrays, pero también es tedioso. Así que una vez más probé ChatGPT. Un completo fracaso.

También:Cómo hacer que ChatGPT proporcione fuentes y citas

Para cuando terminé, probablemente le proporcioné diez

Después de cerca de una hora de esto, me di por vencido y volví a mi técnica habitual de buscar en Github y StackExchange para ver si había algún ejemplo de lo que estaba intentando hacer, y luego escribir mi propio código.

Hasta ahora, eso es una victoria y una derrota para la experiencia de ChatGPT. Pero ahora iba a aumentar el desafío.

En realidad, encontrar el error en mi código

Vale, esto siguiente va a ser difícil de explicar. Pero piensa en el hecho de que si ya es difícil explicártelo a ti (supuestamente un humano y no uno de los 50 o más bots que únicamente copian y republican mi trabajo en sitios web sospechosos y llenos de spam), es aún más complicado explicárselo a una IA.

Estaba escribiendo nuevo código. Tenía una función que tomaba dos parámetros y una declaración de llamada que envió dos parámetros a mi código. Las funciones son cajitas negras pequeñas que realizan funciones muy específicas y se llaman (se les pide que hagan su magia) desde líneas de código que se ejecutan en otros lugares del programa.

El problema era que seguía recibiendo un mensaje de error.

La parte destacada de ese mensaje es donde dice "1 pasado" en un punto y "exactamente 2 esperados" en otro. Miré la declaración de llamada y la definición de la función y había dos parámetros en ambos lugares.

También: Cómo usar ChatGPT para resumir un libro, artículo o trabajo de investigación

¿P-por amor a todos los santos-F?

Después de unos quince minutos de profunda frustración, decidí recurrir a la IA para ver si podía ayudar. Así que, escribí la siguiente indicación:

4-sin_título.jpg

Le mostré la línea de código que hizo la llamada, le mostré la propia función y le mostré el controlador, un pequeño fragmento de código que despacha la función llamada desde un gancho en mi programa principal.

En cuestión de segundos, ChatGPT respondió con esto (haz clic en el cuadrito para ampliar):

5-error-with-apply-filters-in-wordpress.jpg

Tal como sugirió, actualicé el cuarto parámetro de la función add_filter() a 2, ¡y funcionó!

ChatGPT tomó segmentos de código, analizó esos segmentos y me proporcionó un diagnóstico. Para ser claro, para poder hacer su recomendación, necesitaba entender los detalles internos de cómo WordPress maneja los hooks (eso es lo que hace la función add_filter) y cómo esa funcionalidad se traduce en el comportamiento de las líneas de código que llaman y ejecutan.

También: Le pedí a ChatGPT que escribiera un plugin de WordPress que necesitaba. Lo hizo en menos de 5 minutos

Tengo que marcar eso como increíble, sin lugar a dudas, increíblemente "viviendo en el futuro".

¿Qué significa todo esto?

Como mencioné anteriormente, la depuración es un poco de arte y un poco de ciencia. La mayoría de los buenos entornos de desarrollo incluyen herramientas de depuración poderosas que te permiten analizar el flujo de datos a través del programa mientras se ejecuta, y esto ayuda cuando intentas encontrar errores.

También: Estos expertos están compitiendo para proteger la IA de los hackers

Pero cuando estás atascado, a menudo es difícil obtener ayuda. Esto se debe a que incluso un colega cercano puede que no esté familiarizado con el alcance completo del código que estás depurando. El programa en el que estoy trabajando consta de 153.259 líneas de código distribuidas en 563 archivos, y en comparación con otros programas, es relativamente pequeño.

Así que, si hubiera querido pedir ayuda a un colega, quizás tendría que haber construido una solicitud casi idénticamente a cómo se la envié a ChatGPT.

Pero aquí hay algo que considerar: recordé incluir la línea del gestor incluso aunque no me di cuenta de que ahí estaba el error. Como prueba, también intenté pedirle a ChatGPT que diagnosticara mi problema en un mensaje donde no incluí la línea del gestor y no pudo ayudar. Así que hay limitaciones muy definidas en lo que ChatGPT puede hacer para depurar en este momento, en 2023.

También: Los mejores chatbots de inteligencia artificial para probar

En esencia, tienes que saber cómo hacer las preguntas correctas de la manera correcta, y esas preguntas deben ser lo suficientemente concisas para que ChatGPT pueda manejar todo en una sola consulta. Eso es algo que requiere conocimientos y experiencia en programación para saber cómo hacerlo.

¿Podría haber solucionado el error por mí mismo? Por supuesto. Nunca he tenido un error que no pudiera arreglar. Pero si hubiera llevado dos horas o dos días (además de pizza, palabrotas y mucha cafeína) mientras soportaba muchas interrupciones, eso es algo que no sé. Puedo decirte que ChatGPT lo arregló en minutos, ahorrándome un montón de tiempo y frustración.

Enfrentándose al futuro (posiblemente distópico)

Veo un futuro muy interesante, donde será posible alimentar a ChatGPT con las 153 mil líneas de código y pedirle que te diga qué corregir. Microsoft (que es dueño de Github) ya está trabajando en una herramienta "copilot" para Github que ayuda a los programadores a construir código. Microsoft también ha invertido miles de millones de dólares en OpenAI, los creadores de ChatGPT.

Aunque el servicio puede estar limitado a los propios entornos de desarrollo de Microsoft, puedo imaginar un futuro en el que la IA tenga acceso a todo el código en Github, y por lo tanto a todo el código en cualquier proyecto que publiques en Github.

También: Pedí a ChatGPT que escribiera un episodio corto de Star Trek. Y de hecho lo logró.

Dado lo bien que ChatGPT identificó mi error a partir del código que proporcioné, definitivamente puedo ver un futuro en el que los programadores puedan simplemente preguntar a ChatGPT (o a un equivalente de Microsoft) para encontrar y solucionar fallos en proyectos enteros.

Y aquí es donde llevo esta conversación a un lugar muy oscuro.

Imagina que puedes pedirle a ChatGPT que examine tu repositorio en Github para un proyecto dado y que encuentre y solucione errores. Una forma podría ser que te presente cada error que encuentre para que lo apruebes y así puedas aplicar las correcciones.

Pero, ¿qué pasa con la situación en la que le pides a ChatGPT que arregle simplemente los errores y lo dejas hacerlo sin molestarte en revisar todo el código tú mismo? ¿Podría incrustar algo peligroso en tu código?

También: Bard vs. ChatGPT: ¿Puede Bard ayudarte a programar?

¿Y qué pasaría en el caso en el que una inteligencia artificial increíblemente capaz tenga acceso a casi todo el código del mundo en los repositorios de Github? ¿Qué podría esconder en todo ese código? ¿Qué malicioso mal podría hacer esa inteligencia artificial a la infraestructura del mundo si puede acceder a todo nuestro código?

Juguemos a un juego de pensamiento simple. ¿Qué pasaría si la IA recibiera la primera regla de Asimov como una instrucción clave? Esa es la regla de "un robot no debe dañar a un ser humano, ni permitir, por inacción, que un ser humano sufra daño". ¿No podría decidir que toda nuestra infraestructura nos está causando daño? Al tener acceso a todo nuestro código, simplemente podría decidir salvarnos de nosotros mismos insertando puertas traseras que le permitieran, por ejemplo, apagar la red eléctrica, inmovilizar aviones y colapsar las autopistas.

Estoy completamente consciente de que el escenario anterior es hiperbólico y alarmista. Pero también es posible. Después de todo, aunque los programadores revisen su código en Github, no es posible para nadie revisar todas las líneas en todo su código.

También: Cómo utilizar ChatGPT para escribir fórmulas en Excel

En cuanto a mí, voy a intentar no pensar demasiado en eso. No quiero pasar el resto de la década de 2020 en posición fetal balanceándome de un lado a otro en el suelo. En su lugar, usaré ChatGPT ocasionalmente para ayudarme a escribir y depurar pequeñas rutinas, mantendré la cabeza baja y esperaré que los futuros IA no nos maten a todos en su esfuerzo por "no permitir que un humano sufra algún daño".

¿Encuentras útil o aterrador el hecho de que ChatGPT pueda depurar? ¿Crees que los IA nos asesinarán mientras dormimos, o crees que seremos testigos de nuestro destino con los ojos bien abiertos? ¿O eres como yo, que intentará no pensar demasiado en ello porque te hace daño la cabeza? Háblame en los comentarios de abajo. Mientras todavía puedas.

Artículos relacionados

Ver más >>

¡Desbloquea el poder de la IA con HIX.AI!