Un vídeo recién publicado en GNU.org muestra una charla de una hora de duración dada por el defensor del software libre Richard Stallman para la conferencia de código abierto BigBlueBotton (que se celebró en línea el pasado mes de julio). Después de un clip de 14 minutos de un discurso anterior, Stallman responde a las preguntas de la audiencia - y la primera pregunta pedía a Stallman su opinión sobre la AI Copilot [herramienta de programación por pares automatizada] desarrollada para GitHub de Microsoft.
|
etiquetas: richard stallman , github , copilot
Dale 15 o 20 años a la IA que va en velocidad exponencial y a estas utilidades.
Lo que ahora se necesitan 40 coders lo harán 2 con mucha más eficiencia.
La automatización no tiene límite, va a llegar más pronto que tarde a todos los campos, creativos incluidos.
Lo que hacen estos avances tecnológicos es reducir costes o aumentar la productividad (es casi lo mismo), pero según esto vaya pasando, los estándares de calidad del software irán elevándose. Igual que ha sucedido hasta ahora.
Puede que llegue, pero pinta de que va a tardar pues uno de los mayores problemas con los que se encuentra la AI hoy día es el llamado "Lack of Creativity" sigue muy lejos de ser resuelto, que aunque sorprenda a los que no son programadores, cuando picas código es muy importante.
Para mi, como muchos han dicho antes, esta AI de Github es una herramienta fantástica para dar soporte a los programadores para ser más eficiente para incorporar código que resuelve problemas conocidos en tu software.
Programar no es algo que resulte extremadamente difícil de automatizar. Pero es que lo más importante a la hora de desarrollar un buen software es definir bien las especificaciones y eso seguirá siendo trabajo humano. Esto es más bien como llevar el nivel de abstracción un paso más allá.
Puede que llegue, pero pinta de que va a tardar pues uno de los mayores problemas con los que se encuentra la AI hoy día es el llamado "Lack of Creativity" sigue muy lejos de ser resuelto, que aunque sorprenda a los que no son programadores, cuando picas código es muy importante.
Es muy importante para un humano, que tiene que buscar la forma más eficiente de escribir un código, pero una máquina puede optimizar el código en base a unas especificaciones por fuerza bruta. No necesita creatividad para programar código de calidad.
Para mi, como muchos han dicho antes, esta AI de Github es una herramienta fantástica para dar soporte a los programadores para ser más eficiente para incorporar código que resuelve problemas conocidos en tu software.
Eso por ahora.
Debes ser como esos albañiles que ralentizan el trabajo porque cobran por horas.
Stallman ni siquiera está preocupado por eso, sino por las licencias. Github (Microsoft) se las ha pasado por el forro para entrenar a Copilot, este es el problema.
Una máquina podría implementar todas las versiones, con sus tests de eficiencia, y quedarse con la mejor en base a pruebas empíricas.
En eso yo no había caído.
Pero aún le sigue faltando la capacidad para entender el idioma de los product owners y clientes.
Da igual lo rápido que vayas siempre tendrás tareas esperándote, porque hay unos señores creándolas más rápido de lo que tú puedes terminarlas.
Por ejemplo, mi suegro trabajaba en un equipo cuya única tarea era generar las facturas de una compañía de la luz.
Los antivirus son para mantener el comercio, para dar una falsa sensación de seguridad, y para que cada cierto tiempo pienses que tienes que cambiar de ordenador y empezar de cero, cuando lo único que tienes que hacer es cambiar de sistema operativo.
Por los nuevos lenguajes, las nuevas herramientas y el uso de librerías open source.
Antes para hacer un sistema complejo necesitabas un cientos de personas porque tenías que hacer todo desde cero. Ahora usas middleware y librerías y lo hacen entre cuatro.
> ¿El auge de frameworks como React ha reducido la demanda de desarrolladores frontend?
Sí. Lo que pasa es que la demanda de desarrollo de aplicaciones front-end creció mucho más rápido que la disminución de la demanda de programadores por aplicación.
Pero el aumento en la tecnología reduce el número de trabajadores si la demanda del producto se mantiene igual.
Programar no es algo que resulte extremadamente difícil de automatizar. Pero es que lo más importante a la hora de desarrollar un buen software es definir bien las especificaciones y eso seguirá siendo trabajo humano. Esto es más bien como llevar el nivel de abstracción un paso más allá.
Es que de esto se trata programar, a menos que seas un Junior o un Becario, el trabajo de un ingeniero de software es 90% planificar, pensar y alinear con otras personas, y tan solo un 10% picar código. Por eso te decia, que si hacen una AI que programe (en ese contexto) sola, automatizas cualquier otra tarea humana.
Es muy importante para un humano, que tiene que buscar la forma más eficiente de escribir un código, pero una máquina puede optimizar el código en base a unas especificaciones por fuerza bruta. No necesita creatividad para programar código de calidad.
Eso es como pretender decir que, no tiene sentido usar los métodos de encriptación actual porque total, por fuerza bruta se puede desencriptar... Tu idea se aplica bien para una función muy concreta y con relativa complejidad, pero en el mundo real sería, sencillamente inviable (y ya no sería AI), pero quien sabe, quizás con los ordendarores Quanticos se puede hacer.
El repositorio más conocido es github.
Github ha creado un programa de IA llamado Copilot.
Copilot coge todo lo que hay dentro de github, todo lo público (no lo privado), y cuando te ve escribir código busca cosas similares y te lo rellena con lo que asume que es correcto.
Haciendo una comparación, si una biblioteca hiciera lo mismo, al abrir un Word pondrías "en un lugar de la mancha" y su IA te escribiría las primeras páginas del Quijote.
En el caso de copilot es por funcionalidad. Al escribir el código entiende qué es lo que quiero hacer buscando cosas similares en su infinita base de datos y lo pondría
Mucha gente dice que esto lleva a que las máquinas programen solas o casi solas
Sin embargo, ha sido una catástrofe.
www.meneame.net/story/github-copilot-genero-codigo-inseguro-40-casos-d
Copilot coge lo que ya existe y te lo pone. Pero es información pública, nadie ha comprobado que el código sea seguro o que simplemente funcione.
En el ejemplo de la biblioteca los libros están verificados, publicados, revisados. En github hay código de cualquiera almacenado durante ¿décadas? Estrictamente hablando tu puedes subir cualquier cosa a.github, incluso recetas de cocina. Nadie prueba que sea un código que funciona bien o sea seguro
Como la base es mala, el resultado es malo. Ha sido un jarro de agua fría para los que piensan que la IA está a punto de cambiar el universo conocido.
La jornada laboral debería reducirse.
Ya encontraremos otra cosa que hacer. Y con un poco de suerte tendremos una renta basica universal que nos permita vivir sin preocuparnos por cosas tan inutiles como el trabajo.
Bienvenidos a Texas: Come and take it
Al menos que alimenten la IA con código no GPL. De hecho los algoritmos que usan fotos, deberían tener la licencia de las fotos que usan, si son CC BY-SA, los datos de dicho entrenamiento deberían ir con licencia CC BY-SA, porque es un producto derivado, con el código fuente debería ser igual, los parámetros del entrenamiento deberían tener la licencia del código que se mete para entrenar. Eso de "es que este algoritmo lo mezcla todo", vale, pero si yo hago una sesión de música (no soy DJ, pero bueno), no puedo saltarme las licencias por mucho que lo mezcle.
#1: Ya los da:
www.youtube.com/watch?v=9sJUDx7iEJw #que_den_conciertos Richard Stallman - Free software Song
Como dije más arriba la excusa de "es que lo mezcla todo" no me sire, vale, lo mezcla todo, pero si un DJ mezcla muchas canciones los derechos de autor siguen ahí. Otra cosa es que partas de un código GPL, empieces a cambiar cosas, y al final no se parezca al código original, ahí yo sí puedo ver que puedas poner la licencia que quieras, pero tiene que haber un proceso creativo que diferencie el producto derivado del original lo suficiente.
Que prueben a hacer dos entrenamientos a la IA, uno usando sólo código con "izquierdos de copia" (copyleft) y otro sin copyleft, a ver si el resultado final es el mismo o no, a lo mejor con algo simple es igual, pero si es algo complejo...
La IA tambien podria servir para hacer ing inversa o parsers.
#47 No lo habia pensado asi. Sin SL no habria sido posible obtener codigo suficiente para entrenarla.
Sí, a eso es a lo que me refería. Desarrollar una aplicación con un framework permite más complejidad con el mismo esfuerzo. Eso eleva los estándares a la par que hace más accesible desarrollar una web, o una app, personalizada.
Con esto puede pasar lo mismo.
Si un cliente te pide en AWS 1 VPC, 10 subnets, un cognito configurado, con 10 instancias de EC2 y no se cuantos roles, y blablabla. Una vez eso está montado se acabó el proyecto, luego podrá haber una administración y un evolutivo que requerirá menos personal.
Si el código se pica más rápido, o bien acabas antes el proyecto, o bien lo acabas en el mismo tiempo que antes pero estás en más proyectos a la vez.
Y con los proyectos de software pasa más de lo mismo.
No es el mismo caso picar una API desde cero que se necesita en 1 mes, que luego mantenerla, el numero de personas que necesitas no es el mismo, por mucho que el proyecto continue en modo mantenimiento para añadir nuevas funcionalidades, pero con otras urgencias y con el core ya hecho.
Hasta hace relativamente poco la IA era una cosa muy limitada comparada con lo que tenemos ahora, la IA consistía básicamente den algoritmos, es decir programación. Si tu querías que cuando pasara algo el programa hiciera otra cosa pues tenias que programarlo, para cada cosa un algoritmo, eso hacia imposible por ejemplo que un coche condujera solo por la cantidad tan enorme de supuestos para los que tenias que programar una acción.
Pero hace relativamente poco todo eso cambio con la redes neuronales, ahora ya no tenemos que programar cada caso sino que lo que tenemos es que darle ejemplos. Por ejemplo las redes neuronales profundas mas avanzadas son las de reconocimiento de imágenes, imagínate para que reconocieran un gato la cantidad tan bestial de programación que llevarían para que pudieran hacerlo, de frente, de culo, de lado, gatos de diferentes tamaños, de diferentes razas, colores, gatos en foto, gatos dibujados, caricaturas de gatos, conceptos de gatos, etc. Ahora mismo lo único que hacemos es darle a una red neuronal profundas fotos y dibujos de gatos, millones y millones y luego ella sola es capaz de catalogar si algo es un gato o no.
Esas redes neuronales ya nos rodean desde hace tiempo y las hay capaces de dictar sentencias en base a los datos de un juicio, capaces de tomar decisiones medicas o cosas tan banales como mostrarnos que video nos va a mostrar a continuación Tik Tok o que resultados nos muestra Google cuando hacemos una búsqueda. Tambien son las que usa por ejemplo Tesla para su conducción automática.
Entonces llego OpenAI, una empresa, que lo que hizo fue darle millones y millones de textos a una red neuronal, cada vez mas, actualmente estamos en GPT-3 a la que se le han dado millones de textos. El caso es que cuando nos pusimos a probar GPT vimos servía para lo que se pensaba que iba a servir, que era generar textos que parecieran reales y que tuvieran sentido pero llego la sorpresa porque tambien hacia cosas para las que no se pensó que serviría. Asi por ejemplo hemos visto como GPT puede hacer desde operaciones matemáticas, hasta traducciones entre idiomas, pero hubo una cosa que nos llamo la atención, es capaz de generar código, asi pues puedes decirle a GPT que te genere código para hacer un botón rojo en C y el te genera un código en C… » ver todo el comentario
Ya lo ha comentado alguien, el open source ya debería haber quitado puestos de trabajo y no parece que lo haya hecho hablando de forma global. Igual no hay tantas ofertas para programar según qué cosas pero en general yo diría que hay incluso más trabajo de programación que antes.
Yo he hablado únicamente de especificaciones. El resto de tareas son perfectamente automatizables. Otra cosa es cómo de sencillo sea llevarlo a cabo.
Eso es como pretender decir que, no tiene sentido usar los métodos de encriptación actual porque total, por fuerza bruta se puede desencriptar...
Primero, yo no he dicho que no tenga sentido que un humano programe con creatividad y segundo, desencriptar determinados códigos es hoy por hoy computacionalmente inviable mientras que desarrollar una IA que optimice un código por fuerza bruta no lo es. Simplemente hace falta desarrollo técnico al respecto. No es un problema de potencia de cálculo, sino de complejidad del software. Cualquiera puede programar un programa que desencripta un código actual, el problema es que necesitaría escalas temporales absurdas para finalizar. Aquí el problema es hacer un software que escriba otro software, no que lo haga rápido o lento, ya que no veo motivos para que la potencia computacional sea un obstáculo.
Tu idea se aplica bien para una función muy concreta y con relativa complejidad, pero en el mundo real sería, sencillamente inviable (y ya no sería AI), pero quien sabe, quizás con los ordendarores Quanticos se puede hacer.
Yo creo que no es inviable y por eso lo están intentando.
Lo de Marte es para ir a Marte, que es lo que es factible, no para ir a las lunas de Júpiter. Pero yo no estoy hablando de los viajes interplanetarios, estoy hablando del uso de IA para escribir código, que es lo que se está intentando. Son ejemplos que no tienen nada que ver. Los viajes interplanetarios requieren mucho tiempo para llevarse a cabo y sobre todo mucha inversion, mientras que en el caso del que hablamos es básicamente desarrollo teórico lo que se necesita.
Pero bueno tu, disfruta pensando q en 50 años no haran falta programadores
Yo no he dicho eso en ningún momento. Las especificaciones que habrá que introducir en la IA para que implemente el código seguirán siendo necesarias. El trabajo de los programadores no se acabará porque la complejidad del software seguirá creciendo debido a que se facilita su implementación. Esto ya ha pasado con anterioridad, cuando se pasó de código máquina a ensamblador, luego a lenguajes de bajo nivel, luego a los de alto nivel, con enormes librerías y orientación a objetos... y ahora simplemente se añade una capa más de abstracción. Lo que va a incrementarse es la productividad de los programadores, cambiando al mismo tiempo la forma de "programar", si es que a lo que se haga entonces se le sigue llamando programar.
y suerte q no t afecte a ti si eso ocurre (asi aun estas en edad d currar para entonces)
Aunque soy ingeniero informático, no me dedico a ello, ya que la hice como segunda carrera.
Efectivamente ahora no soy programador, soy consultor, pero para llegar a eso he trabajado en todos los puestos inferiores, unos años de programador Jr, después otros tantos de senior, varios años de analista...
Puedes pensar lo que quieras, ya te digo q no tengo ningún problema en demostrar todo lo que digo, de hecho es algo de lo que estoy muy orgulloso porque lo he conseguido gracias a mi trabajo y esfuerzo, porque copiar y pegar requiere saber lo que estás haciendo como te he explicado antes...
Bueno no voy a seguir con esta discusión que no va a ningún sitio, no sé qué experiencia tendrás del sector pero por como hablas sabes muy poco, pero bueno si te hace feliz llevar la razón te la doy: Después de más de 10 años trabajando en el sector del desarrollo no se programar, aunq lo haga casi a diario y me paguen cifras obscenas por hacerlo, no tengo ni idea.