¿Matemáticas para Aprender a Programar?


Son muchos los que huyen a las matemáticas por haber tenido malas experiencias con ellas en el colegio, cuando comienzan sus estudios de programación, su curiosidad gana y se sienten intrigados en preguntar: ¿Se necesita saber matemáticas para aprender a programar? Eso es lo que vamos a tratar en este artículo, ¿realmente son necesarias? ¿Podemos simplemente obviarlas? ¿Trae beneficio saber de matemáticas a la hora de programar? Estas son algunas de las preguntas que se pueden estar haciendo, veamos qué podemos decir de todo esto.


Para empezar, cabe destacar que el hecho de que tú estés leyendo esto, ya sea en un equipo de escritorio, laptop, móvil, tablet o cualquier otro dispositivo, se debe al uso de las matemáticas. Así que pensemos, si las matemáticas son esenciales para todas las cosas que hace el ser humano, ¿qué nos hace pensar que la programación estará exenta? Entonces, naturalmente en la programación vamos a necesitar obligatoriamente saber matemáticas. En un artículo anterior ¿Qué tan difícil es aprender a programar?” habíamos dado una definición al concepto de “aprender a programar” ese mismo concepto lo vamos a usar ahora, y adicionalmente, vamos a hacer una excepción con la premisa “saber matemáticas” esto con el fin de establecer un nivel de conocimientos, es decir, las matemáticas son una sola, pero bien debemos saber que hay conceptos más abstractos que otros, y ese es el nivel de conocimientos que queremos establecer, qué nivel de conocimientos debemos alcanzar para aprender a programar, con esto y recordando la definición anterior, la verdad es que con aritmética básica podremos lograr nuestro objetivo, muchos cuestionaran esto, se opondrán y tal vez se burlen, pero siendo sinceros y totalmente directos, la verdad es que sí, vas a aprender a programar, vas a saber usar una sentencia if, entenderás cómo funciona una estructura de control, sabrás crear arrays, funciones y todos los conocimientos básicos de la programación sólo sabiendo aritmética básica, suma, resta, multiplicación y división.

Esto claramente es obligatorio ya que es casi seguro que en nuestros programas debamos realizar una suma, un claro ejemplo sería al recorrer un array con un bucle, siempre debemos usar alguna operación para hacer que el índice cambie de posición. El uso de operadores relacionales también serán de mucha importancia para evaluar una condición, entender un plano cartesiano, y algunos otros conocimientos serán suficientes, pero claro, para aprender a programar.

Ya visto esto, qué podemos decir cuando ya sepamos “programar” (nota que lo coloqué dentro de comillas), ¿sólo con saber aritmética básica seguirá bastando? Y me atrevo a decir que sí, podrás crear “programas” con estos conocimientos y un poco más, podrás seguir haciendo una página web, o algún juego, de verdad que sí, pero alto, hay que parar. ¿Es enserio...?

Sí, es enserio, podrás hacer todas esas cosas sin tener grandes conocimientos matemáticos, pero no todo es tan lindo como suena, podría sacar mi ego y decir que, una persona que piense de esa manera bajo ningún concepto se debe considerar programador, así que no sabrás programar, sólo sabrás escribir código, uno todo cutre que no sirva de nada. Con esto no me retracto con lo anterior dicho, pero si agrego que:

  1. Una persona así no puede ser considerado programador.
  2. Tus programas estarán tan mal hechos que no habría más remedio que empezar desde cero.
Una característica que debe tener todo programador es la de nunca limitarse en nada, debe de ser una persona muy completa capaz de resolver una gran cantidad de problemas sin importa de qué se trate. Así que vamos a entrar más a fondo con el tema, ¿son necesarias las matemáticas para aprender a programar?, yo preguntaría: ¿a qué matemáticas te refieres? Porque si hablas de integrales, calculo vectorial, álgebra, etc, no, para nada, no necesitas eso ni para aprender a programar ni para trabajar como programador, aunque con esto último debemos dejar algo en claro, la contabilidad también entra en las matemáticas, ¿qué pasaría si debo hacer un programa contable? A esto es a lo que quiero llegar con: ¿a qué matemáticas te refieres? Esto debe estar claro en las personas que quieran preguntar. Yo por mi parte me voy a centrar en una matemática muy abstracta, esas que ven los estudiantes de matemáticas, ingeniería, computación o de física, como el álgebra, el análisis matemático, el calculo, la geometría y topología, matemáticas discretas, matemáticas aplicadas, ciencias de computo y ciencias físicas, dejando así las matemáticas de más bajo nivel, como las matemáticas aplicadas a las ciencias sociales (economía, sociología, demografía, etc) a un lado.

¿Un programador debe tener grandes conocimientos matemáticos?



Esto ya lo veremos desde un punto de vista laboral, por razones obvias no hablaremos de una persona que quiera trabajar en un ámbito científico, puestos de investigación u otros derivados donde las matemática de alto nivel son absolutamente obligatorias. Nos vamos a centrar en un ámbito laboral más común, desarrollo de aplicaciones, creación de páginas web, creación de juegos, etc.

Y con esto, quiero volver a afirmar que no, no se necesitan grandes conocimientos matemáticos para lograr trabajar y crear cualquier proyecto de los antes mencionados ya que explícitamente no vamos a usar esos conceptos tan abstractos, en otro artículo mencioné que era descabellado usar una derivada al momento de crear una página web, definitivamente es muy loco (a excepción de algunos casos) pero no por ello queremos decir que las matemáticas de alto nivel sean innecesarias, para nada.

Las matemáticas las debemos de ver desde un punto de vista más técnico, porque aunque no las usemos explícitamente, en cada línea de código que escribamos en nuestros programas, estas se harán presentes, gracias a ellas nuestro cerebro adquiere habilidades lógicas mayores que las de otras personas, así seremos capaces de resolver problemas que seguramente otra persona no pueda. Esta es la opinión de un amigo que dijo cuando le pregunté: “¿Crees que un programador deba saber matemáticas”, espero algún día pueda compartir más de sus conocimientos en la página.

Sí, sin dudas. Si dejamos a un lado el aspecto matemático como componente directo del proyecto; cálculo de nóminas, cálculo de costos, etc. El aspecto intrínseco está presente en cada línea de código que escribes. Podríamos hablar de muchos casos y ejemplos. Pero por poner algunos de los más comunes, digamos que el cálculo de la complejidad ciclomática, la estimación de costo computacional y análisis de proposiciones siempre están en tu cabeza como a nivel subconsciente. Si sientes que incumples algunos de ellos se enciende una luz roja en tu cerebro y te das cuenta que hay que rectificar algo. Eso se obtiene por estudio y entrenamiento matemático. Este ejemplo que te pongo es solo por ser pragmático, pero lo cierto es que la correcta normalización de una base de datos es matemática, la comprensión de un hash es matemática, el uso de un árbol de decisión es matemática, la selección de una base numérica para trabajar es matemática, la selección de un algoritmo de búsqueda es matemática, etc... Hasta ahora te he mencionado los de uso común, si vamos al uso técnicas de IA, tan importante en algunos casos, desde luego los ejemplos son absolutos. De ahí la importancia de la matemática en la programación, no es, pienso yo, “escribí esta rutina y funciona”, es: “escribí esta rutina, funciona, y además está optimizada tanto como se pudiera aspirar”. No se trata de que funcione (eficacia), se trata de que funcione con el menor costo y con la mejor calidad posible (eficiencia). Pienso que todo está dado por el alcance que uno pretenda tener como programador. Si por ejemplo nuestra meta es diseñar interfaces gráficas mediante el uso de componentes preexistentes en bootstrap, difícilmente necesite algunos de estos conocimientos. Ahora si lo que te planteas (sin salir de las interfaces) es desarrollar una biblioteca de bajo nivel en C de efectos visuales para la animación de interfaces con efecto tridimensional, créeme que te van a resultar de mucha ayuda. Fuera de las interfaces es lo mismo, si te propones desarrollar una app de Realidad Aumentada con una Herramienta Autor y el uso de un lenguaje de script no creo que te haga falta. Si quieres desarrollar tu propio algoritmo de detección de patrones y optimización de falsos positivos, igualmente las matemáticas de alto nivel te van a resultar imprescindibles. Todo depende de cuáles sean nuestras metas. Así como cuál es el mercado al que aspiras y qué interesa a tus clientes potenciales.
Creo que las aspiraciones deben centrarse siempre en ser lo más integral posible. El valor auténtico del conocimiento es muchas veces intangible y esta no es la excepción. Las altas matemáticas, así como otros tantos conocimientos adquiridos, no tienen que tangibilizase para hacerse presente. Quizás no apliquemos directamente en muchos casos una integral o una derivada, u otro caso similar, pero cuando aprendimos a resolverlas nuestro cerebro desarrolló habilidades de análisis, lógica, comprensión numérica, etc, que de manera subconsciente aplicas en cada línea de código e incluso en tu vida diaria.


Un programador no se determina por la facilidad del mismo de escribir código, un programador representa más que eso, no podríamos decir que las matemáticas por no utilizarse de manera explícita son innecesarias, ya que de esa forma sólo conseguiríamos ir directo por el camino del programador mediocre, ese que no sepa qué rayos ha escrito y sólo se conforma con que funcione. Las matemáticas constituyen las bases de lo que actualmente conocemos como “programar” sin duda es un hecho que sin ellas no hubiésemos llegado hasta este punto. Así pues, todo estará determinado por la persona, hasta dónde quiere llegar, a qué objetivos apunta en su vida, si quieres ser conocido como un gran programador será inevitable tener estos conocimientos y más.

Ahora, si lo vemos desde un punto de vista inicial, es decir, aprendiendo a programar, representa grandes ventajas, una persona que haya estudiado funciones matemáticas se le hará muy fácil comprender las funciones en la programación, después de entender conceptos tan abstractos como el calculo del área por medio de una integral definida, realmente será muy sencillo comprender el uso y la funcionalidad de una sentencia if, las matemáticas de alto nivel hacen que nuestro cerebro sea más productivo, pudiendo adquirir conocimientos de manera más rápida, haciendo de la programación un estudio más divertido, sin estancarse por no comprender algo. Desde un nivel inicial hasta uno más avanzado, las matemáticas son indispensable para todo en la vida; para la programación también lo son.

Conclusiones: Las matemáticas y los programadores


Siendo franco y directo con las personas que leen esto, para aprender a programar sólo se necesita saber aritmética básica. Para trabajar como programador, los conocimientos matemáticos adquiridos en el bachillerato puede ser suficiente (y estoy seguro que así, tu trabajo realmente tendrá muchos fallos, además de tardar mucho tiempo en hacerlo), para algunos casos. Claro está que esto no podrá servir para todo. Podríamos complementar con saber matemáticas aplicadas a las ciencias sociales. Las matemáticas de alto nivel sólo son obligatorias en casos totalmente obvios, labores científicas, de investigación, estudio, software que mejore la tecnología actual, etc. No se necesita explícitamente las matemáticas de alto nivel para trabajar como programador.

Sin embargo, esto debe tener un estudio más a fondo, que no se usen de manera explícita no las hace inútiles, que seamos capaces de resolver problemas matemáticos tan complejos, nos ayuda mucho a la hora de resolver problemas ya sea de la vida cotidiana, o cuando estemos programando, nuestra capacidad de aprendizaje será mucho mayor, tendremos la posibilidad de entender cómo funciona nuestro compilador, ya que el mismo, está hecho con muchos conceptos matemáticos de alto nivel, con esto, la eficiencia de nuestros programas será notoria, usaremos menos líneas de código y el mantenimiento será menos tedioso, las matemáticas de alto nivel constituyen el desarrollo de un gran programador, siempre las usamos, por eso su estudio no debe de ser menospreciado, mucho menos ignorado.


También te puede interesar:




2 comentarios: