| « Salven sus almas | LinEx 2006 RC1 lista. » |
Smalltalk y XML
Desde hace algunos años, vengo escuchando lo mismo:
- XML es una mierda.
- XML es una mierda.
- XML es una mierda.
- XML es una mierda.
Viendo cómo es el tema de XML podía asentir que sí, que efectivamente era una mierda. Pero dicen que la mierda siempre huele peor cuando está en nuestra ropa, dicho que pude comprobar estos últimos días.
Me cayó un marrón: parsear MBs y MBs (de hecho GBs y GBs) de horrendo XML.
- Situación 1: no había DTDs. Por lo que no había forma de saber si la sintaxis estaba hecha mierda o no.
- Situación 2: efectivamente la sintaxis estaba hecha mierda.
- Situación 3: el contenido no estaba escapado ni nada.
- Situación 4: mucha información útil estaba dentro de comentarios.
- Situación 5: diferentes codificaciones de caracteres por doquier, cosa que sufriría luego.
Como soy muy vago y siempre tiro para lo que conozco, decidí ver qué parsers había en python. El primero que probé fue el xml.sax. La cuestión que parsear eso en sax era efectivamente peor que parsearlo como si fuera texto plano. Al final me quedé con xml.dom, porque parecía más sencillo.
A ninguno de los dos le gustaba manejar caracteres raros, por lo que tuve que hacer conversiones primero, parseo después, y por último parsear "a pelo" los comentarios. Al final, el parser me quedó más grande que si lo hubiera hecho "a pelo" desde un comienzo.
En situaciones como ésta me pregunto por qué mierda esa manía de usar siempre "la última tecnología", sin pensar si esa tecnología sirve o no.
A lo que voy: últimamente estoy leyendo el libro "Programando con Smalltalk", de mi amigo Diego Gómez Deck. Confieso que no lo estoy leyendo a toda máquina, en parte porque lo hago en mis ratos libres.
La cuestión es que estaba en mi trono, leyendo, cuando llego a la Sección 3.2: "Parser de XML basado en una pila". No pude evitar suspirar, esperando una aburrida serie de pasos sobre cómo superar un trauma XML. También me extrañó al principio que Diego se ocupara de ese tema, conociendo su aversión por ese meta-super-extensible-mega-lenguaje.
Con lo que no contaba era que Diego, muy hábil él, ponía en el libro uno de los aspectos en los cuales Smalltalk brilla, dejando en ridículo al resto de los lenguajes. Parsear XML con las pilas de objetos no sólo no es tedioso, sino que hasta placentero (sobre todo si uno recuerda por lo que tuvo que pasar antes).
No se lo pierdan: Programando con Smalltalk. Se lo pueden bajar gratis y, si les gusta, hasta lo pueden comprar, para poder leerlo como lo leo yo.
En cuanto al libro en sí, es muy bueno. Yo no soy un Programador (así con "P"), mas bien hago chapuzas, y aún así lo entiendo muy bien, lo que habla muy bien del autor. Está claro que no es para principiantes del todo, que hay que saber conceptos de objetos y demás. Pero eso es lo que lo hace interesante. Va al grano enseguida, y uno puede comparar la magia de Smalltalk contra lo que uno ya sabe de manera inmediata. Aún para los que no piensen trabajar con Smalltalk, me parece que saber cómo funciona este lenguaje es fundamental para estar en esta profesión (no, no recibo comisión por la venta del libro).
La única contra: un neófito o un fanboy de otro lenguaje que piense que se las sabe todas puede quedar con el culo afuera muy rápido, y debido a eso despotricar un poco contra el lenguaje, o mejor dicho contra la forma de usarlo. Como dice Diego, Smalltalk se lee más de lo que se escribe. A esa gente le digo que tenga paciencia, se relaje, y disfrute.
Espero con ansias el momento en el cual mi intestino me diga que quiere aprender más.
2 comments
Gracias por los comentarios, sólo quería decirte que tengas cuidado de no manchar el libro :-P
Te cuento que en Python podrías hacer fácilmente un stack basado en una pila, lo que no tendrás es la posibilidad de ir creando el programa conforme vayas parseando el XML.
Saludos,
-- Diego
No quiero defender al XML, pero en particular XML esta basado en SGML, ambos creados por Charles Goldfarb, el SGML tiene como treinta años y le hereda este tiempo de experiencia y practica al XML, lo que no lo sitúa como última tecnología.
Pero dejemos esto de los treinta años del SGML, yo a contra corriente empecé a utilizar XML en 1998, cuando tenía un par de años de haber aparecido, hace 8 años era última tecnología, actualmente ya no lo es. Por lo que me extraño tu comentario: "...me pregunto por qué mierda esa manía de usar siempre "la última tecnología", sin pensar si esa tecnología sirve o no."
El problema de fondo es que se use mal, como es el ejemplo que nos das, la tecnología --las buenas ideas-- mal utilizadas siempre van a ser una mierda como el caso que mencionas.
Sobre el Smalltalk apoyo tu punto de vista, es el padre de la orientación a objetos, y debe ser parte de la cultura de todo informativo/programador.
Saludos.