martes, marzo 27, 2007

Docking

... sí, estoy con el curso de ADO.NET. Uno de los problemas que tenía con la serie D, sobre todo, era la dependencia de componentes de terceros para lograr una aplicación final "presentable". Oh, sí, lo importante es el interior, bla, bla... pero lo cierto es que ver una aplicación con los componentes de .NET v1.1 a secas es bastante descorazonador.
Y no sólo eso: buena parte del contenido de la serie D está relacionado con el gestor de ventanas. ADO.NET es relativamente sencillo, pero puede resultar laborioso, especialmente para coordinar navegación y actualización... si usas conjuntos de datos, claro, porque si no, da aún más trabajo. En concreto, lo que me preocupaba era precisamente el sistema de ventanas, que era bastante primitivo. Ahora mismo, la moda son las ventanas flotantes, esas otras ventanas escurridizas, los paneles de tareas, etc, etc. Tenía dos alternativas: serie D sin pitos ni flautas, otra vez, o serie D con componentes de terceros. Otra vez.
Como el mundo no es en blanco y negro, me he decidido por una tercera posibilidad: echar mano de alguna suite gratuita para el manejo de ventanas. Y la que he elegido, si no surge algún impedimento gordo, es la de Weifen Luo. Estos componentes imitan el comportamiento de las ventanas de VS2005, son fáciles de usar, y son los que utilizan en SharpDevelop para el "ventaneo".
Eso sí: es muy probable que "congele" una versión estable, en vez de buscar siempre la última. Además, aunque los componentes son muy estables, el código fuente no es exactamente el tipo de código que prefiero. Aunque muy estructurado, "todos hablan con todos": la comunicación entre módulos se produce a través de clases, y hay montones de declaraciones internal dentro de cada clase. Es muy difícil detectar todas las dependencias y todos los canales de comunicación. Además, el autor ha usado tipos anidados y herencia... con ancestros y descendientes anidados en tipos no relacionados, con lo cuál complica mucho más entender qué demonios hace el código fuente.
Para rejillas y menúes, por supuesto, voy a usar los propios de VS2005, que funcionan muy bien. Respecto a los paneles de tareas (los famosos task panels), creo que puedo vivir sin ellos. De todos modos, he visto un par de componentes gratuitos por ahí, y en el peor de los casos, no es complicado escribir uno propio (en IntSight Controls hay un grupo de componente de ese tipo, para Windows nativo, y dibujando todo a mano).

Etiquetas: ,

lunes, marzo 19, 2007

Time break

Llevo un par de días en reposo por enfermedad. Nada grave (ni siquiera contagioso, sniff), pero me han mandado al banquillo. A ver si ya puedo retomar todos los asuntos pendientes esta semana...

lunes, marzo 12, 2007

La importancia de llamarse Bertrand

Para quienes todavía creen que hay algo oscuro, siniestro e inconfesable tras mi recomendación de .NET, he reencontrado este artículo en Internet:
Espero que esos pocos conozcan quién es Bertrand Meyer.

Etiquetas: , ,

lunes, marzo 05, 2007

Intermezzo técnico

¿Me permite un pequeño descanso antes de continuar con la serie sobre ideologías? En el último post sobre Freya, en los comentarios, Daniel Alvarez me señalaba unos artículos en Internet sobre integración con Visual Studio, en la Bitwise Magazine inglesa. Me llamó la atención, merodeando por dicha página, el siguiente artículo:
Cuidado, no estoy diciendo que esté de acuerdo con todo lo que se dice en el artículo. En realidad, creo que las opiniones de Huw y Dermot son muy diferentes, y en ocasiones incluso hablan de cosas muy diferentes sin darse cuenta.
Lo que quiero destacar es la importancia que Dermot concede al uso de interfaces... aunque en su caso, se refiere concretamente a las interfaces COM. Destaco esta opinión (basada en la práctica) porque coincide con lo que he podido comprobar por cuenta propia en estos últimos años... y que difiere radicalmente de las recomendaciones de Microsoft sobre el uso de tipos de interfaz.
En concreto, me gusta plantear la funcionalidad y arquitectura de un sistema mediante un conjunto pequeño de interfaces. Luego, las clases entran en escena, pero sólo como un recurso de implementación. Por ejemplo, el compilador de Freya está basado en unas pocas interfaces como ISymbolTable, ICodeGenerator e IParser que son luego implementadas por clases que funcionan como singletons dentro de una instancia del compilador. Luego tenemos interfaces como IAstNode, IStatement e IExpression, que son implementadas luego por una larga colección de clases. Lo importante es que toda comunicación entre módulos se especifica por medio de tipos de interfaz: el canal de comunicación que abren las interfaces es mucho más estrecho que el de las clases. Y la misma situación se da en Proteus, en XSight RT...
¿Mi consejo? Lea, analice, experimente y compare. Y luego, cuando decida, cuéntenos su decisión.

Etiquetas: , ,

Ideologías - primera parte

¿Sueña Aibo con perseguir y morder a Doraemon?No es lo más sorprendente de lo que me he encontrado en esta vida, pero como mínimo es curioso. Me refiero a la supuesta asociación que ven algunos entre software e ideología. Las ideologías actúan como filtros para evitar que la gente piense... y me refiero tanto a ideologías "laicas" como a ideologías relacionadas con religiones. ¿Cree usted que los humanos buscamos la verdad? No: lo que hacemos es coleccionar ideas que nos hacen sentir bien. Es cierto que las ideas verdaderas tienen el efecto secundario de hacernos sentir bien, como el "eureka" de Arquímedes. Y desechamos, por supuesto, aquellas que nos hacen sentir mal... muchas veces simplemente porque contradicen otras ideas que nos hacen sentir bien. ¿Parece una obviedad? Dígaselo a Searle, y a Noam Chomski, y a tantos otros que se ganan la vida filosofando "seriamente" sobre la mente y la voluntad, e ignoran estas trivialidades.
Hagamos una prueba. Dígame, rápido: ¿es buena medida subir el salario mínimo interprofesional?
La respuesta, en el siguiente post de esta serie.
... y sí, al final veremos qué tiene que ver todo esto con el software y la Informática. Sea paciente.

Etiquetas:

jueves, marzo 01, 2007

Impuestos atenuados

Ya sé que está mal visto hablar de política. Pero esta mañana me he despertado y me he preguntado dónde estoy, qué hago aquí y todas esas reacciones que suelen provocar la incredulidad y la sorpresa.
En definitiva, veamos el lado positivo del asunto: ¿creéis que, si me declaro en huelga de hambre, este gobierno me perdonará los impuestos, o me impondrá unos "impuestos atenuados"? ¿O tengo que asesinar primero a veinticinco personas?
Sí, ya sé que no debo hablar sobre política, pero pensé que más que con la política, tenía que ver con la decencia... sí, esa palabra todavía sale en el diccionario.

Me han avisado que hay concentración hoy, frente al Ministerio del Interior, en el Paseo de la Castellana nº 5, a las 8 de la noche. Si me da tiempo, que creo que sí, me pasaré. Y me vais a perdonar por mi "activismo" en este tema, pero el asunto es gravísimo, y no se trata siquiera de política. Veinticinco asesinados por un terrorista. Dos chicos ecuatorianos asesinados en la Terminal 4 de Barajas hace un mes. Esto no tiene nombre. O sí...

Citas de la vida "real":
"No es nuestro miedo ni nuestra debilidad lo que le ha salvado, es nuestro valor de luchar por lo que creemos, que es la vida". (ZP)
Fragmento de "1984", la famosa novela de Orwell:
His mind slid away into the labyrinthine world of doublethink. To know and not to know, to be conscious of complete truthfulness while telling carefully-constructed lies, to hold simultaneously two opinions which cancelled out, knowing them to be contradictory and believing in both of them; to use logic against logic, to repudiate morality while laying claim to it, to believe that democracy was impossible and that the Party was the guardian of democracy; to forget whatever it was necessary to forget, then to draw it back at the moment when it was needed, and then promptly to forget it again: and above all, to apply the same process to the process itself. That was the ultimate subtlety: consciously to induce unconsciousness, and then, once again, to become unconscious of the art of hypnosis you had just performed. Even to understand the word 'doublethink' involved using doublethink.
La debilidad es fuerza, la ignorancia es sabiduría, la cobardía es valor, la esclavitud es libertad. Bienaventurados estos pobres de espíritu. Nunca ha estado tan claro: quien te promete un futuro, es porque te está robando el presente.

Etiquetas: