Archive for the ‘Programación’ Category
No siempre es bueno añadir botones
Muy buena la reflexión de los desarrolladores de Tweetie en su entrada del blog “RT vs Via round 2“:
My problem is that I HATE adding UI clutter. Adding another button for what seems like a petty detail (to non-twitter-geeks) is the wrong thing to do.
No siempre más es mejor.
Creando un sistema informático
En el libro Beautiful Architecture, Michael Nygard describe el proceso de creación de un sistema informático como una lucha entre dos fuerzas contrarias: las posibilidades y las restricciones. Una descripción muy literaria que merece la pena leer despacio:
Two dynamics drive a system’s architecture: What must it do? What boundaries must it work with? These define the problem space. We crate, and simultaneously explore, the solution space by resolving these forces, navigating the positive pole of required behavior and the negative one of limitations. Sometimes we can create elegance, and even beauty, when the answers to individual constraints mesh together into a coherent whole.
Processing
Processing es un lenguaje de programación relativamente nuevo, que se está extendiendo a gran velocidad entre artistas (link, link, link), arquitectos y aficionados.
Está basado en Java y su gracia reside en lo fácil que es desarrollar programas gráficos interactivos. No hay que incluir ninguna librería en el código fuente, ni usar Swing, ni definir clases que atrapen los eventos. Tan sólo hay que llamar a funciones gráficas como rect, line o ellipse para hacer dibujos. Y a funciones como draw() o mousePressed() para definir qué hay que dibujar en la pantalla o qué hacer cuando se pincha el ratón.
Un ejemplo de código (sacado del libro Learning Processing) para hacer un programa que captura el movimiento del ratón y dibuja continuamente en pantalla:

void setup() {
size(200, 200);
background(255);
smooth();
}
void draw() {
stroke(0);
// Draw a line from previous mouse location to current mouse location.
line(pmouseX, pmouseY, mouseX, mouseY);
}
Hay bastantes libros y tutoriales para empezar a programar en Processing. Hay alguno en la biblioteca de la EPS, pero pediré alguno más. Avisaré cuando lleguen.
Buenos libros esperando lectores
Ahora que se acerca el fin de año y en la biblioteca ya no nos dejan pedir más bibliografía recomendada, es un buen momento para hacer balance. Como todos los años me he pasado un poco de presupuesto (aprovechando que otros se quedan cortos), y he conseguido hacer encajar los libros que considero interesantes en mis asignaturas. No ha sido difícil, porque lo que no caía en LPP ni en Computación Geométrica lo he puesto en Sistemas Informáticos (buen cajón de sastre, donde cabe casi todo).













Todos los libros están disponibles en la Biblioteca Politécnica (de algunos hay más de una copia). El listado completo es el siguiente, con enlaces al catálogo.
Informática y lenguajes programación
- A brief history of computing
- Concepts of programming languages
- Encyclopedia of algorithms
- Python programming: an introduction to computer science
- Programming collective intelligence: building smart web 2.0 applications
Programación
- Advanced rails recipes
- Agile web development with rails: a pragmatic guide
- Learning Python
- Programming Ruby: the pragmatic programmers’ guide
- The Ruby programming language
Interfaces de usuario y diseño
- About face 3: the essentials of interaction design
- Sketching user experiences: getting the design right and the right design
Geometría computacional
A disfrutarlos. Están esperando que alguien los lea.
Desarrolladores al poder
En otros países tecnológicamente más avanzados que el nuestro los desarrolladores son el elemento central de la innovación y de la producción de aplicaciones y tecnologías informáticas. En un reciente post en el que explicaba los malos resultados económicos publicados por su empresa, Jonathan Schwartz, CEO de Sun Microsystem, decía lo siguiente:
We are going to be making some changes as a result of the quarter, certainly, but not in our core vision or strategic direction – network infrastructure is being built out across the world, developers will continue to define its architecture and shape demand, and we will continue to position ourselves to drive and capture that market.
El énfasis es mio. ¡El CEO de Sun está diciendo que somos los desarrolladores los que definimos la arquitectura de los sistemas informáticos y los que terminamos decidiendo comprar máquinas Sun! Innimaginable en España. Contádselo a vuestros amigos de teleco para fardar.
Aprendamos, pongámonos al nivel de estos países y (una vez hecho eso) valorémonos los informáticos como nos merecemos.
Sketchpad
Ahora que Apple va a popularizar otra forma revolucionaria de interactuar con los computadores con su multi-touch iphone, no está de más hacer una visita a la historia de la informática. ¿De dónde vienen los actuales interfaces de usuario?
Hubo un tiempo en el que los computadores no tenían ratón, ni existían interfaces gráficas con ventanas, paneles, botones, menús desplegables y cosas por el estilo. En la historia de las interfaces de usuario siempre se referencia al programa Sketchpad desarrollado por Ivan Sutherland como el primer paso en el desarrollo de todas estas ideas. Después vinieron Englegart con el ratón y el Smalltalk desarrollado en Xerox Park, que ya comentaremos en otro momento.
Scheme
Dice Yukihiro Matsumoto que uno de los principios en los que se basó para crear el lenguaje de programación Ruby era el principio de la mínima sorpresa. Un lenguaje de programación debe sorprender lo mínimo posible a los programadores que lo utilicen.
Evidentemente, Matsumoto se refiere a los programadores aventajados del lenguaje. Un lenguaje que está aprendiéndose siempre sorprende, y esas sorpresas sirven para que compruebes que no tenías claro algún aspecto de su funcionamiento o de su semántica. Como ejemplo de un lenguaje que no cumple el principio de la mínima sorpresa, Matsumoto cita al C++, en un ingenioso y agudo comentario:
I was a C++ programmer before I started designing Ruby. I programmed in C++ exclusively for two or three years. And after two years of C++ programming, it still surprises me.
Todo esto viene al hilo del lenguaje que quería presentar en este comentario. No es Ruby (lo dejamos para otro día), sino Scheme. En lo que se refiere al principio de mínima sorpresa, apostaría a que Scheme gana a cualquier otro. Incluso ganaría el concurso al lenguaje más aburrido si no fuera por la recursión, por lambda y por su historia.