Hace 8 años | Por mr_b a news.mit.edu
Publicado hace 8 años por mr_b a news.mit.edu

Investigadores del MIT han desarrollado un sistema de aprendizaje automático que es capaz de reparar programas de ordenador de código abierto y aprender sus propiedades generales para arreglar cualquier otro conjunto diferente de programas. Los investigadores probaron su sistema sobre errores en aplicaciones reales que luego fueron compiladas para evaluar la reparación automática. Donde los sistemas anteriores eran capaces de reparar uno o dos errores, este sistema reparó entre quince y dieciocho, dependiendo de si […].

Comentarios

damk3r

#1 O se lo venderán a Oracle.

dudo

#7 O venderan exploits 0 days a porrón

c

#1 Y si la reparación automática produce otros errores... no lo veo claro...

D

#15 no es irrelevante. Si es un SaaS, el sistema puede aprender de una base de código muchísimo mas amplia (usa técnicas de ML, no es un algoritmo simple que lo echas a andar y funciona sin necesidad de ajustes). Además, es más fácil extender las mejoras en un tiempo menor a todos los "clientes".

ioxoi

#52 me refería de se el punto de vista del usuario.
Un modelo que me gusta es el libre como servicio, usando tus datos para mejorar el servicio y el que quiera mantener cerrado su código que pase por caja 2 veces.

D

#3

Pero a picar código al gallinero, eh

Mister_Lala

#36 lol Buenísimo.

D

Soy MUY escéptico. Me da a mí que esa detección y reparación se refiere a bugs triviales, de los que no afectan a las intenciones del programador. Sí, el maldito "contexto" de uso. Será como los subtítulos automáticos de YouTube pero para código.

D

#20 Esos subtitulos son muy malos, al menos le tengo más fe a la detección automática de errores, hay muchas cosas muy, muy, muy habituales como no comprobar el tamaño de la entrada/buffer.

Ya había leído algún artículo de detección automática de errores y sacaban un montón.

DonMelocoton

Cada día hace falta menos trabajo humano, si los medios de producción perteneciesen a la sociedad y no a propietarios privados que hermoso y cercano sería el futuro.

Attitude

#11 Al final, los cerdos acaban andando sobre dos patas... Anarquía.

cc #9

D

#11 estupideces por doquier

m

#39: Gracias por la detallada argumentación.

thingoldedoriath

#11 El comunismo del siglo pasado "fracasó" por más causas y más importantes que el "burocratismo y el mecanicismo". El totalitarismo también influyó...

p

#26 Sea un conjunto de sociedades ideales, esféricas y sin rozamiento [...]

Mister_Lala

#43 Si no me voy a poder rozar con nadie, no quiero esa sociedad ideal.

D

#26 ¿A que no haya recursos para todo el mundo lo llamas progreso? Los liberales sois seres amorales, indolentes ante el sufrimiento humano.

m

#46 jamás en la historia de la humanidad ha habido el nivel ni la calidad de vida de ahora. Cada vez hay más personas en el mundo y menos que pasan necesidad, hace un par de siglos la vida era un infierno para un porcentaje altísimo y ahora una parte de la población se preocupa por los derechos de los animales. El cambio es brutal pero aún así siempre es poco.

Mister_Lala

#57 Yo eso lo digo a veces, que un ciudadano medio de un país desarrollado vive mejor que un rey de la edad media, en general.

- En sanidad, podías morir de una infección que hoy se trata con antibióticos sin apenas molestias. O imagina lo que era un dolor de muelas en aquella época. Y de trasplantes y operaciones, ni hablemos.

- Puedes viajar en pocas horas a la otra punta del mundo, y por un precio ridículo en comparación a lo que le costaba en la edad media hacer unos cientos de kilómetros.

- Puedes comunicarte al instante con cualquier persona, incluso mandarle documentos, fotos, vídeos. Igualmente, por un precio ridículo en comparación.

- El ocio tampoco tiene parangón, por muy gracioso que fuese el bufón de palacio: televisión, cine, mp3s, videoconsolas, espectáculos, restaurantes exóticos,...

- Vas al super y tienes una variedad inimaginable para un rey de la edad media. Si incluso tienes frutas de otros continentes. Vinos de todas partes, whisky, ron, vodka, tequila, ginebra, cervezas de todo tipo, etc.

- Duermes en tu colchón viscolástico, tapado por tu edredón nórdico de plumas, tienes calefacción y aire acondicionado, etc. El hogar es mucho más confortable.

Y bueno, así podría seguir toda la noche.

D

#26 Para mi progreso es tener abundancia de recursos. Pienso que la respuesta a la pregunta: quieres dejar de tener nuevas tecnologías durante dos año pero trabajar una hora menos al dia debería ser siempre sí. Crear dinero para las empresas de forma exponencial creando guerras y manteniendo en la pobreza a millones de personas es lo más alejado a progreso que puedo imaginar.

D

#9 Cada día hace falta menos trabajo humano... y cada día los humanos piden productos más trabajados.
Al final estamos en un constante equilibrio, que cuando se automatiza algo 100 veces, de repente resulta que todo el mundo quiere 100 veces más de ello.

m

Para que una IA pueda corregir errores más allá de los sintácticos y de las incorrecciones en variables lógicas necesitamos una IA casi humana.
Esto podrá corregir inconsistencias en variables y en el propio proceso del programa, pero no podrá resolver (por ahora) problemas más complejos. El sistema se basa en analizar el código y cómo se ejecuta, pero no infiere nada de por qué se necesita el código escrito, o cuál es el objetivo del programa.
Si la tecnología puede mejorar cualquier proceso productivo bienvenida sea, es una tontería trabajar en algo si una máquina lo puede hacer mejor y más rápido.

Mister_Lala

#27 Pues imagina si esa IA tiene además que adivinar donde van a pulsar los usuarios y en qué orden lol

rcastrovexler

El fin de los programadores humanos!

Jakeukalane

#2 te compenso los votos negativos injustificados. (no estoy de acuerdo con lo que has dicho).

Nova6K0

Me parece bien. No en vano sobre todo cuando se empieza a programar (por poner en lenguaje C), se lía uno, por ejemplo, con las declaraciones y las llamadas, y a veces en la llamada a la función pasa esto:

Llamada a función erronea:

funcion()

Llamada a función correcta:

funcion();

También en las definiciones de variables:

Erroneo:

int A = 25

Correcto:

int A = 25;

Ese punto y coma que no poco se olvida, como digo al principio. También incluso en programas muy complejos, se puede pasar algo por alto.

En todo caso, los compiladores actuales ayudan bastante en estos temas.

Salu2

D

#14 Espera, lo dices en serio? cualquier compilador moderno te avisa de los errores de sintaxis, el articulo se refiere mas a la corrección de errores de lógica

Mister_Lala

#56 Es que las herramientas de desarrollo te avisan en tiempo real. Ni siquiera tienes que compilar. Joder, no sé que haría yo sin el intellisense, si tuviera que volver a programar como en los 90. Me pego un tiro. El amigo/aNova6K0Nova6K0 ha programado poco.

D

#70 Los IDE's modernos son una auténtica gozada, el autocompletado, insertar código, formatear automaticamente, renombrar variables en todo el proyecto, etc. Sin estas herramientas programar sería un auténtico dolor de huevos.

Mister_Lala

#74 Que hagan el sangrado automáticamente es de las cosas que más agradezco. Era un calvario tener que tocar código de otra persona con un estilo de codificación diferente, o que por vagancia no sangraba bien las cosas. A ver cuándo sacan algo así que formatee automáticamente las sentencias sql de la peña.

p

Esto ya había salido en Slashdot hace por lo menos dos meses, y al final era sensacionalismo puro.

Corrige tipos de errores muy específicos y no precisamente del tipo más útil para alguien con un mínimo de experiencia, para lo cual se requiere inteligencia y que la máquina sepa qué se quiere que haga el código, lo cual va a ser que no.

Como siempre, el titular da a entender mucho más de lo que es en realidad.

dankz

He leido el articulo con interés y es muy interesante pero tampoco para echar cohetes. Una cosa son los errores sintácticos difíciles de ver y otro son los errores semánticos. O sea que el software haga algo distinto a lo que se supone esta indicado en las especificaciones, y eso sigue estando muy lejos de poder resolverse automáticamente. Pero, pero, pero. Esto es solo el primer paso las IA están dando pasos muy interesantes y los darán aún mas en las próximas décadas. Y los procesos automáticos se extenderán poco a poco con el tiempo.

Y esto puede ser positivo o negativo según como se afronten. Lo ideal es que nos libremos del coñazo de las tareas repetitivas y que lo hagan las maquinas. Que en cierta forma es la evolución que se ha realizado con el tiempo, ya muy poca gente programa en lenguaje maquina salvo para optimizaciones muy puntuales en sitios muy específicos. Se recurren cada vez más a lenguajes de muy alto nivel, y cada vez los serán de aún mayor nivel. Y el hecho que se pierdan horas de trabajo en no tener que depurar es positivo ya que se trata de un uso más eficiente de las horas/programador. PERO también puede implicar un riesgo de desempleo si deciden que ya no hacen falta tantos trabajadores. Cada cosa tiene su contraprestación.

Y esto de las automatizaciones se puede extender perfectamente a otros trabajos . Se habla de que en un futuro muy proximo ( de pocas décadas) habrán sistemas IA eficientes para trabajos como arquitectura, abogacía, ... Hay un riesgo latente de desempleo en sectores especializados. Tanto que que algunos comentan que pueden perderse hasta el 40% de los empleos en 2050.

Y no, no soy un neoludita. La cuestión es como la sociedad afrontará esa crisis.

DonMelocoton

Adepto de la mano invisible detected.

D

#35 La mayoria de la gente que "diseña" con las herramientas que dices u otras nunca se hubiesen metido a programadores si hubiese hecho falta para llegar al mismo objetivo. Y pocos programadores conozco que quieran o disfruten realizando tareas de diseño. Por lo que no creo que se acabe prescindiendo de programadores, mas bien que los programadores "circunstanciales" se apartaran de ese mundo y sentiran cada vez menos la tediosa y desagradable carga de tener que aprender a programar para llegar a su objetivo. Y muy bien me parece.

Ademas, la complejidad del software tambien ha ido aumentando y con ella los puestos de trabajo, especialidades, exigencias del publico, etc.

El dia en que no haya nada que mejorar desde el punto de vista tecnico en niguna aplicacion seguramente sera como tu dices, ya no quedaran programadores y todos seran diseñadores, pero ese dia esta muy lejos ya que el software no tiene nada de perfecto, y mucho menos estable.

rojo_separatista

#41, claro, hablo a medio plazo, lo que serían unos 50 años a mi entender y no quiero decir que desaparezcan todos los trabajadores, pero si que la onmensa mayoría, hablo de todos esos que se dedican a tascas tediosas como el desarrollo de aplicaciones de gestión y bases de datos o páginas web.

Pero fíjate que esta es la tendencia que se viene desarrollando en los lenguajes de programación, el paradigma es cada vez a más alto nivel, se empezó por programar con tarjetas perforadas y ahora con los lenguajes son orientados a objetos la productividad se ha incrementado exponencialmente, por eso digo que el futuro será programar utilizando el lenguaje natural.

k

#60 ahora los lenguajes son orientados a objetos... Me mondo... La orientación a objetos probablemente sea más vieja que tú. Comentarios cuñado everywhere.

rojo_separatista

#63, y qué? La orientación a objetos es el paradigma de programación que se utiliza hoy en día en la inmensa mayoría de lenguajes de programación, que tiene esto que ver con que apareciese hace varias décadas si solo era para ilustrar que la tendencia es ir hacia lenguajes a cada vez más alto nivel. Creo que el que se ha pasado de cuñado eres tu.

Mister_Lala

#64 Bueno, yo casi diría que hoy en día el paradigma es la programación orientado a eventos. Cada vez la programación es más asíncrona. Incluso en cualquier aplicación de gestión, el programador dedica más tiempo a gestionar eventos que a crear objetos. Aparte de que hay lenguajes exitosos como javascript, que decir que son orientados a objetos es un chiste de mal gusto.

rojo_separatista

#68, y la programación orientada a eventos se construye sobre la orientación a objetos.

D

#38 Pues un programador de programas que programan automáticamente cms's y nadie mas

rojo_separatista

De hecho pienso que el trabajo de programador va a estar comprometido a medio plazo como lo va a estar el de camionero o taxista a corto. Se utilizará el lenguaje natural o mediante una sencilla interfaz gráfica para decirle a la IA que programa queremos y ella lo hará. Ya está pasando un poco con los servicios de "crea tu propia página web" o los gestores de contenidos.

a

#10 quien crees que desarrolla esas interfaces gráficas, esos servicios o los cms?

D

#19 Harán falta 20 programadores de cms en lugar de 300 de webs.

elzahr

#21 Eso no es así ya hoy en día?

D

#21 Ya se inventarán mierda nueva que crear para tener a todos ocupados 8 horas al día. Es lo que hacemos ahora, creamos mierda que no necesitamos para poder tener a la gente trabajando 8 horas para que puedan comprar esa mierda.

rojo_separatista

#19, los programadores, pero esto no rebate lo que yo digo, desarrollas una interface una vez para que luego los demás puedan desarrollar las suyas.

D

#23 Es un poco como decir que elige tu propia aventura reemplaza a juego de tronos

rojo_separatista

#34, no hablo del presente. Ni de que no se necesitaran programadores. Pero donde hacian falta 100, bastará con 10.

P

#10 Al menos por mi experiencia con los servicios de "Crea tu propia web" o los CMS, te diré que en cuanto quieres personalizar mínimamente algo ya tienes que meterle mano.

p

#22 Este tipo de ideas no para de salir una y otra vez y chocan con la realidad fundamental de que no hay ningún sistema realmente inteligente por ningún sitio.
Hay gente que lee "IA" y se flipa porque no tiene ni idea de lo que está hablando y piensa que esos programas son algo más que algoritmos de búsqueda muy sofisticados, pero tan estúpidos como siempre. Lo de esta noticia es un ejemplo más. Habrá gente que crea (sin ningún motivo) que es un sistema que resuelve cualquier tipo de bugs, incluídos los de lógica.

P

#40 Si, cualquiera que se meta un poco en sistemas automatizados de ese tipo sabrá que están bastante limitados y cuando te sales un poco de los parámetros necesitas modificar código tu, hasta el punto de que como la personalización sea muy bestia a veces merece más la pena hacerlo desde 0. Que en algún futuro, si se consigue crear IA "real" igual se llega a eso, pero de momento...

Mister_Lala

#40 Es así. La gente piensa que el programa de ajedrez piensa. Ni siquiera se les pasa por la cabeza que realmente es una búsqueda en un conjunto de estados. Y se flipan cuando empiezan a escribir algo en google y la página "adivina" lo que está escribiendo. No se dan cuenta de que si te hace esa sugerencia es porque ya lo has buscado antes, o porque en la última semana han buscado eso mismo chorrocientas personas y es muy probable que tú también busques lo mismo. En fin, son los mismos que te decían que los pisos nunca bajaban.

tusitala

#10 Yo si creo que, a largo plazo, cuando se llegue al punto en que puedas hablar a la máquina como si fuera humana se necesitarán menos programadores. Aunque es verdad que estas herramientas no programan por si solas, un tractor no ara por si solo, pero hace el trabajo de 50 personas.

Mister_Lala

#10 Como programador, alguna vez he dado un presupuesto para una web pequeñita (hablamos de unos 400 euros), y el cliente me ha espetado, todo indignado, que "en 1&1 la puede hacer por 100 euros". Mi respuesta ha sido tajante: "ah, bueno, pues háztela tú entonces con 1&1". Estos casos siempre son iguales, que al final, ni se la hago yo, ni se la hace él porque no tiene ni puta idea, ni se la hace nadie porque no se quiere gastar lo que vale. *

Precisamente hoy he estado instalando una aplicación web ¡para una tienda de informática! ¿Sabes por qué? Pues porque los de esta tienda no saben programar, y necesitan una base de datos, y una business intelligence, y unos procesos. Y eso no te lo da una web de juguete como es 1&1, donde tu página es poco más que un documento word.

A lo analistas/programadores a veces nos cuesta captar lo que el cliente quiere. Se debe a que el cliente no sabe expresar con claridad lo que busca, o no tiene claro lo que necesita, o ni siquiera sabe lo que quiere. Imagínalos delante de una aplicación que mediante lenguaje natural escriba el código. Me parto y me mondo.

* Y que salga la primera en google cuando escriban... lol

D

#10 El trabajo de programador va a estar comprometido... como lo lleva estando el de escritor desde hace unos miles de años lol
Vamos, el día que puedas "decirle a la IA que programa queremos y ella lo hará", será el mismo día en que esa IA exigirá ser reconocida como ser humano.

rojo_separatista

#76, y te crees que hace falta mucho para eso?

Attitude

Primero comento en contexto:

Gran noticia para los desarrolladores.

Y ahora el :

3 de las últimas 5 noticias en portada están en inglés.

¡Viva la Ley General de Educación, la LODE, la LOGSE, la LOCE, la LOE y la LOMCE que seguro han tenido algo que ver en esto!

roll

D

#13 Y la EGB.

D

Skynet liked this.

borteixo

#79 Claro que se hacen cosas interesantes con IA, pero principalmente los medios de comunicación vienen vendiendo la moto con la inteligencia artificial desde hace décadas... y hasta el momento no ha representado ningún tipo de revolución.

D

La cosa funciona como sigue. Un algoritmo tiene un numero finito de parametros y de posibles valores. Se estudia la cobertura del algoritmo y se prueban los parametros "limite" que hacen que la ejecucion vaya por una u otra rama. Se detecta un nullpointer exception. Se pone un "if (loquesea != null) else " Ya tenemos un algoritmo que "repara" errores.

Es una broma, por supuesto.O no....

Mister_Lala

#47 Lo que viene siendo automatizar los tests de calidad para cada función/clase que ya permiten algunos entornos de desarrollo. Pero aquí la gente se ha flipado pensando que vas a hablar por el micro diciendo "quiero una aplicación para hackear el correo de mi novia", y que se va a escribir sola. lol

borteixo

Otro gran éxito de la IA que tendrá impacto en un futuro en nuestra sociedad y lo cambiará todo.
Llevamos 30 años escuchándolos.

D

#37 La IA está teniendo impacto en nuestra sociedad, lo que pasa es que la "IA" de hace un año es el cacho de software aburrido del año próximo.
Imagina que le pusieses Siri, o simplemente Google, a alguien hace 30 años, ¿no los llamaría "IA"?

B

Supongo que este software sera un software libre de errores... Jejeje

sauron34_1

Bueno, esto será una herramienta para los propios trabajadores, no para sustituir a los programadores. Al fin y al cabo, cosas como los tests automáticos llevan haciéndose desde hace tiempo. Llegará un momento que la detección automática de errores será otra fase del desarrollo más.

a

Cuanto sensacionalismo, luego lees la noticia y resulta que han analizado 700 y pico proyectos en github, analizando errores reportados y los parches que solucionan esos errores. Vamos que para lo único que puede servir es para detectar patrones comunes de error y más que para arreglarlos automaticamente sería util para mostrar avisos de posibles errores si detecta esos patrones o para inferir algunas prácticas que pueden inducir a errores y sacar algún pequeño catalogo de buenas prácticas u olores a evitar.

Hay cientos de herramientas y proyectos de investigación en la misma linea, pero en general las herramientas de analisis estatico como esta tienen un uso bastante limitado, los bugs importantes son los que tienen que ver con la lógica del problema o incluso con no resolver el problema adecuado.

D

Mola!

HaploG

Ahora sólo queda que lo sumen a una buena IA y ya tenemos una singularidad que acabaría con todo lo que conocemos.

LeDYoM

Puede arreglarse sus propios bugs?

Hackintosh

Skynet y tal en 3,2,1... tinfoil

D

Seran entonces todas las webs triple A?

D

Pero bueno, ¿esta gente no ha aprendido nada de Terminaitor?

D

#25 Si algo hay que aprender de Terminator, es que la ficción vende.
Para todo lo demás, está el Mundo Realtm.