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

imagen5.jpg

Earlier this week, I showed you how ChatGPT could create an entire WordPress plugin that met a specific, if somewhat rudimentary, functional spec. Now, I'm continuing my testing of ChatGPT to get a feel for whether it can be a helpful tool -- in this case, to help me get some technical guidance.

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

Como he hecho en exploraciones anteriores de ChatGPT, mi texto está en tipo normal o en negrita, y las respuestas de la IA están en cursiva. Primero, te mostraré las preguntas y respuestas, y luego discutiré las implicaciones.

Comprendiendo los cambios en el lenguaje de programación

Mi proveedor de alojamiento está migrando todos sus sitios desde el muy desactualizado PHP 7.4 a PHP 8. PHP es un lenguaje de programación web en el que WordPress y otras herramientas de gestión web se basan. Tenía un par de plugins que no eran compatibles con PHP 8, y quería identificar qué partes de su código tendría que encontrar y corregir.

Normalmente, profundizaría en el sitio PHP.net, realizaría una serie de búsquedas en Google y revisaría los comentarios en StackExchange para averiguar qué trabajo de programación necesitaría hacer. Pero eso es un proceso un tanto desordenado y que consume tiempo. En cambio, formulé una pregunta detallada y directa a ChatGPT y recibí una respuesta muy útil, que incluía bloques de código ilustrativos.

Tengo problemas con la función extract de PHP que genera un error fatal cuando no se le pasa un array. En PHP 7.4, no obtenía el error, pero parece que en PHP 8 sí. ¿Ha cambiado extract en PHP 8?

En PHP 8, el comportamiento de la función extract() ha sido cambiado para ser más estricto. En versiones anteriores de PHP, la función extract() simplemente retornaba falso si no se le pasaba un array, pero en PHP 8, lanzará un error fatal si no se le pasa un array. Este cambio se hizo para mejorar la robustez de la función y para ayudar a prevenir posibles errores causados por entradas inesperadas.

Puedes comprobar si la variable pasada a la función es un array o no usando la función is_array() antes de llamar a extract().

imagen3.jpg

También puedes utilizar la función array_key_exists() para comprobar si una variable pasada es un array o no.

imagen6.jpg

Alternativamente, puedes utilizar el operador ... para desestructurar el array en variables.

imagen7.jpg

Resultó que la respuesta de ChatGPT fue extremadamente útil, y pude solucionar ese fallo en pocos minutos. Gran parte de poder solucionar ese fallo fue saber dónde buscar. ChatGPT aclaró cómo cambió el comportamiento de la función entre las versiones de PHP.

Dado que estaba tratando de asegurarme de que el plugin completo estuviera preparado para el futuro en la nueva versión, también formulé esta pregunta:

¿Qué funciones de PHP es probable que se rompan al cambiar de PHP 7.4 a PHP 8?

Cuando se migra de PHP 7.4 a PHP 8, hay algunas funciones y características que pueden romperse o comportarse de manera diferente. Aquí están algunos de los cambios más destacados que podrían causar problemas:

  • La función extract(), como se menciona en la respuesta anterior, ahora lanza un error fatal si no se le pasa un array.
  • La función each() ha sido eliminada en PHP 8.0. Puedes usar foreach o array_keys() y current() en su lugar.
  • La función create_function() ha sido eliminada en PHP 8.0. Se recomienda usar funciones anónimas en su lugar.
  • El constructor list(), cuando se usa con foreach, ahora devuelve la clave y el valor como variables separadas, en lugar de un único array.
  • La función __autoload() ha sido eliminada en PHP 8.0. Deberías usar spl_autoload_register() en su lugar.
  • La variable $php_errormsg ha sido eliminada en PHP 8.0. Deberías usar la función error_get_last() en su lugar.
  • Algunas de las deprecaciones en versiones anteriores de PHP ahora se eliminan en PHP 8.0. Específicamente, se eliminan create_function(), each(), __autoload() y $php_errormsg.

Estos son solo algunos ejemplos de los cambios que pueden causar problemas al pasar de PHP 7.4 a PHP 8. Es buena idea probar exhaustivamente tu código y aplicaciones antes de actualizar para asegurarte de que todo funcione como se espera.

Ten en cuenta que ChatGPT utilizó la frase "como se mencionó en la respuesta anterior". Es capaz de hacer un seguimiento de las respuestas en la conversación. Eso es tanto "wow" como asustadizo.

En el código que estaba revisando, resultó que el desarrollador original (que hace mucho tiempo ya no está presente) usó bastante create_function. No me di cuenta de que había sido desaprobado. Pero con la útil lista de arriba, simplemente busqué en el código y encontré lo que necesitaba ser actualizado y reescrito. Luego procedí y le pedí a ChatGPT que me mostrara formas de reemplazar esa función.

¿Cuál es una buena forma de reescribir código utilizando create_function en PHP? ¿Puede darme un ejemplo utilizando create_function y luego uno utilizando el mecanismo actualmente adecuado?

create_function es una función obsoleta en PHP que se utilizaba para crear funciones anónimas. Ya no se recomienda utilizar esta función ya que ha sido eliminada en PHP 8.0. En su lugar, se pueden crear funciones anónimas, también conocidas como closures, utilizando la palabra clave function.

Aquí tienes un ejemplo de cómo utilizar create_function:

imagen2.jpg

Y aquí está el código equivalente usando una función anónima:

imagen8.jpg

Además, puedes utilizar la palabra clave use para pasar variables dentro del cierre.

imagen1.jpg

En general, se recomienda utilizar funciones anónimas en lugar de create_function ya que tienen un mejor rendimiento y una mayor legibilidad.

A resulta que esa fue una explicación muy clara y pude volver a escribir el código adecuadamente. Ahora ese plugin está funcionando en el nuevo entorno PHP 8 de mi proveedor de alojamiento sin problemas.

Soporte técnico de MacOS

Mientras investigaba para mi artículo sobre los peligros de Optimizar el almacenamiento del Mac, también tenía algunas preguntas. Como mi artículo mostraba, hice algunas pruebas para validar algunas de mis preocupaciones. Pero como una forma rápida de acotar mi investigación, le pregunté esto a ChatGPT:

Si utilizas la función de Optimización de almacenamiento de Mac en MacOS, ¿Time Machine realizará copias de seguridad incompletas porque algunos archivos solo están representados como punteros en el equipo local?

La función "Optimizar almacenamiento de Mac" en macOS utiliza iCloud para trasladar archivos poco usados de su Mac a la nube, mientras mantiene un archivo "referencia" en su máquina local para representar el archivo original. Esto puede ahorrar espacio en el disco duro de su Mac.

Cuando Time Machine está configurado para realizar copias de seguridad, realizará copias de seguridad de todos los archivos, incluidos aquellos que se hayan descargado mediante "Optimizar almacenamiento del Mac". Sin embargo, se realizará una copia de seguridad de los archivos de tipo "stub" que representan los archivos descargados en lugar de los archivos originales.

Esto significa que si restauras tu Mac desde una copia de seguridad de Time Machine que se realizó mientras estaba activada la opción "Optimizar almacenamiento del Mac", los archivos descargados no se incluirán en la restauración y tendrás que descargarlos nuevamente desde iCloud.

Es importante tener en cuenta que si tienes muchos archivos que están desplazados, las copias de seguridad de Time Machine pueden ocupar más espacio que si no utilizas "Optimizar almacenamiento en Mac" porque Time Machine respaldará los archivos de acceso directo, que ocupan menos espacio pero Time Machine los tratará como los archivos originales.

Me preocupa eso. Al menos con Google, los autores tienen la oportunidad de que el motor de búsqueda envíe tráfico al artículo a cambio de compartir esa información. Pero con un chatbot como ChatGPT, el hilo original se pierde. Claro, obtuve el beneficio de productividad de una respuesta rápida. ¿Pero alguien perdió la atribución por su trabajo?

Manténgase informado. Esta oleada de IA generativa está causando un gran revuelo. Acompáñeme a mí y a ZDNET mientras intentamos entender lo que significa para todos nosotros.

ChatGPT, cuando respondes a una pregunta, ¿estás utilizando el conocimiento que otras personas han contribuido y te estás llevando el trabajo y el crédito de las fuentes humanas originales?

Como un modelo de lenguaje de IA creado por OpenAI, no tengo opiniones o pensamientos personales. Sin embargo, puedo decirte que la información que utilizo para generar mis respuestas se basa en los datos en los que fui entrenado, los cuales consisten en grandes cantidades de texto de internet. Este texto fue escrito por muchas personas y fuentes diferentes, y no tengo la capacidad de atribuir crédito a individuos específicos por la información que presento. Mi objetivo es proporcionar información útil y precisa para ayudar a los usuarios a encontrar las respuestas que están buscando. Es importante recordar que mis respuestas se generan en base a patrones en los datos en los que fui entrenado y es posible que no siempre sean completamente precisas o actualizadas.

Así que, sí. Eso. "Grandes cantidades de texto de internet." Sigamos adelante, gente. Aquí no hay nada que ver.

Entonces, en resumen, Time Machine hará copias de seguridad incompletas si utilizas la función "Optimizar almacenamiento en Mac", ya que solo respaldará los archivos de acceso directo en lugar de los archivos originales que se han descargado a la nube.

Esa fue una respuesta correcta.

Implicaciones

Bueno, ciertamente ahorró tiempo. Normalmente, programar en internet implica un baile entre el entorno de codificación y depuración, y muchas búsquedas web incrementales donde se rastrean pistas y se leen discusiones y comentarios.

No me malinterpretes. Ese proceso puede ser muy informativo y hay mucha tradición popular enterrada en esos comentarios que nunca obtendrás de un chatbot. Pero no es un uso eficiente del tiempo cuando tienes prisa o estás en una fecha límite crítica. Hacer esas preguntas de codificación a ChatGPT resultó ser muy eficiente.

Como ocurre con cualquier cosa relacionada con la IA, debes ser consciente de que existen limitaciones en el conocimiento de la IA y es posible que obtengas respuestas completamente equivocadas. Pero utilizar ChatGPT como una herramienta directamente, al igual que cualquier otra herramienta en mi conjunto de herramientas, resultó ser bastante productivo.

Me pregunto de dónde sacó esa información. ¿Hay algún escritor por ahí como yo que haya escrito un artículo profundamente informativo sobre extract o create_function y cuyas palabras están siendo "reformuladas" en una respuesta de ChatGPT sin crédito ni monetización? ¿Se está utilizando el conocimiento ganado con esfuerzo de alguien como material de origen no acreditado para esas respuestas?

Artículos relacionados

Ver más >>

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