¿Son las matemáticas necesarias para la programación? [cerrado]

117

Por casualidad, debatí con un amigo durante la época universitaria si las matemáticas avanzadas son necesarias para cualquier programador veterano. Solía ​​discutir ferozmente contra eso. Dijo que los programadores solo necesitan conocimientos matemáticos básicos de la escuela secundaria o de la universidad de año nuevo, ni más ni menos, y que casi todas las tareas de programación se pueden lograr sin siquiera la necesidad de matemáticas avanzadas. Sin embargo, argumentó que los algoritmos son un activo fundamental y imprescindible para los programadores.

Mi postura era que todos los avances de las ciencias de la computación dependían casi exclusivamente de los avances en matemáticas y, por lo tanto, un conocimiento profundo de las matemáticas ayudaría enormemente a los programadores cuando trabajan con problemas desafiantes del mundo real.

Todavía no puedo decidir de qué lado de los argumentos es correcto. ¿Podrías contarnos tu postura, desde tu propia experiencia?

simsim
fuente
7
Llamé a mi maestro de matemáticas diez años después solo para decirle que nunca usé matemáticas avanzadas en toda mi carrera. Dick se mueve, lo sé, ¡pero gran pregunta! Mas uno.
Chris McCall
Consulte la respuesta más votada a esta pregunta .
Boris Stitnicky
Más bien que. Cerrar, esto debería migrarse a los programadores.
Chris Cudmore

Respuestas:

111

Para responder a su pregunta tal como se planteó, tendría que decir: "No, las matemáticas no son necesarias para la programación". Sin embargo, como han sugerido otras personas en este hilo, creo que existe una correlación entre comprender las matemáticas y ser capaz de "pensar algorítmicamente". Es decir, poder pensar de forma abstracta sobre cantidad, procesos, relaciones y prueba.

Comencé a programar cuando tenía unos 9 años y sería exagerado decir que había aprendido muchas matemáticas en esa etapa. Sin embargo, con un poco de esfuerzo pude entender variables, bucles, declaraciones goto (perdón, era Vic 20 BASIC y aún no había leído ningún Dijkstra) y geometría de coordenadas básicas para poner gráficos en la pantalla. .

Eventualmente llegué a completar una licenciatura en Matemáticas Puras con una especialización en Ciencias de la Computación. Aunque me centré principalmente en el análisis, también estudié bastante matemáticas discretas, teoría de números, lógica y teoría de la computabilidad. Además de poder aplicar algunas ideas de estadística, teoría de probabilidades, análisis de vectores y álgebra lineal a la programación, estudié pocas matemáticas que se aplicaban directamente a mi programación durante mi licenciatura y la programación comercial y de investigación que hice después.

Sin embargo, creo firmemente que los métodos formales de pensamiento que las matemáticas exigen (razonamiento cuidadoso, búsqueda de contraejemplos, construcción de bases axiomáticas, detección de conexiones entre conceptos) han sido de gran ayuda cuando he abordado proyectos de programación grandes y complejos.

Considere la forma en que los atletas entrenan para su deporte. Por ejemplo, los futbolistas sin duda dedican gran parte de su tiempo de entrenamiento a las habilidades básicas del fútbol. Sin embargo, para mejorar su estado físico general, también pueden pasar tiempo en el gimnasio en bicicleta o en máquinas de remo, haciendo pesas, etc.

El estudio de las matemáticas se puede comparar con el entrenamiento con pesas o el entrenamiento cruzado para mejorar la fuerza mental y la resistencia para la programación. Es absolutamente esencial que practique sus habilidades básicas de programación, pero estudiar matemáticas es un ejercicio mental increíble que mejora su capacidad analítica central.

Mark Reid
fuente
6
Me gustaría agregar que las matemáticas no son solo un entrenamiento con pesas para tu fuerza mental, sino que también abren la puerta a nuevos problemas y soluciones. Por ejemplo, durante mi pasantía en procesamiento de imágenes, no hay forma de que pueda implementar nuestros algoritmos de eliminación de ruido sin un conocimiento profundo de las PDE. El código resultante fue simple, pero muy preciso. Y las matemáticas son lo que nos llevó allí. Aún más sorprendente es la belleza de estas fórmulas. Una pequeña expresión PDE puede traducirse en unas pocas páginas de código. Sin la fórmula inicial, es difícil ver cómo terminaría con ella.
Joe
Las matemáticas no son necesarias para la programación, porque la programación es matemática. Puede ser buena matemática o mala matemática (como cuando la llamada larga del orangután se transcribe al lenguaje Ook ), pero siempre que un programador diseña un modelo de objeto de algo, ze está (generalmente sin saberlo) realizando un acto matemático. Entonces, de nuevo, uno no necesita leer libros de matemáticas para programar, pero eso no cambia nada en el hecho de que la programación es matemática, y que (como dijo Euclid), no hay un camino real hacia eso.
Boris Stitnicky
56

Si bien es posible que las matemáticas avanzadas no sean necesarias para la programación (a menos que esté programando la capacidad de matemáticas avanzadas), el proceso de pensamiento de la programación y las matemáticas son muy similares. Comienzas con una base de cosas conocidas (axiomas, teorías previamente probadas) y tratas de llegar a un lugar nuevo. No puede omitir pasos. Si omite los pasos, debe completar los espacios en blanco. Es un proceso de pensamiento crítico que hace que los dos sean increíblemente similares.

Además, tanto los matemáticos como los programadores piensan críticamente en abstracto. Las cosas del mundo real están representadas por objetos y variables. La capacidad de traducir de lo concreto a lo abstracto también vincula los dos campos.

Existe una gran posibilidad de que si eres bueno en uno, probablemente lo seas en el otro.

Jarrett Meyer
fuente
Y entonces se podría decir que alguien que hace muchos crucigramas o juega Scrabble tiene más probabilidades de ser bueno programando que alguien que no lo hace. La relación parece tener que ver con la probabilidad más que con una dependencia estricta.
Liam
El rigor y la disciplina de resolver un problema en matemáticas se traduce en programación. Debe tener la capacidad de deconstruir un problema y abordarlo primero desde la dirección obvia y luego desde direcciones más creativas en ambas disciplinas.
Bramha Ghosh
4
Dos grandes programadores que admiro mucho no estudiaron Ciencias de la Computación, sino que se formaron como matemáticos y simplemente cambiaron de carrera: Miguel de Icaza y Alexander Stepanov. Por cierto, Stepanov dijo una vez que mientras se trabaja en matemáticas "no se empieza con axiomas: se acaba con axiomas". : D
Joe Pineda
@Liam: se trata de hacer coincidir patrones y hacer malabares con las cosas en la memoria a corto plazo. Ambas actividades requieren esas habilidades.
jcolebrand
+1 para "Hay una muy buena posibilidad de que si eres bueno en uno, probablemente serás bueno en el otro".
Thorbjørn Ravn Andersen
39

informática! = programación

Bien, en serio, conozco buenos y malos programadores que se especializan en inglés y psicología y algunos que se especializan en informática. Algunos tipos muy famosos que admiro como desarrolladores no tenían experiencia en informática. Larry Wall (Perl), por ejemplo, era lingüista. Por otro lado, es útil saber algo sobre el dominio en el que está trabajando porque entonces al menos puede ver si sus datos tienen sentido y ayudar a sus clientes / usuarios a profundizar en lo que realmente quieren. Y sí, está el problema de la complejidad computacional y las estructuras de datos eficientes y la corrección del programa. Eso es algo que aprendes en Ciencias de la Computación y es útil saberlo en casi cualquier dominio, pero no es necesario ni suficiente.

David Nehme
fuente
12
Creo que la mejor cita que he escuchado es "La informática no se trata más de computadoras que la astronomía de telescopios". (Dijkstra)
tloach
5
Creo que stackoverflow.com se creó básicamente para superar este tipo de respuestas de una sola línea, pero hay 15 personas de ideas afines que elevaron esta respuesta inútil a la cima. No tengo nada personal contigo, sin embargo, he marcado tu respuesta como "ofensiva". Es así al menos para mí.
simsim
2
@simsim: Me parece ofensivo que la gente piense que un título en informática se trata de alguna manera de programación.
tloach
3
@simsim: No importa lo que Joel y Jeff tuvieran en mente cuando crearon este sitio web. Se trata de crear una comunidad en la que los programadores se ayuden entre sí. Creo que la respuesta corta de David es acertada. +1
Scottie T
@ Scottie: si se tratara de "crear una comunidad en la que los programadores se ayuden entre sí", los foros y las listas de correo habrían sido suficientes. Tal vez fui un poco duro en mi respuesta, pero fue sorprendente ver a 15 usuarios votar por una "respuesta" completamente desorientada, bueno, antes de editar, por supuesto. :-)
simsim
29

Creo que voy a ser la primera persona en decir que haces necesidad de matemáticas. Como han dicho otros, las matemáticas no son tan importantes para ciertos aspectos del desarrollo, pero los fundamentos del pensamiento crítico y el análisis estructurado son muy importantes.

Más aún, las matemáticas son importantes para comprender muchos de los fundamentos que intervienen en cosas como programadores, optimizaciones, clasificación, administración de protocolos y una serie de otros aspectos de las computadoras. Aunque las matemáticas involucradas desde un nivel de cálculo no son complejas (en su mayoría álgebra de secundaria), las teorías y aplicaciones pueden ser bastante complejas, ya que una sólida comprensión de las matemáticas a través del cálculo será de gran beneficio.

¿Puedes arreglártelas sin él, absolutamente, y no debes dejar que un conocimiento menos profundo de las matemáticas te detenga, pero si tuvieras la oportunidad, o la inclinación, estudiaría tantas matemáticas como pudieras, cálculo, teoría numérica, lineal? álgebra, combinatoria, aplicaciones prácticas, todo ello tiene aplicaciones tanto prácticas como teóricas en una amplia gama de la informática.

He conocido a personas que tuvieron mucho éxito en ambos lados de la valla (aquellos sin un fuerte enfoque en matemáticas y aquellos que fueron a la escuela para física o matemáticas), pero en ambos grupos disfrutaron de los problemas numéricos y aprendieron sobre algoritmos y teoría matemática. .

GrayWizardx
fuente
Secundo que. Aunque uno puede arreglárselas sin él, ¿se arrepentirá de su decisión? Si espera tener incluso un trabajo moderadamente emocionante / desafiante, las habilidades matemáticas que adquirió ciertamente lo ayudarán.
Andras Vass
¡Lo suficientemente justo! GrayWizardx y otros: Como autodidacta, ¿qué recomienda en términos de materiales de lectura? Me desconcertó enormemente la forma asesinamente mala en que me enseñaron las matemáticas cuando era más joven. No quiero echar la culpa a otra parte, pero las matemáticas se presentaron con saña. Ahora es el momento de canjear. ¿Qué tan FÁCIL es aprender las matemáticas descritas aquí (cálculo, álgebra lineal, matemáticas discretas, etc.) por su cuenta? ¿Existe un conjunto particular de libros de texto recomendado para este enfoque? ¡Un título universitario ya no es una opción!
Emmel
1
@Emmel, de hecho vi "La guía Manga para las matemáticas" y "La guía Manga para el cálculo" en un Barnes and Noble, y sé que vi una "Guía completa de idiotas para el álgebra lineal" el otro día. En cuanto a los recursos reales, solía haber excelentes sitios web de matemáticas (para estudiantes, etc.) pero no estoy seguro de cuántos de ellos todavía existen. Una cosa que hago de vez en cuando es ir a un colegio comunitario y "auditar" las clases de matemáticas (tómalo para aprobar / reprobar) y simplemente obtener un repaso. No lo he hecho en 5-6 años, pero fue bastante útil la última vez.
GrayWizardx
26

Tengo una licenciatura en matemáticas, pero no recuerdo haber requerido esa matemática una sola vez en mi carrera. Fue útil en términos de entrenar mi mente para el pensamiento lógico, pero no he escrito ningún código usando dinámica de fluidos, teoría cuántica o cadenas de Markov. (El último es el más probable, sospecho).

La mayoría de los desarrolladores de líneas de negocio no necesitarán matemáticas avanzadas la mayor parte del tiempo. A veces, conocer la trigonometría puede ayudar, y ciertamente ser capaz de comprender suficientes matemáticas para implementar algoritmos descritos matemáticamente puede ser importante, pero ¿más allá de eso? Nah.

No olvide que la mayoría de los programadores no están avanzando en la informática, están creando aplicaciones. No necesito tener conocimientos de ingeniería avanzada para conducir un automóvil moderno, aunque es casi seguro que ese automóvil haya sido mejorado a través de la ingeniería avanzada.

Jon Skeet
fuente
Estoy de acuerdo con la mayor parte de lo que dijo, sin embargo, ¿no podría decirse que muchos aspectos de la programación pueden ser notablemente más fáciles si se comprenden los principios matemáticos comunes? A veces, una fórmula para algo es mucho más fácil de programar que el algoritmo para alcanzar el mismo valor ... siempre que conozca esa fórmula
BenAlabaster
@balabaster: A veces, pero yo diría que eso no sucede muy a menudo. Del mismo modo, no es necesario conocer una fórmula de antemano para usarla. Ser competente en matemáticas es bueno, por lo que puede comprender las fórmulas cuando las ve, pero rara vez necesita matemáticas de nivel de grado en mi opinión.
Jon Skeet
11
¿Licenciatura en matemáticas? Entonces sabes que no son solo números. Tengo dos grados de matemáticas, y utilizar el contenido a menudo: el álgebra de Boole para analizar la lógica, los autómatas teoría del lenguaje / Simplificar / DSL para la construcción, el álgebra para análisis de rendimiento de orden O, etc
joel.neely
14

Yo diría que tener matemáticas de lógica avanzada (discretas) realmente puede ayudar. Eso junto con la teoría de conjuntos. Cuando se trata de programas informáticos comunes, estas disciplinas pueden ayudar mucho. Sin embargo, muchas de las otras matemáticas que tomé en la universidad fueron cálculo, que por lo que puedo ver, tenía un uso muy limitado. Dado que el 90% (o algo así) de la programación está haciendo aplicaciones comerciales con matemáticas muy simples, yo diría que, en su mayor parte, puedes arreglártelas con muy pocos conocimientos de matemáticas. Sin embargo, una buena comprensión del álgebra booleana, la lógica, las matemáticas discretas y la teoría de conjuntos realmente puede llevarlo al siguiente nivel.

Kibbee
fuente
14

Iré contra la corriente aquí y diré "Sí"

Paso de Ingeniería Civil a programación (¡El hormigón apesta!). Mi experiencia en matemáticas consiste en las materias habituales del primer año, cálculo de segundo y tercer año (ecualización diferencial, integraciones de volumen, series, transformaciones de Fourier y Laplace) y un curso de análisis numérico.

Encuentro que mis matemáticas son increíblemente deficientes para la programación de computadoras. Hay áreas enteras de matemáticas discretas y lógica que me faltan, y solo sobrevivo gracias a una extensa biblioteca de libros de texto, Wikipedia y Wolfram. La mayoría de los algoritmos avanzados se basan en matemáticas avanzadas, y no puedo desarrollar algoritmos avanzados sin hacer una investigación exhaustiva (esencialmente el equivalente a medio curso de trabajo). Ciertamente no puedo encontrar NUEVOS algoritmos, ya que simplemente no lo hago. No tiene los fundamentos matemáticos como los hombros de gigantes sobre los que pararse.

Chris Cudmore
fuente
¿Cuántos algoritmos fundamentales escribe realmente un programador medio? Supongo que el 80% de los trabajos de programación no implican matemáticas más allá del álgebra básica.
dbkk
@dbkk: La tarea más común de un programador promedio es el diseño del modelo de objetos, la "lógica comercial" de algún dominio. Y tal proceso no es más que matemáticas, aunque no es comúnmente reflejado por quienes realizan la tarea.
Boris Stitnicky
14

Depende de lo que está haciendo. Si haces mucha programación 3D, sin duda es necesario tener conocimientos de geometría 3D, ¿no estás de acuerdo? ;-) Si desea crear un nuevo formato de imagen como JPG o un nuevo formato de audio como MP3, también está bastante perdido si no puede entender una transformación de coseno o de Fourier, ya que estos son los conceptos básicos en los que se basa la mayoría de la compresión con pérdida . Muchos otros problemas pueden resolverse mejor si conoce bastante bien sus matemáticas.

También hay muchas otras tareas de programación que encontrará que no necesitan mucha matemática.

Mecki
fuente
13

Si encuentra el tema lo suficientemente fascinante como para publicar esto, simplemente continúe y comience a aprender. El resto vendrá de forma natural.

Daniel Situnayake
fuente
9

Sí, no hay necesidad de matemáticas avanzadas, si está programando un software comercial.

Sin embargo, cuando se trata de cosas duras como:

  • Calcular trayectorias para controlar un robot
  • Crear aplicaciones similares a la IA para respaldar la incertidumbre y el razonamiento automático
  • Jugando con gráficos y movimiento en 3-D

Algunos conocimientos matemáticos avanzados pueden resultar útiles. Y no es como si fueran problemas "fuera de este mundo".

Tuve que crear un software para tratar de "predecir" la cantidad de papel necesaria para una oficina (y fue un infierno simplemente encontrar la mejor manera de aproximar los valores).

Sin embargo, debe tener cuidado, porque es fácil perderse cuando se usan cosas avanzadas: hay un amigo que recurrió a usar Turing para almacenar el estado de un menú dinámico solo para mostrarlo correctamente, humm ... quizás estaba demasiado lejos en su imaginación.

rshimoda
fuente
puede agregar cosas como comprimir archivos o editar archivos MP3 o cualquier cosa que requiera comprender realmente lo que está haciendo la computadora, en lugar de simplemente crear un sitio web.
tloach
4
¿Cómo usó a Turing para hacer esto? ¿Una tabla ouija o una sesión espiritista?
Jared Updike
8

¿Qué tipo de programación?

En mi experiencia comercial, no he necesitado matemáticas avanzadas, pero esto depende en gran medida del campo en el que se encuentre.

Los gráficos por computadora requieren una gran cantidad de matemáticas avanzadas. Gran parte de la programación informática académica requiere matemáticas avanzadas.

Dicho esto, tiende a haber una correlación entre las personas que son buenas en matemáticas y las personas que son buenas en programación.

Espero que esta respuesta imprecisa ayude.

David Waters
fuente
6

Las matemáticas son necesarias para los desarrolladores en algunos campos, pero son casi inútiles en otros.

Si eres un desarrollador de juegos y tienes que trabajar mucho con la física, la comprensión de las matemáticas es crucial. Si trabaja con controles visuales avanzados, no podría hacer mucho sin la geometría. Si planea hacer algunos cálculos financieros, REALMENTE ayudaría tener un conocimiento sólido de las estadísticas.

Por otro lado, durante los últimos 5 años tuve solo 2 o 3 proyectos en los que se requería CUALQUIER cantidad de matemáticas. De estos, solo hubo un caso en el que una búsqueda en Google no ayudó.

Al final del día, incluso los cálculos financieros son a menudo algo que sus clientes hacen por usted y le brindan fórmulas para implementar.

Entonces, si está en el negocio de 'software aplicado', es probable que nunca use su título de matemáticas. Si estás en software académico, las matemáticas son cruciales.

Ilya Kochetov
fuente
A "desarrollador de juegos" agregaría "desarrollador de simulación". Recuerdo que en el 93 conducía por toda la ciudad tratando de encontrar un libro de matemáticas lo suficientemente avanzado como para explicarme cómo funcionaban los cuaterniones, de modo que pudiera codificar correctamente un algoritmo de recokining muerto. ¡Gracias a Dios por Internet hoy!
TED
6

Estoy de acuerdo con Chris. Yo también diría "Sí". Pero esto depende de su mercado como se indicó anteriormente. Si simplemente está creando algunas aplicaciones básicas "listas para usar" o herramientas de escritura para ayudarlo en su trabajo diario ... entonces las matemáticas no son tan importantes.

La ingeniería de soluciones de software personalizadas requiere mucha resolución de problemas y pensamiento crítico. Habilidades que definitivamente se mejoran cuando se tiene experiencia en matemáticas. Me especialicé en Matemáticas con mi título de Ingeniería en Computación y doy crédito a todos mis antecedentes orientados a las matemáticas en cuanto a por qué estoy donde estoy hoy.

Son mis 2 centavos, puedo decir por la lectura anterior que muchos no estarían de acuerdo. Animo a todos a que consideren que no estoy diciendo que no se puedan tener esas habilidades sin una formación en matemáticas, simplemente estoy diciendo que las habilidades son efectos secundarios de tener dicha formación y que pueden tener un impacto positivo en el software.

Mate
fuente
6

En mi experiencia, las matemáticas son necesarias en la programación, no se puede escapar de ellas. Toda la programación se basa en matemáticas.

El tema no es blanco y negro, sino más colorido. La pregunta no es si necesita o no matemáticas, sino cuánto. Los niveles más altos de matemáticas te darán más herramientas y abrirán tu mente a diferentes caminos de pensamiento.

Por ejemplo, puede programar si solo conoce la suma y la resta. Cuando se requiera multiplicar, tendrá que realizar muchas sumas. La multiplicación simplifica las sumas repetitivas. El álgebra permite simplificar las matemáticas antes de implementarlas en los programas. El álgebra lineal proporciona herramientas para transformar imágenes. El álgebra booleana proporciona mecanismos para reducir todas esas ifdeclaraciones.

Y no olvides al hermano de las matemáticas, la lógica y la filosofía. Logic le ayudará a hacer un uso eficiente de las declaraciones caseo switch. La filosofía te ayudará a comprender el pensamiento del tipo que escribió el código que estás modificando.

Sí, no necesitas mucha matemática para escribir programas. Algunos programas pueden requerir más matemáticas que otros. Un mayor conocimiento de las matemáticas le dará una ventaja sobre aquellos que tienen menor comprensión. En estos tiempos, las personas necesitan todas las ventajas que puedan obtener para obtener esos trabajos.

Thomas Matthews
fuente
6

Llevo 8 años programando profesionalmente y desde los 12 como hobby.

Las matemáticas no son necesarias, la lógica sí. Sin embargo, las matemáticas son terriblemente útiles, decir que no es necesario es como decir que para matar a un hombre no es necesario un arma, puedes usar un cuchillo. Bueno, es cierto, pero esa pistola lo hace mucho más fácil.

Hay un par de mínimos que ya debería cumplir. Necesita conocer las expresiones algebraicas básicas y la notación, y los equivalentes comunes de computadora. Por ejemplo, necesita saber qué es una exponencial (3 elevado al 3ro es 27), y la expresión informática común es 3 ^ 3. Las notaciones comunes para el álgebra cambian entre idiomas, pero muchos de ellos usan una metodología algo unificada. Otros (mirándote LISP) no lo hacen. También necesita conocer el orden de las operaciones.

Necesitas comprender el pensamiento algorítmico. Primero esto, luego esto, produce esto que se usa en este cálculo. Lo más probable es que lo entiendas o no, y es un obstáculo bastante difícil de superar si no lo entiendes; Descubrí que esto es algo que 'obtienes', y realmente no es algo que puedas aprender. Por el contrario, algunas personas no "entienden" el arte. No deberían convertirse en pintores. Además, ha habido estudiantes en el plan de estudios de informática que no pueden entender por qué esto no funciona: x = z + w; z = 3; y = 5; No es que no entiendan la suma, es que no están comprendiendo el requisito del expreso inequívoco. Si lo entienden, la computadora también debería hacerlo, ¿verdad? Si no puede ver lo que está mal en las tres líneas anteriores, no se convierta en programador.

Por último, necesita saber cualquier matemática que esté bajo su dominio de programación. El software de contabilidad podría detenerse en el álgebra básica. Si está programando física, necesitará saber física (vagamente) y matemáticas en geometría tridimensional (euclidiana). Si está programando software de arquitectura, necesitará conocer la trigonometría.

Sin embargo, esto va más allá de las matemáticas; sea ​​cual sea el dominio para el que esté programando, debe comprender a fondo los conceptos básicos. Si es un software de análisis de lenguajes de programación, necesitará conocer probabilidad, estadística, teoría gramatical (varios idiomas), etc.

A menudo, ciertos dominios necesitan, o pueden beneficiarse, de conocimientos que pensaría que no están relacionados. Por ejemplo, si estuviera programando un software de audio, en realidad necesita conocer la trigonometría para manejar las formas de onda.

La magnitud también cambia las cosas. Si está ordenando un conjunto de datos financieros de 1000 elementos, no es gran cosa. Sin embargo, si fueran 10 millones de registros, se beneficiaría enormemente de conocer realmente las matemáticas vectoriales y de tener una comprensión profunda de la ordenación a nivel binario (¿cómo ordena un sistema alfabéticamente? ¿Cómo sabe que 'a' es menor que 'b '?)

Descubrirá que, como programador, su base de conocimientos generales va a explotar, porque cada proyecto requerirá más aprendizaje fuera de la esfera directa de la programación. Si eres escrupuloso o perezoso con el autoaprendizaje y no te gusta la idea de pasar más de 10 horas a la semana haciendo esencialmente "tareas", no te conviertas en programador.

Si te gustan los ejercicios mentales, si te gusta aprender, si puedes pensar en cosas abstractas como matemáticas sin calculadora o diseño sin bloc de dibujo, si tienes gustos amplios en la vida y pasatiempos, si eres autocrítico y puedes desechar ' ideas favoritas, si te gusta perfeccionar las cosas, conviértete en programador. No base esta decisión en matemáticas, sino en la capacidad de pensar lógicamente y aprender. Eso es lo que importa; las matemáticas son solo un subproducto.

usuario634669
fuente
5

Por supuesto, depende de qué tipo de programador quieras ser, o mejor dicho, qué tipo de programador quieren tus empleadores que seas. Creo que el cálculo y el álgebra son esenciales, la programación estadística y lineal es de hecho una buena herramienta para tener en su maletín, tal vez el análisis (derivadas, integrales, funciones ...) podría prescindir. Pero si quieres saber cómo funcionan las cosas a fondo (la electrónica, por ejemplo, o algunos algoritmos no triviales), las matemáticas "avanzadas" son algo que es mejor que no te falte en ninguna parte.

Manrico Corazzi
fuente
5

La mayor parte de la programación que he realizado involucró simulaciones de física para investigación, incluidas cosas como electromagnetismo, mecánica cuántica y mecánica estructural. Dado que los dominios del problema tienen matemáticas avanzadas asociadas con ellos, sería difícil resolverlos sin usar matemáticas avanzadas.

Entonces, la respuesta a su pregunta es: depende de lo que esté tratando de hacer.

Caminar al azar
fuente
5

El conocimiento avanzado de matemáticas es vital si va a escribir un nuevo lenguaje de programación. O necesita escribir sus propios algoritmos.

Sin embargo, para la mayoría de la programación diaria, desde sitios web hasta solicitudes de procesamiento de seguros, solo son necesarias las matemáticas básicas .

Roble
fuente
5

Alguien con una sólida formación matemática (que no sea meramente aritmética) o lógica se adaptará bien a los algoritmos, el uso de variables, el razonamiento condicional y las estructuras de datos.

  • No todo el mundo puede diseñar una interfaz de usuario.
  • No todo el mundo puede crear un código eficaz.
  • No todo el mundo puede comentar y documentar con claridad.
  • No todo el mundo puede hacer un buen algoritmo

Las matemáticas te ayudarán hasta cierto punto, pero solo hasta cierto punto.

Sin cortar
fuente
5

No creo que el conocimiento avanzado de matemáticas sea un requisito para un buen programador, pero basándome en la experiencia personal, creo que los programadores que tienen una mejor comprensión de las matemáticas avanzadas también son mejores programadores. Esto puede deberse simplemente a una mente más lógica o una perspectiva más lógica debido a sus experiencias en la resolución de problemas matemáticos.

Jimoc
fuente
5

El concepto fundamental de las matemáticas es el siguiente, diseño, comprensión, implementación y uso de algoritmos. Si no puede hacer matemáticas, es porque no puede hacer estas cosas, y si no puede hacer estas cosas, no puede ser un programador eficaz.

Es posible que las tareas de programación comunes no necesiten ningún conocimiento matemático específico (por ejemplo, es probable que no necesite álgebra vectorial y cálculo a menos que esté realizando tareas como gráficos 3D o simulaciones de física, por ejemplo), pero las habilidades subyacentes son idénticas y falta de habilidad en un dominio se corresponderá con la correspondiente falta de capacidad en el otro dominio.

DrPizza
fuente
5

Math es una caja de herramientas para crear programas. Recomiendo la Introducción a los algoritmos de Cormen. Toca las cosas más "mathy".

- Greatest lowest limit (managing resources) 
- Random variables (game programming)
- Topological sort (adjusting spreadsheets)
- Matrix operations (3d graphics)
- Number theory (encryption)
- Fast fourier transforms (networks)
usuario559910
fuente
4

No creo que las matemáticas superiores sean un requisito para ser un buen programador, como siempre, depende de lo que estés codificando.

Por supuesto, si está en la programación de gráficos 3D, necesitará matrices y demás. Como autor de software empresarial, probablemente necesitará matemáticas estadísticas.

Pero ser un programador profesional durante casi 10 años (y otros 10 años como aficionado) "matemáticas superiores" no es algo que necesite con regularidad. En aproximadamente el 99,8% de todos los casos es solo más, menos, división y multiplicación en algunas combinaciones inteligentes; en la mayoría de los casos se trata de algoritmos, no de matemáticas.

Culpa
fuente
4

Aprender matemáticas superiores, para la mayoría de los programadores, es importante simplemente porque hace que su cerebro piense lógicamente, paso a paso, para pasar de una cosa a otra.

Sin embargo, muy pocos trabajos de programación requieren algo más que matemáticas de la escuela secundaria. He usado álgebra lineal una vez. Nunca he usado cálculo. Uso álgebra todos los días.

Lucas Omán
fuente
4

El conocimiento matemático a menudo es útil para un programador, al igual que la habilidad de diseño gráfico, la habilidad para resolver acertijos, la ética de trabajo y una serie de otras habilidades y rasgos. Muy pocos programadores son buenos en todo aquello en lo que un programador puede ser bueno. No estaría de acuerdo con ninguna declaración del tipo "no eres un programador real a menos que puedas { insertar aquí tu habilidad de programación favorita }".

Pero desconfiaría de un programador que no pudiera hacer matemáticas. Más que de alguien que no sabía dibujar.

MusiGenesis
fuente
4

Creo que realmente depende de lo que intentes hacer, pero en mi humilde opinión, la teoría de CS y OS son más importantes que las matemáticas aquí, y realmente solo necesitas las matemáticas que implican.

Por ejemplo, hay muchos antecedentes de CS sobre teoría de programación y optimización que respaldan a muchos programadores en los sistemas operativos modernos. Ese es un ejemplo de algo que requeriría algo de matemáticas, aunque no algo muy complicado.

Pero honestamente, para la mayoría de las cosas, no necesitas matemáticas. Lo que necesita es aprender la capacidad de pensar en base 2 y 16, como la capacidad de O / Y mentalmente. Por ejemplo, si tiene un byte y dentro de ese byte hay dos campos de 3 bits y 2 bits desperdiciados, saber qué bits están en qué campos están activos cuando el valor del byte es algo así como 11 hará que las cosas sean un poco más rápidas que tener que usar pluma y papel.

Uri
fuente
¿Has estudiado alguna vez teoría de las colas? ¿Alguna vez ha estudiado los administradores de memoria y los modelos estadísticos que hacen que los desarrolladores elijan unos sobre otros? No estoy necesariamente en desacuerdo con la peor parte de su respuesta, pero su simplificación excesiva.
San Jacinto
@San: Estoy seguro de que estoy simplificando demasiado, pero creo que la mayoría de los desarrolladores de sistemas nunca necesitan saber estas cosas a este nivel. Lo estudié a nivel básico en mis dos primeras titulaciones, y algo más profundo durante mi doctorado, pero nunca fue mi fuerte, prefiero dejarlo a los expertos. La gente de OS que conocía tenía habilidades matemáticas que me dejaron boquiabierto.
Uri
que creo que es muy válido. Creo que es necesario diferenciar la programación de sistemas de la programación de SO. Conceptos estrechamente tejidos, pero diferentes sin embargo.
San Jacinto
4

Comencé a programar casi al mismo tiempo que entré en mi clase de preálgebra. Así que no diría que las matemáticas son tan importantes, aunque pueden ayudar en ciertos tipos de programación, especialmente funcional.

Todavía no he tomado Matemáticas Discretas, pero veo muchas cosas teóricas con programación escrita en una notación matemática que se enseña en esta clase.

Además, asegúrese de saber cómo calcular cualquier cosa en cualquier base, especialmente en la base 2, 8 y 16.

Además, una clase que realmente me trajo algunos conceptos fue esta clase de preprogramación. Nos enseñaron uniones, intersecciones y todas esas cosas felices y casi exactamente son paralelas a las matemáticas bit a bit. Y cubrimos mucho la lógica booleana. Lo que consideré más útil fue cuando aprendimos cómo reducir declaraciones booleanas complejas. Esto fue muy útil:

(x|y) & (x|z) & (x|foo)

se puede simplificar a

x | (y & z & foo)

Que antes no entendía del todo.

Earlz
fuente
4

Bueno, generaste una serie de respuestas, y no, no las leí todas. Estoy en el medio de esto, no, ciertamente no necesitas matemáticas para ser un programador. Los controladores de ensamblador vs dispositivo en Linux no son más ni menos complicados que el otro y ninguno requiere matemáticas.

De ninguna manera necesita tomar o aprobar una clase de matemáticas para nada de esto.

Estoy de acuerdo en que la mentalidad de resolución de problemas para la programación es bastante similar a la de las soluciones matemáticas y, como resultado, las matemáticas probablemente sean fáciles. o por el contrario, si las matemáticas son difíciles, la programación puede ser difícil. No se requiere una clase o un título o cualquier papel o trofeo, irse y aprender cosas, seguro.

Ahora bien, si no puede convertir de hexadecimal a binario a decimal rápidamente, ya sea en su cabeza, en papel o usando una calculadora, tendrá dificultades. Si desea entrar en redes y otras cosas que involucran sincronización, lo que los controladores del kernel suelen hacer pero no es necesario. Vas a luchar. Conozco una lista muy larga de personas con títulos en matemáticas y / o ciencias de la computación y / o títulos en ingeniería que tienen dificultades con los cálculos de velocidad, bits por segundo, bytes por segundo, cuánta memoria necesitas para hacer algo, etc. en cierta medida, se puede considerar una especie de habilidad que algunos tienen y otros deben lograr.

Mi conclusión es que creo en la fuerza de voluntad, si quieres aprender estas cosas, puedes y lo harás, es tan simple como eso. No necesitas tomar una clase o gastar mucho dinero, linux y qemu, por ejemplo, pueden mantenerte ocupado durante bastante tiempo, diferentes idiomas ASM, etc.Entornos bloqueables para el desarrollo del kernel, integrados, etc. No estás limitado a eso , pero no creo que tengas que salir corriendo y tomar clases si no quieres. Si quieres, entonces asegúrate de tomar algunas clases de ee, algunas clases de cs y algunas clases de matemáticas.

viejo contador de tiempo
fuente
Esto no es un cebo de llamas, sino la realidad. Se puede resumir todo lo que necesita saber sobre electrónica digital e ingeniería de software desde una perspectiva de programación. 0, 1 y, o no. esas cinco cosas son en las que operan la electrónica digital y todos los programas. Puedes construir cualquier cosa con una gran caja de puertas nand rápidas.
old_timer
4

Necesitas matemáticas. La programación no es más que matemáticas. Cualquier descubrimiento de la física teórica no se convierte en una implicación práctica (aplicable), a menos que se explique en términos de soluciones matemáticas. Ninguno de ellos se puede resolver computacionalmente si no se pueden interpretar en computadoras, y más específicamente en lenguajes de programación. Por tanto, se diseñan diferentes lenguajes para resolver problemas específicos. Pero para el propósito general y los lenguajes de programación de amplia difusión como java, c, c ++, muchas de nuestras tareas de programación implican una solución repetitiva (continua) a los mismos problemas, como extraer valores de la base de datos, archivos de texto, ponerlos en Windows (escritorio, web), manipular mismos valores, a veces accediendo a algunos datos de dispositivos similares (pero con diferentes marcas, puertos diferentes y un dolor de cabeza), etc.que no implica más que un método unitario

Pramod
fuente
3

En mi opinión, probablemente necesite una aptitud para las matemáticas, sin tener necesariamente muchos conocimientos en el campo. Entonces, las cosas que necesita para ser bueno en matemáticas son similares a las cosas que necesita para ser bueno en programación.

Pero en general, no recuerdo la última vez que usé algún tipo de matemáticas avanzadas en la programación diaria, así que no.

Lehane
fuente