Ilustraciones Artisticas para Resultados Más Productivos en Ingeniería

Aprovechando/Combinando la Naturalidad del Arte y la Exactitud de la Ciencia


[Volver al Índice del Sitio]

Jueves, Agosto 9, 2012, 3:25 AM
__________________________________________________
__________________________________________________

¿“Envidia” de quienes parecen tener todas sus notas muy ordenadas por el simple hecho de que “son más estéticas que lo que yo anoto” (si es que acaso suelo anotar algo)? Yo diría que son las mismas técnicas de las que he demostrado su uso en varios temas. Y esto no es un tema fuera de lugar en programación e informática sino que es una técnica aplicable a la programación y es parte inseparable del código fuente y de la documentación, aunque no lo parezca. Además, la enorme mayoría de veces que se necesita dibujar un concepto o escribir una especificación es preferible escribirlo con papel y lápiz porque eso sigue siendo mucho más accesible y expresivo que trabajar con la interfaz típica de la computadora.

- Colorear el fondo del texto/código agrupando lo relacionado con los mismos colores (pero sin caer en uso excesivo del coloreado, en cosas que no tienen importancia o significado particular).

- Hacer dibujos y simulaciones animadas que demuestran cómo funciona una secuencia lógica o que sea informativa.

- Acompañar los dibujos con texto que describe cada paso de forma precisa y que sea posible memorizar (para asegurar la máxima efectividad y pureza de lo escrito).

- Hacer índices jerárquicos en forma de árbol, para crear "librerías de referencia".

Estas técnicas son mejor aplicadas cuando hay cosas puntuales que describir. No hay de qué preocuparse si son bosquejos rápidos desordenados o si se trata de tener un verdadero borrador desordenado tratando de barajar ideas (hasta la computadora tiene ese tipo de borradores desordenados así que es natural):


En lo personal, cuando quiero tener un dibujo explicativo para guardar y mostrar formalmente, rara vez necesito una sola iteración del dibujo, y más cuando es sobre algo complejo y detecto un error en el momento o peor aún, posteriormente cuando gano más experiencia pero ya hice un dibujo complejo totalmente a mano pero erróneo (por eso es bueno no esforzarse demasiado en cuanto a presentación al primer intento).

Cuando hago esquemas me centro solo en dibujar los pasos concretos para que cualquiera pueda entender lo que está pasando (y para que yo mismo pueda acordarme de lo que hice, una vez que todos los datos operativos de la solución y del problema se hayan descargado de mi memoria), como en estos temas:

PHP: Convertir Error 404 en Redirección 301, etc...
Sección de Nanoalgoritmos
Técnicas de Programación



--- Lógica del Reemplazo del Error 404 por Redirección 301 ---

Paso 0:   El cliente pide leer un documento web, que no es encontrado.

Paso 1:   El motor de PHP precede el envío del documento web.

Paso 2:   Ver si se produce un error 404 interno al servidor (aún no enviado).
          Si es así, vamos al paso 3.

Paso 3:   PHP mira si "missing.php" (la página encargada de mostrar
          errores 404) envía una cabecera de redirección.

Paso 3.2: Si es así, el servidor reemplaza internamente el error 404
          por la condición 301 de redirección (pero todavía no la envía).

Paso 4:   Se prepara la respuesta HTTP y su contenido.

Paso 5:   La respuesta HTTP viaja por la red hasta llegar al cliente.


También hago dibujos informativos, que no muestran una lógica sino que solo datos, como este, que muestra a grandes rasgos el mapa de memoria libre en el primer Megabyte de memoria RAM de una PC (esto lo dibujé hace 3 años pero lo escaneé recientemente):



--- Mapa de Memoria Libre del Primer Megabyte Físico de la PC ---

Mapa 1: Memoria libre desde 500h hasta 7BFFh

Mapa 2: Memoria libre desde 7E00h hasta 7FFFFh

Mapa 3: Memoria libre desde 80000h hasta 9FBFFh

  NOTA: Como se puede observar, todos estos rangos son
        memoria totalmente continua, a excepción del Mapa 1
        y el Mapa 2, entre 7BFFh-7E00h, en donde el sector
        de boot usa la memoria entre 7C00h-7DFFh, y podemos
        usarla sin problemas a menos que estemos actualmente
        corriendo código (de boot) en esa región de memoria.



Finalmente, las cosas que me quedan más ordenadas y con la más alta calidad de explicaciones las escaneo y las convierto a mis documentos indexados al estilo CHM (que yo llamo SourceDoc). De esta forma no solo se preservan permanentemente, sino que me permiten complementar la documentacion y el código que deseo que sea excepcionalmente fácil de entender por cualquiera.

La técnica de ilustrar los conceptos con dibujos es una de muchas técnicas necesarias para progresar en temas especialmente escabrosos, y aunque no sirve para resolver todas las dificultades, plasmar las ideas de esta forma sirve para encontrar incoherencias y tener un mejor estado mental.

Por experiencia sé que no siempre hay suficiente tiempo para hacer dibujos de todo, y allí es cuando entra la técnica de simplemente escribir sin falta, rápido, inmediatamente las ideas altamente valiosas que se le ocurran a uno, en la PC o en un papel, y después mantenerse en un estado constante de implementación documentando aunque sea con muchos comentarios en el código.

A veces es posible que un dibujo pueda hacer más estorbo que ayuda, y se nota por lo poco explicativo que nos queda el dibujo. En esos casos es mejor recurrir a una técnica de identificación de palabras claves, categorías, jerarquización y explicación de virutas lógicas y de virutas de código fuente.

Pero lo más importante es que nuestro dibujo, arte, sonidos, animaciones, etc., cumplan con su objetivo: Si estos no logran explicar los conceptos más claramente de lo que lo haría un estándar o un experto que se sepa explicar, entonces hemos fallado; pero si permiten resumir lo que escribamos y permiten entender todos los conceptos globales solo al seguir la secuencia del dibujo, entonces no importa lo simple o complejo de nuestro dibujo, porque ha tenido éxito en facilitar la comprensión de un concepto.

Y en la medida de lo posible, las animaciones deben ser plantillas programables en la computadora, de dibujos generados dinámicamente, para generar en tiempo real la representación de un fenómeno, secuencia lógica o problema y solución (exactamente igual que las plantillas que se usan a partir de las que un programa genera una URL sustituyendo con expresiones regulares, o un conjunto de offsets en memoria o archivo que tienen un significado genérico convertido a valores dinámicos en tiempo real, que no es más que una unificación mayor y más funcional, más inteligente, entre ciencia, computadoras y arte, que es como debe ser, siendo la computadora solo una herramienta para expresarnos como mejor nos resulte).

[Volver al Índice del Sitio]