lunes, diciembre 05, 2011

Las matemáticas en la creación del software

No soy matemático. No odio las matemáticas ni tampoco me apasionan. No soy un genio con ellas, ni un desastre tampoco, de hecho algunas personas me consideran bueno (yo no les creo). Pero es obvio decir que la matemática ha influido en casi cualquier cosa con que tengamos contacto en un día normal. El desarrollo de software no es la excepción.

He oído de a muchos programadores decir que no es necesario ser bueno en matemáticas para ser un buen programador. Por otro lado he leído a otros decir que los grandes (por ejemplo Dennis Ritchie) estudiaron primero algo relacionado con las matemáticas antes de dedicarse a la informática o creación de software. Y no lo sé, tal vez sea cierto o no, quizá no hay una respuesta. Yo apenas estoy conociendo este mundo, por eso no soy nadie para emitir juicios, pero sí para dar mi opinión.

 ¿Qué son las computadoras? ¿Qué son los algoritmos que la hacen funcionar? Claro, pudiéramos dar una definición técnica de estos conceptos, pero al final todo se reduce a números, ceros y unos: binarios.

Los que se manejan en este mundo de la computación y el desarrollo de aplicaciones saben que mientras más se acerca un lenguaje a la máquina más poderoso es.

El poder del lenguaje $P$ es inversamente proporcional al nivel del lenguaje $M$:
$$P\; \alpha \frac{1}{M}$$
Y mientras más bajo es el nivel, más riguroso es. Se trabaja más directamente con la máquina por lo que tenemos más control de manipularla al antojo ¿y qué dijimos que son las máquinas en esencia? una programación de ceros y unos: números.

Pero esto no se queda ahí, porque en la práctica me parece que solo los microprocesadores se programan en binario lo que se aleja un poco de nuestra área. A la hora de hacer un proceso en código nos vemos en la necesidad de crear, inventar una fórmula que según una entrada de datos nos acondicione una salida (escribiré sobre esto en otro post para no hacer muy largo mi estreno:-) ) y eso no se consigue de otra forma que no sea con la lógica-matemática, añadiéndole su pizca de creatividad que nunca se queda.

Entrando más de lleno en el asunto, realmente nunca he tratado de ver detrás de un método de una librería. Me refiero a cómo está hecho, qué tan eficiente es, cuál es la lógica que han seguido para lograr el resultado. Pero me atrevo apostar por sentido común que muchos de ellos están basados directamente en las matemáticas. Nosotros no hacemos nada más que utilizarlos sin indagar en su contenido, igual como usamos la luz, la computadora, el vehículo, etc.

 El que domina la ciencia de la precisión viene siendo como un ingeniero civil frente a un maestro constructor; como un cirujano frente a un teórico de medicina. Porque el que conoce los orígenes, el fondo, el meollo, la esencia de las cosas es quien más puede experimentar e inventar cosas nuevas. Los demás nos limitados a esperar resultados.

A mi me asusta pensar que para ser bueno desarrollando software haya que serlo en matemáticas, porque no lo soy, no a un nivel que se me pueda llamar "bueno" y quiero convertirme en un gran desarrollador. Me parece que ese es un miedo que tendré que dominar si es posible.


No hay comentarios:

Publicar un comentario

¿Qué opinas?