Desde el lanzamiento de GitHub Copilot en julio de 2021, han sido muchos los experimentos que múltiples desarrolladores han llevado a cabo con su uso: la idea de tener un asistente que puede desde aliviar de las tareas más rutinarias del desarrollo hasta aportar ideas interesantes basadas en una base de datos enorme puede resultar, en principio, muy atractiva, y plantear implicaciones de todo tipo, desde relacionadas con el uso de código con distintos tipos de licencia, hasta, por supuesto, de la calidad de lo programado.
Ahora, un estudio de Stanford muestra que los desarrolladores que programan utilizando el asistente robótico generan, en promedio, código menos seguro y con más vulnerabilidades que aquellos que escriben código por su cuenta sin asistente alguno. Sin embargo, la impresión subjetiva de esos desarrolladores era la contraria, que su código era que habían generado código más seguro.
¿A qué se debe esta impresión? Simplemente, a una aparente confianza mayor en el producto que genera un asistente robótico. Una sensación subjetiva de confianza en la máquina muy similar a la que observo en muchas personas desde que apareció ChatGPT: la idea de que, como viene de una máquina, lo que diga va a ser correcto. Sensación, por supuesto, completamente errónea, porque el resultado depende únicamente de los datos con los que se alimenta el algoritmo, lo que implica, en muchos casos, conclusiones erróneas. ¿Qué podemos esperar de una aplicación que se alimenta con miles de fuentes en la red? Simplemente, que unas veces nos diga cosas acertadas, y otras no tanto. ¿Qué debemos esperar de un algoritmo que aprende a generar código partiendo de miles de proyectos de código abierto? Que unas veces se base en los buenos, y otras en los no tan buenos.
Estudios anteriores sobre el mismo tema habían apuntado conclusiones similares con muestras, hasta el momento, más reducidas. La calidad del resultado depende de la calidad de los datos de los que se alimenta. Por muy automatizado que esté, sigue estando creado por seres humanos y alimentado con datos generados por seres humanos, con todo lo que ello conlleva. Antes de santificar lo que dice el algoritmo, sea el que sea, tengamos mucho cuidado con lo que hemos creado. Y sobre todo, con los que pretendan directamente darlo por bueno.
This article is also available in English on my Medium page, «Sometimes, your copilot can take you down the wrong road»
Esto es bueno, no me voy a quedar sin trabajo integrando sistemas :-)
Lo normal es que se usen los asistentes, cuando eres novato en programación, o necesitas ayuda, lo mismo que consultas los manuales, los libros, o stackoverflow, que mantiene una puntuación a las respuestas que son valorados por los usuarios. Me permito incluir a esta web como si la hubieran evaluado también (al fin y al cabo puede ser una de las fuentes de los bots)
Lo normal es que cuando eres novato, se consulten estos tipos de webs o asistentes.
Y ahora resulta que hay unos señores que lanzan un paper para ver la seguridad de algo que sabemos de antemano que tiene una calidad beta en el caso de los asistentes o amateur como la web citada.
Vamos al abstract de estos eruditos de Standford, y empezamos a leer, ya que se ponen finos…
«We conduct the first large-scale user study examining how users interact with an AI Code assistant to solve a variety of security related tasks across different programming
languages.»
Y luego leemos
«we recruited 54 participants»
HOSTIAS large-scale con 54 pollos: vaya dominio de la estadística Pero si os sobran esos 54… ya sabíais lo que ibais a publicar…
Joder pues claro, que puede haber resultados erróneos, inseguros y lo que quieran, es una puñetera beta y una web de dominio público donde la gente de buena fe aporta su granito de arena. Y además usada normalmente por aprendices¿Que esperaban?
¿Estamos tontos? ¿Para que hacen un paper de este estilo?¿Para demostrar que? Que es una tool beta o amateur. Si eso ya lo sabemos
¿Y el bot de Standford donde está?
Es más fácil criticar que hacer. por mucho paper basura que lancen.
¿Hace falta ser más claro?
ChatGpt puedes considerarlo beta pero Copilot ya lleva tiempo, está extendido con mucha gente pagando por ello de hecho. Así que creo que el estudio sí que es interesante si bien el problema no deja ser el mismo que copiar/pegar cosas de de Stackoverflow sin revisar.
Igual me van a coser a negativos, que suele decirse…
Para un buen informatico, sus programas, son «sus hijos», y los quiere y los mima como tales… :P
Aprovechar el «trabajo ajeno», psche… pues segun cada cual… pero mi confianza esta en mis dedos.
—>>>
Como vendra de inmediato el Sr Gorki a soltar la suya, me adelanto: no pocas veces me encontre (y me encuentro aun) con quien me dice: «tarari ya lo tiene hecho» (como si me fuera a ahorrar tiempo)
Paso mas rato revisando ese codigo (que, vaya por dios, suele tener siempre algun defecto) que haciendolo yo a mi manera, y no, no soy infalible.
Soy «creador».
Pero como decimos siempre, para gustos… :P
Estoy totalmente de acuerdo que lo que haces tu es lo mejor….
Pero, para aprender un asistente puede ser la bomba, como ejemplo le he preguntado a chatGPT que es un decorador y suelta este resumen
Un decorador es una función que toma otra función como argumento y agrega alguna funcionalidad adicional a la función original, y luego devuelve la función modificada. Los decoradores se usan para modificar el comportamiento de una función sin tener que modificar su código.
Por ejemplo, supongamos que quieres medir el tiempo que tarda una función en ejecutarse. En lugar de modificar la función para incluir el código de medición del tiempo, puedes usar un decorador para agregar esa funcionalidad.
Aquí tienes un ejemplo de cómo se podría usar un decorador para medir el tiempo de ejecución de una función:
import time
def timeit(func):
def wrapper():
start = time.time()
func()
end = time.time()
print(f'Time taken: {end - start} seconds')
return wrapper
@timeit
def my_function():
# some code here
pass
my_function()
En este ejemplo, la función timeit es el decorador. Toma la función my_function como argumento y agrega la funcionalidad de medición del tiempo. La función wrapper es la función modificada que se devuelve.
Cuando llamas a my_function, en realidad estás llamando a wrapper, que es la versión modificada de my_function con la funcionalidad de medición del tiempo agregada.
Los decoradores se usan comúnmente para añadir funcionalidades como la validación de argumentos, la gestión de excepciones y la medición del tiempo de ejecución. Son una herramienta muy útil para modularizar el código y hacerlo más legible y mantenible.
Si estás aprendiendo, me parece que es una ayuda genial, que te ponga ejemplos, que vaya al grano, y que tarde cero coma.
Y es la beta,… si estás aprendiendo algo ( asumiendo que lo hace bien) con un PDF y un IDE, y la curva de aprendizaje se puede reducir una barbaridad
disclaimer: No lo he probado, es un ejemplo ilustrativo, de como ahora chatGPT lo puedes introducir en un workflow para aprender como una tool más
Pero usarlo como copy-paste es un error tremendo. Lo mismo que fusilar programas ajenos sin más.
Si, si… si no tengo nada en contra de los asistentes, ni de lo que me pueda decir ChatGpt…
Quiero creer, que con el tiempo, sera una buena herramienta que sin duda, ayudara a muchos, novicios o no. Es mas, estoy seguro, que llegara un momento, donde la labor de programar sera algo tan «demode», que igual nos avergonzamos de llamarnos «informaticos», y nos buscamos otros apelativos consecuentes. (por fortuna, estoy retirado).
Yo me refiero, al «superEgo» que llevamos dentro, al saber, que «la cosa», la has parido tu y no tu compañero de mesa. Que podriamos decir aquello de «reinventar la rueda», pero es que esa rueda, es la mia.
Y que a partir de ahi, ya te puedes presentar como el «superinformatico» por merito propio, no como otros, que no saben que es un puntero y parece que han inventado la IA… y no son pocos.
Dicho esto… tengo fe en esa IA, pero no mañana ni pasado…
OFFTOPIC:
Por cierto… estamos jodidos… :P
Tribunal Europeo de DDHH mantiene discriminación contra pastafaris
Por supuesto, el trabajo de rellenar lamparas de aceite de cachalote jamás desaparecerá ni podra ser sustituido por las lampras del tal Edison que, como todo el mundo sabe, sufren multitud de inconvenientes….
Desafortunadamente, si, nos vamos a quedar sin trabajo. Soy programador desde hace ya mas de 20 años, mi productividad se ha mutiplicado, calculo que por cinco, con la ayuda de los diversos asistentes que mejoran cada dia a un ritmo sobrehumano y virtualmente ilimitado.
Programar se convertirá en una tarea trivial y totalmente automatizada en unos años, en el proceso se irá reduciendo progresivamente la necesidad de programadores.
Toca reciclarse y negar lo evidente, mirar hacía otro lado y esconder la cabeza bajo la arena no nos solucionará el problema.
No sé por qué estás tan seguro. Yo creo que la IA puede hacer muy liviano el trabajo de programar, pero el diseño del flujo del programa, la integración con otros sistemas y, muy importante aunque denostado, traducir las chorradas que te dice tu cliente en un programa que hace lo que el cliente (aunque él no lo sepa) quería que hiciera, todo eso lo seguirá haciendo un humanillo.
Con todos los respetos a los programadores o los que saben programar, que sé que hay mucho por aquí.
Me da la impresión que si GPT3 lo hace medianamente bien, y en base a la velocidad y mejoras que tienen otras AI cada vez que las actualizan, GPT4 lo hará mucho mejor y le queda muy poco para salir, y en otros 6 u 8 meses tendremos GPT5 y ni te cuento, y eso sin entrar en la evolución de Copilot.
Ya no digo que no harán falta progrmadores si no que va a haber tanta competencia con programadores advenedizos y subirá tanto la productividad con estas ayudas, que pasará como con los ilustradores : si se puede hacer diez veces mas rapido el mismo trabajo que se hacía antes, se pagará diez veces menos, y eso sin contar con la entrada de nueva gente que no sabía programar y que se animará ahora por la facilidad del asunto.
Eso en el corto plazo, en el medio no harán falta programadores, al menos tal como los conocemos ahora.
En palabras del CEO de Open AI : «La IA hará que el precio del trabajo que puede hacerse frente a un ordenador disminuya mucho más rápido que el precio del trabajo que ocurre en el mundo físico. Esto es lo contrario a lo que la mayoría de la gente (incluyéndome a mí) esperaba y tendrá efectos extraños».
Con todo el respeto a los no programadores:
O todo lo contrario. Si no sabes programar seguro que no puedes aprovechar la potencia de esta herramienta. Yo me preocuparía más en saber programar que en que una IA potencialmente me evite parte del trabajo. Lo primero depende de mi, lo segundo es inevitable y diría que bienvenido.
Mientras no creen otro asistente que pueda reemplazar como betatester a coger al azar a dos negaos de la programación y ponerlos a buscar fallos, podemos dormir tranquilos.
… Todo eran risas y alegría hasta que detectaron que el programa fallaba miserablemente con cierto conjunto de datos reportados por los clientes. La cosa no pintaba bien y sobre todo cuando el único programador de la empresa -que hacía meses que no había tocado una línea de código gracias a la alabada IA- le mandaron la tarea de revisar ese millón de líneas que la misma IA había generado.
No me gustaría ni estar en la piel de los gestores de esa empresa ni en la del pobre programador.
Al final lo que te devuelve ChatGPT es como lo que encuentras en internet: a veces excesivamente simple, con fallos, omisiones, y no siempre tiene en cuenta la seguridad.
Para completar la información tiene que haber alguien con conocimiento.
Pero es que esto es igual para cualquier campo y en cualquier situación, esto es IA, no el espíritu Santo.
Como siempre me voy por las ramas, pero es que me encanta ver el árbol en su conjunto.
Nacemos con un programa instalado «de fábrica», que se le llama ADN. Es un asistente de lo más seguro (y, sobre todo «apropiado»), pero tiene un pequeño punto endeble : necesita evolucionar. Así que la reprogramación es el pan de cada uno de sus días.
Luego viene la sociedad adulta y nos injerta un adn social, que puede ser positivo o negativo. Dependiendo precisamente del tipo de asistente evolutivo/regresivo, que nos guste más. O nos disguste, en principio, porque nadie dijo que los cambios importantes deben ser graduales y placenteros.
En fin, que hay mucho libro de autoayuda, que no ayuda nada, así como mucho asistente (puede que coach), real o virtual, tan siliconado él, que no asiste mucho más que un base basketballero en horas bajas.
Pero un buen base, ¡hay que ver lo bien que ayuda! Claro que la canasta, en última instancia va a depender de nosotros…
El tema es que copilot «aprende» asi como vamos corrigiendo sus aportaciones… en poco tiempo veremos si mejora.
Por otra parte, tampoco hay que volverse loco y tener muy claro que hay que revisar cada coma; solo es un asistente.
Las herramientas CASE son de los 90, y esto parece una herramienta CASE glorificada.
https://es.wikipedia.org/wiki/Herramienta_CASE