2009-04-02

Arruine su vida por treinta guitas (c-2): Interludio apenas justificatorio

Exageremos un poco. Así como no se puede elegir por separado una acción y sus consecuencias*, a duras penas se puede escapar a los mutuos condicionamientos entre lenguajes de programación** y proyectos.

Severian me señala, con toda corrección, que Mathematica --un sistema de álgebra por computadora que le paga los delirios a Stephen Wolfram-- grafica también que da miedo, y yo le puedo acotar que Mathworld, la enciclopedia matemática de Eric Weisstein et al., está llena de ejemplos de eso, y probablemente otros sitios del mismo emporio aún más.

Yo le contraseñalaré que hay ecuaciones o procesos que termina uno de entender sólo cuando las ha modelado con un programa primitivo y procedural, y aún recién después de jugar con ese programa (y sus variantes) durante un buen rato. No es trivial que el entorno de programación sea gentil con uno, admitiré eso, pero tampoco es de hombres llorar por tener que arreglárselas con un lenguaje primitivo. Los bochos que levantaron la catedral que es el Fractint --el primer programa libre que vi en mi vida-- lo hicieron línea a trabajosa línea de C y assembler 80386, si hoy se puede creer tal cosa. También estaba el monstruo que programaba --en papel, al principio, y en Turbo Pascal-- las tapas de la Axxón, Rodolfo Contín...

En cualquier caso, estoy con Glynn y Gray: el uso de Mathematica no pudre la mente. Pero tampoco es éste el lugar donde se luce, sino en ser la sombra amenazante que le quita el sueño al científico publicado.


Dejar caer nombres no es lo mío. Vean las búsquedas, si no.

(*) Salvo que se haga trampa y se den por iguales secuencias de acciones con diferencias pequeñas pero significativas: una pastillita aquí, una dosis mayor o menor allí, tantos grados a un lado u otro al apuntar.

(**) Quizás debiera especificar: implementaciones de tal o cual lenguaje; pero es rara la implementación que no tiranice a la vez que libera.

Labels:

4 Comments:

Blogger Severian said...

Me han tocado pocas situaciones en las que haya sido necesario bajar hasta un C++ o Fortran para resolver algun problema matemático. El tipo de problemas que me tocan se refieren en general a resolución numérica de sistemas de ecuaciones diferenciales no lineales. Y resulta que Mathemática es muy bueno para eso: tiene una implementación del llamado "shooting method" que funciona en la mayoría de los casos casi sin tuning. La única vez que tuve que volver a las Numerical Recipes fue para implementar el llamado "relaxation method" (que es uno de los métodos más eficientes que concozco para resolver ese tipo de problemas) y que por alguna razón Wolfram había olvidado en su versión 5. Terminamos con un programita híbrido donde una subrutina en Fortran era llamada desde dentro de un programa de Mathematica. La versión 6 de Mathemática incorporó el "relaxation method" dejando obsleto nuestro engendro.

Donde es casi imprescindible la programación en lenguajes de mas bajo nivel, es en el área de "simulaciones computadas". Si lo que ud quiere es crear un programa con un cierto número de partes elementales, que reproduzcan las partes de un sistema físico y que intereaccionen de modo similar, el uso de Mathemática limitará seriamente el número de partes, reventando la capacidad de cualquier computadora. O sea que se necesita algo donde todo el esfuerzo del silicio esté puesto en el problema y no en controlar sutilezas o memorizar datos innecesarios, y eso es, claro, mucho más facil de lograr con C++ o similares.

4/4/09 16:39  
Blogger Peste said...

"Engendro"? Si eso no es llorar, Severian, no sabria encontrar mejor ejemplo. Cualquier dia se va a quejar de que Mathematica sea extensible, voto a Stallman.

Esto aparte, yo tengo la desconfianza de los ignorantes en este caso. El puente entre conocer un algoritmo, y usar una implementacion hecha por algun otro sin siquiera leer el codigo, me resulta un poco demasiado en bajada y bien engrasado para mi gusto. De ahi mi preferencia por los metodos "desde abajo". Los construccionistas me han podrido la cabeza.

4/4/09 17:01  
Blogger Severian said...

Era lindo el "engendro", de vez en cuando me tiento con revivirlo, pero el tiempo es tirano....

El puente entre conocer un algoritmo, y usar una implementacion hecha por algun otro sin siquiera leer el codigo, me resulta un poco demasiado en bajada y bien engrasado para mi gusto.

La mano es algo así: quiero el resultado lo antes posible, porque no es la solución del problemita matemático mi interés principal, sino la elucidación de sus consecuencias físicas. Entonces lo más pragmático es probar con Mathemática, intentando tener una solución en el menor número posible de líneas. Si sale, acto seguido me olvido del software y me dedico a su interpretación. Si no sale, pedaleo un poquito dentro de Mathemática para ver si se puede lograr lo que en primera instancia se me negó. Si sigue sin salir, puteo, me arremango y abro los libros de algoritmos de cálculo y me pongo a estudiar cada uno de los muy putos detalles hasta lograr la solución. El punto es que casi nunca es necesario llegar a esta última etapa, y cuando lo es, todo el trabajo extra sirve para decir muy poco acerca de la cuentión de mi interés, que sigue siendo la física, siendo la matemática solo un paso intermedio. No se si me explico.

4/4/09 19:03  
Blogger Peste said...

La mano es algo así...

Esta usted siendo meridianamente claro. Quizas yo no lo soy en expresar que mi postura no es mas que un prejuicio y que, como tal, su campo de aplicacion es mas limitado que lo que quiero creer: Redondeando, que si estuviera en un espacio ajeno, ya hace rato que me hubiera llamado a silencio.

4/4/09 23:29  

Post a Comment

<< Home