Leo en Business 2.0 este artículo, «Microsoft co-founder’s next great adventure«, sobre la última creación de Charles Simonyi, el húngaro que tras trabajar con genios como Alan Kay, Butler Lampson y Bob Metcalfe en Xerox PARC, fue contratado por Microsoft y se convirtió en el artífice de productos como Word y Excel.
La idea de Simonyi, creador ahora de la compañía Intentional Software, se recoge en Domain Workbench (pdf de su presentación en OOPSLA 2006), una herramienta capaz de alimentarse de instrucciones de texto, hojas de cálculo o diagramas de flujo y devolver líneas de código perfectamente bien generadas, estructuradas y documentadas que desarrollan las tareas solicitadas. La intención es provocar una revolución parecida a la que produjeron en su momento aplicaciones como Blogger o TypePad cuando permitieron que cualquiera publicase información en la web sin necesidad de saber nada de programación o de HTML, posibilitando que, por ejemplo, un directivo sin conocimientos técnicos pueda participar directamente en el desarrollo de un programa simplemente a partir de reglas de negocio expresadas en diagramas sencillos.
La idea viene a incidir en intentos anteriores de compañías como IBM, que no fueron demasiado bien recibidas por los programadores. Además, Simonyi sigue el camino del software propietario: pretende proteger todas sus creaciones mediante patentes y código compilado, imposibilitando la creación de comunidades de desarrollo y yendo precisamente en contra de un mercado en el que los clientes son cada día más renuentes a aceptar la idea de cajas negras. En cualquier caso, y considerando su reputación, parece una idea digna de ser tenida en cuenta. Hace no muchos años, para hacer lo que estoy haciendo ahora era preciso controlar complicadas herramientas y tirar líneas de código llenas de comandos intimidatorios para cualquier profano… ¿programaremos aplicaciones en el futuro con la misma facilidad que hoy escribimos en un blog?
Supongo que esto facilitaría muchísimo las cosas a la hora de crear aplicaciones, de echo ya hay programas que a partir de un diagrama UML generan el correspondiente código fuente, pero… ¿que gracia tendría? Desde mi punto de vista, prefiero continuar teniendo control de cómo se estructura el código.
Saludos!
Bueno, buena reflexión
no yo hablaría tanto de futuro, ya «existe el lenguaje natural» …
Lo del UML, partir de los requisitos, modelarlo y darle a la manivela y que te salga un programa sin programar parece fenomenal.
Esto ya está inventado se llaman programas comerciales, como SAP y demás, los parametrizan gente con corbata que se llaman consultores de acuerdo a los requisitos del cliente y ya está.
El desarrollo a medida es como la arquitectura, se pueden hacer chabolos o una catedral, depende de la pasta y las necesidades que haya.
A veces, mirar lo bueno de fuera, nos hace olvidar las excelencias de aquí: http://www.integranova.com/infos/olivanova.htm
En realidad, esto de la programación automática, en todas sus variantes, es algo que ya tiene tiempo….
En la Universidad Politécnica de Valencia, en su ( nuestra, je, je!!), Facultad de Informática ( Dode creo que estuviste hace unos meses, Enrique), el catedrático Oscar Pastor y su grupo de investigación, hace tiempo que desarrollan productos de «software que crea software», han creado una spin-off, dentro del grupo Olivanova, han patentado sus productos en USA, y contrariamente a lo que kiki decía unos post más abajo, no hace falta dedicarse a poner azulejos, ó poner bombillas, en realidad, dichos desarrollos desplazan parte(sólo una parte) de la, a veces aburrida y pesada tarea de escribir-escupir lineas de código, a la más gratificante tarea de análisis, y en definitiva, es algo que no quita trabajo…
Saludos.
La idea de crear un software que escriba software a partir de unos parámetros es genial y un gran reto tecnológico. Máxime si se convierte en una herramienta para aumentar el rendimiento de los programadores en tareas aburridas y repetirivas.
Pero de ahí a convertirse en una herramienta para directivos va un abismo. Hasta ahora todos los directivos de empresa que conozco no quieren cocerse nada ellos mismos, prefieren que les den las cosas hechas, los cálculos resueltos y los informes y diagramas en papel o metidos en pdf’s o presentaciones para sólo retocarlas.
Recuerdo que hace tiempo el inventor del SQL pensaba que los directivos de empresas teclearían consultas en sus terminales para obtener datos y ningún directivo lo usó, aunque se convirtió en el referente para los lenguajes de bases de datos.
Scratch ya hace verdaderas perrerías y está pensado para niños sin ningún tipo de conocimiento informático… ¿por qué no lo mismo para «directivos sin conocimientos técnicos»? ;)
Flash y otros sistemas de programación con interfaces más que amigables (o cualquier sistema que acepte «macros») van por el mismo derrotero.
Cuestión de tiempo.
una herramienta capaz de alimentarse de instrucciones de texto, hojas de cálculo o diagramas de flujo y devolver líneas de código perfectamente bien generadas, estructuradas y documentadas que desarrollan las tareas solicitadas.
Anda que descubrir el software RAD a estas alturas… ;)
Me da la impresión que estamos hablando del lenguaje de programación de alto nivel, de verdad, en donde programar aplicaciones solo dependerás de conocimientos relacionados con el objeto de la aplicación porque instrucciones se aproximarán al lenguaje natural.
Confio que pronto estará a disposición de todos y su desarrollo no me parece una idea descabellada, porque no hace tanto que nos impresionaban los correctores ortográficos y gramaticales, los traductores de idiomas, la confección de páginas web sin conocer html o flash, etc.
Economía Excel
No entendí mucho qué es lo que hará este nuevo fantabuloso soft. Pero otro Soft que se dedica a autoescribirse es GeneXus … y lo hace desde 1985 :)
Hace ya mas de 20 años gente que trabajaba para mí escribia programas en Cobol generado a partir de pseudocódigo que era muy descriptivo.y facil de inplementar.
Los programas funcionaban según lo previsto, pero tenían dos problemas.
Eran grandísimos pues producian unos programas llenos por todos los lados de módulos que no participaban directamente en ese programa y por donde nunca podía pasar la máquina en ese caso concreto, pero si en otro caso
Y eran absolutamente imposibles corregirlos o cambiarlos o modificarlos, pues la eleccion de variables y otras cosas era automatica y no descriptiva,por lo que seguir su proceso de trabajo era penosísimo,cuando el nombre del cliente se ocultaba bajo una variable de nombre var107 y lo que había pagado en una valriable de nombre var118 y una fecha en var247
Con ello se cargaban lo mejor del Cobol, que es ser un programa que cualquiera puede escribir y cualquier otro puede arreglar y modificar, o sea un lenguaje hecho para trabajar en equipo…
Por un lado, lo que dice más de uno por aquí: los generadores automáticos de código tienen más años que la tata. Como no nos cuenten qué tiene de especial este, ni hay noticia ni hay ná.
Y como bien dice Gorki: fantástico, todo se hace solo. Después «solo» hay que mantenerlo. Suerte!!
Por otro lado, aquí no hay «software que se escribe a sí mismo», hay software que genera software, que no tiene nada que ver.
El #9 riza el rizo equivocándose en ambas cosas. GeneXus no genera código a partir de especificaciones. GeneXus tiene un lenguaje propio que luego puedes traducir a Cobol, Java, VB, etc., pero lo programas igual que en cualquier lenguaje. Y por supuesto no «se escribe a sí mismo».
Además, lo de «intentos anteriores de compañías como IBM, que no fueron demasiado bien recibidas por los programadores.» tendrás que explicarlo, porque Rational Rose tiene bastante éxito.
La verdad es que no hay por donde coger nada. Se nota que no programas mucho, no.
La idea no es nueva.
Si viene de Microsoft, vamos mal.
Históricamente los productos Microsoft crean código vía asistente, o bien creando código en segundo plano. En lo personal los asistentes en Office para macros son más un estorbo que útiles, mejor tipear código directo (a menos que quieras salir del paso, pero eso no es código bueno). Y respecto de crear código en segundo plano, cito FrontPage. Los desarrolladores web saben muy bien el código basura que genera.
Que MS garantice que el código que se haga esté bien depurado, que no tenga insertados comandos o dependencias de librerías propietarias que hagan que el código solo funcione con soft MS, que plantee una interface que sea útil, y ahí empezamos a hablar en serio. De no ser así, teóricamente muy lindo y en la práctica, basura.
Ya que estamos ¿por qué MS no es capaz de crear algo como el Automator de Mac? No puede hacer algo como eso en Windows, que hablando mal y pronto es el viejo .BAT en modo gráfico (aunque entrando en características del Sistema, como entiendo que Automator sí hace), no le pidas algo más avanzado como citas aquí. No digo que no lo harán, pero conociéndolos ya me imagino los resultados :-)
Un abrazo
Entiendo que lo que nos presenta Enrique es, comparando con la construcción, una herramienta para generar planos a partir de diversos tipos de documentos (con contenido diverso) para que de forma automática se genere el código fuente.
También apunta que estará documentado (automáticamente), lo que significará que su mantenimiento no debería de ser muy complicado, pues siempre generará el código con la misma organización (patrones y estructuras prefijadas).
A mí me parece muy interesante. Así llevaría a la profesión a niveles de verdadera ingeniería. Pero llegar al punto de que cualquiera pueda construir software… eso se me escapa. ¿Alguien tendrá que ser el responsable? ¿O le echamos la culpa a la herramienta que lo genera?
Saludos
A riesgo de ser provocativo pero sin ánimo de ofender a nadie, después de leer los comentarios anteriores me pregunto si alguién se ha tomado la molestia de dar una ojeada a la presentación que Enrique menciona (y de la que pone un link). Por que a los que mencionan que la idea no es nueva y a los que prefieren ellos mismos escribir código en aras de un dudoso control, decirles que tienen razón. Los compiladores, programas que escriben programas, son algo más que simples traductores, están ahí desde el inicio, optimizan, analizan y detectan errores. Lo único que no me cuadra es por que ya casi nadie (excepto especialistas de alto nivel) escribe todavía en código máquina. Ahí si que se tiene control de verdad!!
En 1920, Klein, uno de los matemáticos más brillantes del siglo XX, planteó en un congreso un problema fenomenal. Era posible resolver cualquier problema matemático (transcendente o no) mediante un algoritmo, es decir, especificando una lista FINITA de operaciones…? Y de lo que se trata aquí a mi me parece en cierta forma lo mismo. Podemos, paulatinamente, encontrar una forma de expresar el complejisimo sistema de referencias, relaciónes, inducciones, deducciones y jerarquías de lo que se denomina pensamiento humano y su forma de aprendeher la realidad, con maquinas binarias, que unicamente se distinguen por repetir operaciones aritmeticas a velocidad monstruosa? Y en relación con esto, según el teorema de Touring, en teoría, lo mismo me vale el MAC de Enrique que un ábaco romano, pero (supongo) a nadie se le ocurriría la tontería de criticar un Mac diciendo que el ábaco ya existía, o que en teoría puede hacer lo mismo (o tal vez no puede hacer lo mismo…)
Enrique, gracias por el link a la presentación. Por el contenido y por la forma, una presentación realmente buena.
Lo que pretende Simonyi no es nada nuevo, Genexus lo viene haciendo desde hace bastantes años.
Ahora, tal vez pretende mejorar justamente el punto flaco de Genexus (y la razón por la que no ha prendido): es un asco para la gran mayoría de los desarrolladores.
Lo problemas de de genexus lo soluciona hace tiempo http://www.velneo.com , la verdad que yo la uso , no soy programador y hago aplicaciones con gran facilidad sin escribir líneas de código solo con el análisis de la aplicación.
@14, antoni. Sin animus molestandi, revise sus fuentes: No era 1920, ni era Felix Klein. Como puede ver en: http://es.wikipedia.org/wiki/Entscheidungsproblem
la solución de «Turing», era inspirada en los trabajos de Kurt GÃ?¶del, como respuesta de este al problema de David Hilbert (Congreso Int. Math, 1900), acerca de la formalización de la Aritmética fundamental, y la formulacion correcta, como consecuencia del problema de decision, por Hilbert, Church y Ackerman en 1928.
Y no, no es lo mismo. Por cuestiones prácticas, y también por otras de tipo teórico ( Incluso muy teórico), no es «fácil»(Y habría que definir y usar el término «fácil» con sumo cuidado), pasar de las especificaciones en «lenguaje humano» a programas ejecutables, ni a mano, ni a máquina…. (¡¡¡Que se lo digan a los desarrolladores en activo!!!).
Saludos.
Yo poco puedo decir pero en una entrevista del 2005 a Yukihiro Matsumoto, el creador del lenguaje Ruby le preguntan:¿Qué piensas de las nuevas arquitecturas de programación que están emergiendo ahora como las «Model Driven Applications»? ¿Crees que en algún punto terminará la necesidad de escribir código, y sólo tendremos que modelar los datos y los procesos?
y responde:
Yo no termino de creermelas. Quizás no porque no tengan utilidad, sino porque escribir código es demasiado divertido como para no hacerlo más. Estoy convencido de que la gente que abandone la idea de crear código, no estará disfrutando tanto de su creación de software. En cualquier caso, creo que habrá que tener un ojo en estas tecnologías en el futuro próximo.
http://fer-martin.blogspot.com/2005/11/entrevista-matz.html
[… pretende proteger todas sus creaciones mediante patentes y código compilado … ]
No querras decir codigo propietario, en lugar de compilado. Compila se compila casi todo el codigo (excepto el de los lenguajes interpretados) , pero desde luego eso tiene poco que ver con hacer «comunidad».
Por otra parte, Herramientas de mas alto nivel, si pero aun son una fantasia. Que no nos vendan la moto del MDA otra vez.
[.. La idea viene a incidir en intentos anteriores de compañías como IBM, que no fueron demasiado bien recibidas por los programadores …]. No fueron bien recibidas por que eran (y siguen siendo) una mierda con mucho marketing.
Por cierto que un DSL dista mucho de ser programacion automatica. Ruby on Rails es un DSL, y si mas gente puede programar ahora en con Rails (o cakePHP o lo que sea) pero si no sabes ruby y no conoces el funcionamiento de lo que hay detras solo haran aplicaciones de jugete,
PD Si, realmente quereis leer sobre DSLs mejor leer a Martin Fowler entre otros.
#14, yo me he leído la presentación y sigo sin entender dónde está la gran novedad. Pero no dudo de que alguien como tú sabrá explicárnosla.
Tu ejemplo de Turing no me convence lo más mínimo. Una máquina de Turing puede reproducir cualquier algoritmo, sí, pero ¿en cuánto tiempo? Porque ese es el problema. Aquí no se trata de hacerse pajas mentales con teorías abstractas, no, aquí se trata de tener un software concreto que haga cosas concretas, de manera sencilla y en un tiempo razonable. Y eso no lo veo por ningún lado, ni siquiera la idea.
#15, te remito a #11.
sólo diré una cosa: defmacro
Creo que el «visual basic –» todavía no va a pasar. Para escribir software se necesita un lenguaje de programación turing completo, y por muy alto nivel de abstracción que tenga no va a convertir la construcción de software en algo trivial. Un lenguaje de dominio (diferente al dominio de la computadora se entiende), con capacidad universal es una contradicción.
Por cierto, vaya horror de presentación, que manera de vender humo.
Como dices ya hubo otros intentos de hacer esto antes, y…, la verdad al margen de que los programadores no lo recibiesen bien, el principal problema que tienen estas herramientas es que tienen muchas limitaciones.
Además de la iniciativa de IBM, a día de hoy hay muchas otras herramientas de este tipo, e incluso hay empresas que se ganan la vida con ellas, y les va perfectamente.
El principal problema es que si quieres hacer algo realmente complejo, al final te cuesta tanto o más aprender a manejar la herramienta como un lenguaje de programación.
Seguro que hay herramientas que son capaces de generar código desde los requisitos en lenguage natural o en un lenguaje de modelado.
Pero generar código no es construir una aplicación. A ver si nos enteramos ya, que esto de la generación automática de código es muy viejo.
«Por otra parte, Herramientas de mas alto nivel, si pero aun son una fantasia. Que no nos vendan la moto del MDA otra vez.»
La moto de MDA esta empezando a arrancar,dentro de unos años sera algo habitual su uso, simplemente por un tema de productividad. Mas que MDA me inclinaría por el MDD. Proyectos como GMF ayudan a que poco a poco tengamos herramientas para poder implementar modelos a la medida de nuestras necesidades (no necesariamente con UML). Ademas no hay que olvidar que microsoft ya tiene un proyecto que sigue esta dirección, es la Software Factory.
La herramienta esta parece mas enfocada para que un usuario pueda hacerse pequeñas aplicaciones, como actualmente se realizan sobre access o excel.
Como ha comentado alguien en un post anterior, el grupo care-t, los de olivanova ya hace mucho que se dedican a eso y además con headquarter en Denia
http://www.care-t.com/company/index.asp
que pena que estas cosas no salgan más en la tele,
yo creo que un programa de tarde de hora y media, contando que hacen las empresas (cómo se hacen muebles, como se investigan vacunas, como se crea y prueba tecnología informática, cómo son las instalaciones) acabaría teniendo una buena audiencia y ayudaría a cambiar la mentalidad de la gente hacia un modelo más emprendedor y una cultura de valorar más el trabajo :-)
Yo suelo programar usando Eclipse y la verdad es que tengo la sensación no de programar, sino de componer. ¿Dónde estará el límite? Supongo que crear código a partir de un texto que explique lo que quieras hacer o a partir de un esquema dibujado en papel es aún un interesante campo de investigación.
Ahora me viene a la cabeza que en el campo de sketch-based interfaces allá por el 96 se hizo una muy conocida tesis sobre una aplicación que permite crear interfaces de usuario dibujándolas en un tablet PC, pero desconozco si ya está integrado en productos.
A los que quieran saber algo más, aquí hay una entrevista (del MIT Technology Review)… que cuenta cosas interesantes:
http://www.technologyreview.com/Infotech/18047/
Part I:
http://www.technologyreview.com/Infotech/17969/
Part II:
http://www.technologyreview.com/Infotech/18021/
Si alguien la quiere en español, está traducida en uno de los números de la revista Innovación de la Escuela de Organización Industrial.
Aclaro que yo no soy programador profesional (de vez en cuándo programo algo pero por gusto y porque es divertido), y sabía que ya había software que hacía eso mismo… pero hay cosas que a mí me han parecido interesantes. Y me ha gustado.
Pues a mi me gusta mucho como se hacen las cosas con Scratch por ejemplo…
Creo que no se puede evitar el momento en que todo el equipo se reune (ya se que eso sera fuera de españa, que aqui se pasa directamente a programar…) para planear como hacer una aplicacion
Al humano le cuesta mucho imaginar como hace las cosas que hace intuitivamente
De todos modos a mi mas que generacion de codigo automatica me interesa muchisimo mas imaginar como funciona el cerebro y sus procesos (http://blogs.sistes.net/Garito/382) porque, a partir de hay, puedo imaginar metodos de trabajo mucho mas cercanos a la realidad. Porque programar el ordenador para que trabaje con Python o Ruby si lo que me interesa es plasmar un proceso mental en un ordenador?
Python, Ruby, PHP solo son lenguajes, me interesa mucho mas la organizacion de la informacion que la informacion en si (que sera interesante para mi cliente no para mi…)
Al final, siempre me doy contra la misma piedra: capas, capas y mas capas de complejidad innecesaria
A ver quien me da una opinion sobre esto: http://blogs.sistes.net/Garito/608 es un metodo que he creado que funciona y que tiende a eliminar el proceso puramente de programacion para centrarse en el proceso de diseño de arquitectura y funcional
Creo que el futuro de la programacion pasa por hay mas que por la generacion de codigo automatica
Saludos
Desde hace un año existe una Tercera Via:
La ejecución directa de especificaciones mediante un computador virtual de alta performance (ver RESUMEN EJECUTIVO en http://www.hdolder.com/PeBookRESEJEC.htm). M&P es el primer Model Driven System completamente operacional.
M&P es un nuevo concepto. Yo personalmente lo use para desarrollar un sistema workflow que se implemento exitosamente en un centro regional de distribucion en latinoamerica.
Actualmente me encuentro haciendo un MBA en EE.UU. pero si les interesa saber algo mas de este nuevo concepto me pueden contactar a dario_aguero@byu.net
«La maquina de programar» = el fin de los programadores
Se dice que la «Maquina de programar» supondrá el fin de los programadores. Claro, les despiden en cuanto intentan ejercer sus derechos.
http://www.nodo50.org/tortuga/article.php3?id_article=7418#forum18849
http://meneame.net/story/posible-sindicalismo-empresas-relacionadas-desarrollo-software-consult
http://jimmyjazz.wordpress.com/2008/01/29/trabajando-para-una-carnica/
http://www.actividadonline.com.ar/index.php?option=com_mamblog&Itemid=26&task
Ya estan los listos y los reticentes al cambio (que seguirán en pantallas de fosforo, supongo) bombardeando algo de lo que no tienen ni idea ni han llegado a entender.
Se trata de separar de una vez los arquitectos de los paleta (sin animo de acritud para ellos), esto es, si solo te preocupas de ser el más friki del mundo desarrollando el SW por el SW, serás un paleta, si tu preocupación es tener vocación de negocio buscaras elevar el nivel de abstracción que te permiten los lenguajes universales y «crearas» un lenguaje orientado al negocio, lo que significa que la terminologÃa, las reglas, los sÃmbolos, etc. serán los mismos con los que se expresa el negocio (con el esfuerzo que supone aprender el negocio que estas implementando….. aaaamigo), lo cual nos lleva SW self-docummented, perfectamente legible=>más mantenible, más validable, etc, etc, etc.
De todas formas los amantes de los bucles redondos de perfección fractálica, los defensores del poder en pro de la arquitectura perfecta (de su arquitectura «perfecta»), los que piensan que el usuario no sabe apreciar un buen SW porque solo quiere ver como de util es para él, o que piensan que el SW es en si mismo un fin y no una herramienta… Bien, todos ellos, podrán seguir en sus habitaciones aisladas despejando el camino a los que piensan que el SW es bueno si y solo si, no solo posibilita el negocio, sino que lo potencia.
En fin, perdon por la chapa, pero creo que por el camino de intentional software van a ir los pasos en el futuro. Se trata de algo como cuando se paso del ensamblador a un lenguaje de alto nivel (seguro que los amantes del poder en su epoca se opusieron): elevar el nivel de abstracción.