¿Por qué la programación requiere una habilidad matemática?

Sospecho que su pregunta (basada en su redacción y su respuesta a un comentario) es realmente:
“Solo porque no fui a la universidad y no tengo habilidades matemáticas, ¿por qué no puedo conseguir un trabajo de programación?”
La universidad no te enseña tanto “cosas” como prueba de que tienes ambición, te enseña la disciplina para aprender y te obliga a aplicarte.
Si obtiene ese diploma, su posible empleador no espera que sepa todo en su primer día, pero puede esperar que tenga la ambición y la tenacidad para aprender lo que se necesita de una manera autodirigida.
Como menciona Doug Leary, la programación y las matemáticas utilizan funciones similares del cerebro, y ejercitar una fortalece a la otra.
Nunca consideraría contratar a un programador sin una sólida formación en matemáticas y física.
Espero que todos los miembros de mis equipos puedan comprender (al menos al azar) todos los aspectos del proyecto y contribuir al diseño y la arquitectura del sistema.
Es por eso que cada universidad de ingeniería requiere créditos serios de cursos de disciplina cruzada. Soy un EE Tomé mucho cálculo. Mucha física Algo de química.

Sin esos bloques de construcción fundamentales, los twiddlers pueden crear páginas web en otro lugar (intenta no ofenderte demasiado).

¿Quiere decir, más allá del álgebra booleana, la aritmética básica y la geometría elemental? No lo hace. Armado solo con ese conocimiento, ya puedes escribir algunos programas bastante complicados, entretenidos y útiles.

Pero por simple que sea, esos son conceptos matemáticos.

Las primeras computadoras, como su nombre podría sugerir, se utilizaron en gran medida para resolver números: resolver problemas matemáticos, estadísticos o físicos. Además, las personas que idearon por primera vez las ideas teóricas que condujeron al desarrollo de la computadora digital fueron matemáticos: Babbage & Lovelace, von Neumann, Turing, … Sin mencionar el trabajo posterior realizado en el desarrollo, perfeccionamiento y análisis de algoritmos y comparar su eficiencia en el campo de la informática teórica (teoría de la computabilidad, teoría de la complejidad computacional, etc.)

Por lo tanto, es fácil ver cómo surgió este meme cultural del pensamiento de la informática y las matemáticas, y, por extensión, la programación, como intrínsecamente entrelazado. Pero ahora que todos esos fundamentos teóricos están firmemente establecidos, se pueden crear sistemas de software complejos sin aplicar mucho más que la aritmética básica. Hay aplicaciones y campos en los que es esencial una comprensión más profunda de las matemáticas, pero es posible que nunca necesite aventurarse allí, o podría estar utilizando una biblioteca de recuadro negro para proporcionarle esas características.

Ser capaz de seguir e implementar interacciones asincrónicas complejas y gestionar la concurrencia y las conexiones débiles de una manera sólida es mucho más esencial para un programador que las habilidades matemáticas avanzadas, al menos en estos días, cuando rara vez escribes tus algoritmos básicos desde cero. Por otro lado, tener más herramientas en su caja de herramientas nunca está de más, y una buena comprensión de las matemáticas avanzadas podría llevarlo a algunos proyectos interesantes “de vanguardia”, si está tan dispuesto. Sin embargo, no todos los proyectos interesantes son matemáticos pesados, o puede manejar las partes de ellos que están usando componentes listos para usar.

La noción de que las computadoras y la programación son una forma aplicada de las matemáticas no es esencialmente errónea. Pero para muchas tareas de programación reales, hacer mucho más con esa información que simplemente reconocerlo no viene al caso. No necesita matemática avanzada para escribir, por ejemplo, un cliente de correo electrónico.

La palabra clave aquí es “programación”. Técnicamente, hacer eso solo no requiere ninguna matemática, excepto una rama. Por ejemplo, si tuviera que implementar una función matemática altamente compleja como programador de rango y archivo, probablemente lo especificaría alguien más como un científico o matemático. Su tarea sería traducirlo a variables y al lenguaje en sí. Podría decirse que simplemente para programar no necesita comprender realmente las matemáticas subyacentes.

Esa única rama de las matemáticas que necesita saber como el dorso de su mano es la lógica booleana, es decir, Y O O NO y todas las reglas. Simplemente no puedes escapar haciendo nada no trivial sin esto. Es probable que ese álgebra más básico le consiga el 95% de todas las tareas de programación, suponiendo que simplemente esté programando los diseños y requisitos de otras personas.

Ahora, si está desarrollando sus propios algoritmos y soluciones de software y, sí, si esas industrias tienen un negocio basado en las matemáticas, le corresponde tener una comprensión más que pasajera de las matemáticas, al menos lo suficiente como para conversar con los expertos en la materia. campo. Incluso entonces, todavía no llamaría a eso un requisito para ser “experto en matemáticas”.

El otro quizás el 5% de la programación (en términos de profesiones) es donde realmente tienes que tener la habilidad matemática exacta. Al igual que programar una aplicación cuantitativa, creo que también deberías ser un experto en matemáticas.

Dicho todo esto, ¡es de gran ayuda en la programación general tener habilidades matemáticas generales!

Su presunción es correcta, no lo es.

Para la programación general, no necesita matemáticas avanzadas, apenas necesita matemáticas de secundaria.

Para el registro, obtuve una B en matemáticas en la escuela secundaria, tuve la suerte de obtener eso, y no he hecho ninguna matemática desde entonces, he trabajado como programador durante casi 20 años, en el sector financiero durante la mayor parte, Trabajé para bancos y nunca necesito habilidades matemáticas fuertes.

He escrito una aplicación de dibujo vectorial, necesitaba repasar un poco la geometría, pero eso es todo.

La programación requiere pensamiento lógico, una mente analítica y trabajo duro. En algunos campos, encontrarás matemáticas, en la mayoría, no.

El 90% de los desarrolladores no necesitan la mayoría de los conceptos que tienen en las lecciones de matemáticas, y cuando los necesitan, generalmente pueden buscarlos. Pero necesitarán un pensamiento abstracto, y conocer algunas matemáticas se correlaciona con esta habilidad. En el ejemplo de la pregunta hay un concepto de igualdad, que a menudo es difícil de comprender para las personas. Hay muchas definiciones de “lo mismo”, y este código no es necesariamente trivial. Hay un caso, por ejemplo, cuando $ var y $ var2 tendrán exactamente el mismo tipo y exactamente el mismo valor binario y, sin embargo, no serán iguales.