jueves, octubre 04, 2007

La generación de Código Automática.

Pues leyendo Slashdot me encontré un link a uno de esos artículos de Joel Spolsky (cuando realmente escribía cosas interesantes).

Uno de los puntos mas bacanos es cuando habla de la generación de código automático como una leaky abstraction. Y es ahí cuando pienso en las "maravillosas" clases de Sistemas distribuídos en Eafit.

En las clases de sistemas distribuidos la idea es pasar por los diferentes paradigmas como el clásico Cliente-Servidor, como también P2P y sistemas emergentes como agentes móbiles, Grid Computing.

Inicialmente yo estaba super entusiasmado con la clase. Yo sabía algo de sockets, entonces siendo el primer reto hacer un pequeño programa en sockets hasta lo hice en Haskell por gomoso. Después pasamos a lo que el profesor llama "middleware de alto nivel", nos olvidamos de sockets y pasamos a cosas del estilo de RPC y webservices.

¿Como debería ser una clase de Web Services?

La pregunta interesante es ¿Se deberia enseñar Web Services? Yo diría (mirando por encima de los hombros a quien se atreva a contradecirme) Web Services es tecnología, eso es como enseñar estructuras de datos enseñando como usar el paquete util de Java. Uno solito puede aprenderla a usar. Pero bueno Digaaamos que soy un radical-purista-cuasi-snob que "no esta consciente de lo que las grandes empresas de software como intergrupo y alcuadrado están necesitando".

Una clase de WS no debe ser de esta forma:

-Bueno ya que no fuimos capaces de poner NetBeans 5.5.1 con eso de Web-Services, ábranse el .Net 2003, y den Crear Proyecto Web-Service. Metan el código en esta línea. Y luego creen otro proyecto y vean como llamamos de fácil un WS. Ven?"

-Bueno si... pero como funciona bien eso de WSDL? Como hace el para construir los stubs y esas cosas?"

-Esa es la mejor parte. Es mágia! Simplemente .Net por ser una herramienta costosísima y de una gran corporación hace lo que otras herramientas no hacen. MAGIA!

Y si hablara de la explicación de P2P. Siendo un área tan interesante, con taaantos problemas por resolver terminó siendo.

-"La arquitectura de P2PS es esta. Existen otros Middlewares como JXTA pero es muuuy complicado...

...Y como ven uno como programador solo se preocupa de crear estos AdvertisementPipes, RendevouzPipes blablablabla"

"Pero vení no entiendo y la localización?"

"Se hace por medio de los advertisements"

"Si pero a quien le llegan?? pues... esque, en algun lugar se debe especificar el puerto, IP o algo"

"No... Es MAGIA!!"

Mentiras. Después de Preguntar mas de lo debido el me explico que se monta sobre UDP-Multicast y que en caso de no haber esto configurado se debe hacer explicito otros Pipes de Mas para comunicar entre subredes.

Hay Solución?

Pues una de las pocas personas que creo que sabe como debe ser la forma de dictar los cursos parece estar resignado. Esa persona era el ex-director del departamento.

Segun él, al parecer ya no se trata de ingeniería sino de técnica, aprender a utilizar una herramienta bien y listo. Algo que muchos dicen pero es triste escucharselo a él.

Al final uno vuelve al Fahrenheit de Bradbury... No piense, pensar es malo, Pensar lleva a la infelicidad.