17 febrero 2008

No dejemos de crear código

Como siempre después de un año de haberse publicado este artículo, hoy logro entenderlo...

En los años 20, Hollywood tenía problemas: había escándalos por doquier y era opinión generalizada que en las películas se abusaba del sexo y la violencia. Por ello, los estudios, convencidos de que el gobierno actuaría al respecto, crearon la oficina Hays con la misión de supervisarse a sí mismos y limpiar la pantalla de plata. La oficina Hays estableció unas reglas que abarcaban todos los ámbitos -desde el uso del lenguaje correcto hasta las demostraciones de afecto- y se convirtió en el brazo principal de la censura no gubernamental del mundo del cine.


A mediados de los años 30, guionistas y directores reaccionaron ante estas restricciones de forma creativa. Una de las maneras de soslayar los límites impuestos fue la invención de las comedias de enredo, un género nuevo que incluía romances, situaciones absurdas y comentarios finos e irónicos. En ellas, no había peligro de ver besos lascivos; las batallas amorosas no tenían cabida en estas películas. Además, el diálogo era tan rápido y moderno que los censores apenas podían comprenderlo. Resultado: clásicos como Sucedió una noche, Twentieth Century, y La fiera de mi niña nunca se hubieran concebido si guionistas y directores hubieran tenido la libertad de hacer todo lo que sus "indecentes" mentes deseaban.

Con frecuencia, la creatividad florece cuando se imponen al creador límites estrictos, y no cuando disfruta de libertad. Los ingenieros, al igual que los artistas, saben de esto. Cuando un tanque de oxígeno explosionó en el Apolo 13 mientras éste se dirigía a la Luna, se necesitaron buenas dosis de creatividad e ingenuidad para solucionar el problema. La creatividad surgió directamente de la falta de materiales disponibles.

Recordé esta paradoja cuando hace poco disfrutaba de las operaciones de programación más divertidas y estimulantes que he hecho nunca, y sin usar siquiera un lenguaje de programación. Últimamente, me entretengo con XAML, el lenguaje de marcado de aplicaciones extensible, que conforma una parte importante de Microsoft® Windows® Presentation Foundation.

XAML permite el acceso a clases eficaces de Windows Presentation Foundation para diseñar y visualizar gráficos y animaciones. XAML puede englobarse dentro de los lenguajes de programación declarativos. Pero, si se compara con lenguajes de programación más familiares, XAML carece de características de programación básicas. En, XAML, no hay bucles, no hay condicionales y no se pueden sumar ni multiplicar cifras.

Y, sin embargo, cuanto más me limitaba a usar solo XAML para solucionar los problemas -como si viviera en un mundo en el que solo existiera XAML-, mis soluciones eran más creativas. Descubrí que podía definir transformaciones de gráficos compuestos en XAML que podían multiplicar matrices, de tal forma que podía disponer de todas las sumas y multiplicaciones que necesitaba. Descubrí, también, que podía simular matrices en XAML; para ello, podía usar un cuadro de lista que incluyera varios elementos y después podía indexar estos elementos con enlaces de datos.

El logro del que me siento más orgulloso es una aplicación de reloj XAML. Quería dibujar marcas en círculo alrededor de la circunferencia del reloj. Habitualmente, un reloj tiene 12 marcas grandes y 48 marcas pequeñas, pero sin un bucle "for loop" estas marcas necesitarían 60 elementos XAML separados. Desgraciadamente, no conseguía crear dicha marca repetitiva. Estuve dándole vueltas a este problema durante días hasta que hice un descubrimiento. Podía crear exactamente las marcas que quería dibujando dos círculos con líneas intermitentes. No solo funcionó, sino que además me di cuenta de que había conseguido lo que quería con solo dos objetos gráficos, en lugar de tener que usar los sesenta objetos que requieren la mayoría de las aplicaciones de reloj.

Escribir con XAML es divertido. Escribir con XAML es estimulante. Escribir con XAML agudiza el ingenio. Y, sin embargo, para algunas personas escribir con XAML es una aberración. XAML no está pensado para escribir manualmente. Como dijo uno de los blogger de Microsoft "XAML es para herramientas", y los meses anteriores a su lanzamiento, algunas de las funciones de XAML se eliminaron porque solo beneficiaban a las personas y no a las herramientas. Por supuesto, puede que herramientas de creación de XAML, como Visual Studio® y Microsoft Expression® Interactive Designer, estimulen nuestra creatividad en cuanto a la estética, pero no hacen nada por nuestra creatividad para codificar.

¿Se preocuparán los futuros programadores de aprender sintaxis XAML? ¿O pensarán que se trata de "cosas raras de XML" que Visual Studio crea para guardar el diseño de los botones y cuadros combinados?


Los diseñadores interactivos y los creadores de códigos tienen, definitivamente, un lugar en el mundo moderno de los programadores. Estoy convencido de que ayudan a ahorrar mucho tiempo. Pero no olvidemos quiénes somos. Somos programadores. Somos expertos en la escritura de códigos robustos. Disfrutamos obteniendo el máximo efecto con el código mínimo. Podemos conseguir de lenguajes como XAML resultados para los que no estuvieron diseñados. Podemos obtener de ellos un gran partido.


Fuente del Articulo: MSDN Magazine Febrero 2007.

Charles Petzold es editor colaborador de MSDN Magazine y autor de Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation (Microsoft Press, 2006).

No hay comentarios.: