Showing posts with label el arte de la programación. Show all posts
Showing posts with label el arte de la programación. Show all posts

Tuesday, April 17, 2012

Mi caso contra OpenGL


OpenGL sirve para hacer gráficas. De acuerdo a la Wikipedia: OpenGL (Open Graphics Library) es una especificación estándar que define una API multilenguaje y multiplataforma para escribir aplicaciones que produzcan gráficos 2D y 3D. La interfaz consiste en más de 250 funciones diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de primitivas geométricas simples, tales como puntos, líneas y triángulos. Fue desarrollada originalmente por Silicon Graphics Inc. (SGI) en 1992 y se usa ampliamente en CAD, realidad virtual, representación científica, visualización de información y simulación de vuelo. También se usa en desarrollo de videojuegos, donde compite con Direct3D en plataformas Microsoft Windows.

Y este tema me interesó hace tiempo, pero hasta ahora que estoy dando un curso de graficación en la Facultad de Ciencias de la UNAM, decidí aplicarme y ver qué tanto se podía hacer en OpenGL. Hallé de entrada que hay muchísima documentación y por ende, es fácil encontrar ejemplos, tutoriales, etc. En Google se pueden ver montones de imágenes muy bien logradas con esta biblioteca gráfica. Sin embargo, después de un par de meses de estar lidiando con este asunto encontré que hay cosas que no me convencen. He aquí algunas de ellas:

OpenGL tiene sus virtudes, pues se puede instalar prácticamente en cualquier herramienta de programación. Sin embargo, para cada una hay que seguir pasos diferentes. No tiene un procedimiento estándar para esto y cambia de acuerdo al marco de trabajo que quiera usarse.

  1. Para poder usar OpenGL y sacar provecho del mismo hay que pensar en modelos matemáticos. Uno lo que hace, al programar en OpenGL es crear un medio ambiente tridimensional, el cual es muy flexible en muchos sentidos. El problema es que esto hay que tenerlo presente al programar. Por ejemplo, si queremos crear una esfera, tenemos que escribir el código que haga esto. Si queremos que tenga textura tenemos que escribir las instrucciones que nos permiten "texturizar" el objeto, etc. No obstante, nada de esto podemos verlo "en vivo", es decir, necesitamos correr el programa y ver si nuestro modelo tridimensional matemático es lo que estábamos esperando (cosa que pocas veces sucede).
  2. Las instrucciones de OpenGL vienen en diferentes "formatos". Se puede usar por ejemplo, una instrucción que contenga parámetros enteros, dobles, de punto flotante, y tendremos que hay tres instrucciones diferentes, una para cada formato, en donde se agrega a la instrucción lo siguiente: GLColor* (1.0, 1.0, 1.0);en donde el * representa 3f (3 coordenadas de punto flotante); 3d (tres coordenadas de resolución doble); 3i (tres coordenadas enteras). Esto en mi opinión puede ser muy versátil, pero es confuso.
  3. La curva de aprendizaje es realmente lenta, porque insisto y hago énfasis: OpenGL no tiene un sistema para ir visualizando cómo se van haciendo las cosas de acuerdo a las instrucciones escritas. Hasta que se compila puede verse el resultado final, que de verdad, pocas veces coincide con lo que estábamos pensando.

Para mi gusto, sería mucho más amable tener una herramienta al mejor estilo 3dStudio, el cual permite en muchos casos hacer las imágenes interactivas, poner texturas, luces, trayectorias de la cámara para ver cómo se va a mover, etc. Así como está OpenGL, deja mucho que desear.

Quizás para alguna aplicación específica sea la herramienta adecuada pero hasta el momento usar OpenGL como la biblioteca gráfica de programación, parece ser demasiado complicado y poco amable con el programador.

Tuesday, January 17, 2012

Donald Knuth en el Centenario de Alan Turing


El día 10 de enero del 2012, Donald Knuth, una de las “vacas sagradas” del cómputo cumplió 74 años. Hoy se encuentra en Suiza en donde dio una conferencia titulada “Siguiendo los pasos de Alan Turing“, en el homenaje al centenario del nacimiento de uno de los grandes pioneros de la informática.

Donald Knuth está ya retirado. Dice extrañar sus clases pero a cambio está contento de tener tiempo para dedicarse de lleno a completar su obra de vida: la colección de libros sobre el arte de la programación (muchos de ellos pueden conseguirse incluso en formato PDF). Cabe decir que el profesor Knuth no tiene correo electrónico para contactarlo y él mismo indica lo siguiente: “I don’t even have an e-mail address. I have reached an age where my main purpose is not to receive messages.’ — Umberto Eco, quoted in the New Yorker” (No tengo incluso cuenta de correo eléctrónico. He llegado a una edad en el que mi principal propósito es no recibir mensajes — Umberto Eco, citado en el New Yorker).

En junio participará, como uno de los 30 galardonados por el premio Turing, en el homenaje al centenario del nacimiento del científico británico en la ciudad de San Francisco. Participará como uno de los miembros de un panel que mostrará y analizará las contribuciones de Turing así como también dará sus puntos de vista del pasado y futuro de la computación.

La semana que viene estará en Manchester en la Conferencia sobre el centenario de Turing y en esos días también irá a Italia, en donde hablará de “Satisfiability and The Art of Computer Programming“.

Cabe señalar que Knuth usa un lenguaje de su propia invención WEB (presumiblemente  lo bautizó con el apodo de su suegra, pero no me consta -alguien me contó eso hace muchos años), el cual de acuerdo al autor, facilita la creación de programas legibles. Fue originalmente desarrollado al mismo tiempo que iba desarrollando TeX, el sistema de tipografía más famoso del mundo. Los usuarios/programadores de WEB (que no tiene nada que ver con la www de Internet), son capaces de:

  • escribir programas de calidad superior
  • producir documentación adecuada
  • reducir el tiempo de depuración
  • mantener los programas fácilmente en la medida que cambian las condiciones

La idea de Knuth es la de considerar un programa como una comunicación entre los seres humanos más que un conjunto de instrucciones en la computadora. El programa puede de hecho verse como un documento en hipertexto.

Mucha más información de este notable personaje del cómputo, aquí, su página personal.