Parece que la sabiduría convencional sugiere que los buenos programadores también son buenos en matemáticas. O que los dos están de alguna manera intrínsecamente relacionados. Muchos libros de programación que he leído proporcionan muchos ejemplos que son soluciones a problemas matemáticos, o de alguna manera están relacionados con las matemáticas como si estos ejemplos fueran lo que tiene sentido para la mayoría de las personas.
Entonces, la pregunta que me gustaría plantear es: ¿tienes que ser bueno en matemáticas para ser un buen programador?
Respuestas:
Creo que depende del tipo de programación que quieras hacer. En cuanto a ser un programador en el mundo de los negocios, diría que la respuesta es no. Puedes convertirte en un gran programador sin conocer las matemáticas avanzadas. Cuando termina teniendo que lidiar con las matemáticas, las fórmulas generalmente se definen en los requisitos del negocio, por lo que solo se trata de implementarlas en el código.
Por otro lado, si quieres convertirte en un programador de bajo nivel o, por ejemplo, crear motores de gráficos en 3D, las matemáticas jugarán un papel muy importante.
fuente
Voy contra la corriente y digo que sí, necesitas una mentalidad matemática . La mayoría de la gente piensa que las matemáticas son aritméticas o memorizan fórmulas arcanas. Esto es como preguntar si necesita una ortografía perfecta o un vocabulario extraordinario para ser un buen escritor.
La escritura se trata de comunicación, y las matemáticas / programación se trata del proceso de pensamiento claro y lógico (de una manera que no se puede cometer errores; la ecuación no se equilibra o el programa no se compila). Específicamente, ese pensamiento lógico se manifiesta en:
Entonces, diré que necesita una mentalidad matemática , poder construir y manipular modelos mentales de lo que está haciendo su programa, en lugar de una colección de hechos y teoremas. Ciertos campos, como gráficos o bases de datos, también tendrán ciertos datos que necesita, pero para mí esa no es la esencia de ser "bueno en matemáticas".
fuente
Hay muchos campos diferentes de programación y muchos de ellos no requieren un estándar particularmente alto de conocimiento matemático. Nunca podrá escribir un motor 3D, pero ciertamente podrá desarrollar aplicaciones comerciales y web. Seamos realistas: la operación matemática más común en la mayoría de los programas de computadora es incrementar un número en uno.
Admito felizmente que nunca me han gustado especialmente las matemáticas o que he sido bueno en eso (¡en realidad me gradué con un título en Literatura Inglesa!) Y he trabajado como desarrollador profesional durante más de 12 años. Desarrollo principalmente aplicaciones web, que rara vez requieren tanta matemática. Más importante es la capacidad de pensar lógicamente, poder dividir los problemas en trozos y tener una amplia comprensión de las diversas tecnologías y marcos involucrados.
Como programador, es mucho más probable que tenga que implementar un algoritmo existente que idear uno completamente nuevo . ¿Necesita resolver, por ejemplo, el interés compuesto? No necesita averiguarlo usted mismo, solo busque la fórmula y aplíquela. La mayoría de los problemas ya se han resuelto, solo necesita saber cómo implementar las soluciones en el idioma que elija. Eso no quiere decir que ser bueno en matemáticas no sea una ventaja ; es solo que no es totalmente esencial .
Cuando estaba en la escuela a mediados de los años 80, cuando las computadoras hogareñas no eran muy comunes, a menudo escribía programas para resolver mis tareas de matemáticas. A menudo no podía hacerlo en mi cabeza, pero podía aplicar cualquier fórmula requerida como rutina de software. No necesita ser otro Pitágoras para resolver el lado más largo de un triángulo rectángulo, simplemente necesita poder codificar
a² + b² = h²
en el idioma que elija.fuente
No tienes que ser bueno en matemáticas. Sin embargo, debes ser bueno en lógica y resolución de problemas. Sin embargo, las personas que son buenas en lógica y resolución de problemas también suelen ser buenas en matemáticas. Yo diría que realmente depende del tipo de matemática. Puedes ser terrible en el cálculo (como yo), y aún así ser un buen programador (como yo). Pero si tiene problemas con Discrete Math y Set Theory, probablemente encuentre muchos aspectos de la programación bastante difíciles.
fuente
Creo que es importante observar de cerca por qué no te gustan las matemáticas.
La aversión a una disciplina académica suele ser algo que sucede en la escuela y puede deberse a un conflicto de un tipo u otro con un maestro, la falta de confianza en su propia capacidad dentro de una materia o la presión de grupo.
Programación! = Matemáticas. Ni siquiera se "siente" como matemáticas, para mí (y disfruté las matemáticas, a pesar de que no me fue tan bien al final de mis estudios formales). Muchas habilidades que podrías usar en matemáticas son útiles, necesarias incluso en la programación, pero muchos programadores se enseñan a sí mismos en su mayor parte. El hecho de que no le gusten las matemáticas en la escuela prácticamente no tiene relación con su habilidad o disfrute de la programación.
fuente
Las matemáticas y la programación están muy relacionadas, ya que las matemáticas son realmente el lenguaje universal entre los humanos y las computadoras. No necesita saber muchas matemáticas para la programación de alto nivel ya que gran parte de eso está detrás de escena, pero ayudará a comprender muchos conceptos de programación más avanzados. Si planea hacer más programación de bajo nivel (programación de sistemas o dispositivos), entonces necesitará saber muchas más matemáticas.
fuente
Uno bueno ? Muy improbable La mayoría de los patrones de diseño tienen al menos alguna base en conceptos matemáticos. Las cosas que son esenciales para la programación, como variables, bucles, procedimientos y objetos, son análogas a conceptos en campos matemáticos como álgebra, cálculo y teoría de conjuntos.
Considere también que la informática es un subconjunto de las matemáticas: los algoritmos y la lógica formal, en los que se basa toda la programación, son fundamentalmente matemáticas .
Si odias las matemáticas, odiarás la programación.
fuente
Casi todo el mundo ha respondido: "¿necesitas saber matemáticas para ser un buen programador?" La respuesta correcta a esto es: "No, en realidad no, pero ayuda", como muchos ya han dicho.
Pero mi interpretación de la pregunta es "¿existe una fuerte correlación entre la aptitud matemática y la aptitud de programación?" La respuesta correcta a esto es: "Sí, la hay". Si luchas contra el álgebra, la geometría y el cálculo, entonces probablemente no seas muy bueno para lidiar con las abstracciones y / o pensar lógicamente. Si eres malo en matemáticas, probablemente nunca serás un gran programador. (No es que no debas intentarlo).
fuente
Depende de lo que estés programando. Un motor de juego en 3D, por ejemplo, sería extremadamente difícil (si no imposible) de lograr con algún grado de coherencia sin el conocimiento de los conceptos matemáticos apropiados.
fuente
"Me gusta" y "ser competente en" son cosas completamente diferentes, por lo tanto, mientras esté correctamente numerado, entonces no puedo ver una razón por la que le gustaría tener matemáticas.
Pero seamos absolutamente claros aquí: la programación tiene una base sólida en matemáticas y, tarde o temprano, casi cualquier desarrollo no trivial implicará cálculos; no puede esconderse de esto.
Cualquier programación involucra lógica (base en matemáticas), la programación más moderna probablemente involucra cosas (como SQL) que involucran la teoría de conjuntos (incluso si no es obvio) y si no lo hace, entonces puede ser el caso en el que estás fuera. reinos (como la programación de juegos) que están aún más explícitamente basados en matemáticas (renderización - matemáticas, IA -> probabilidad y aleatoriedad - matemáticas ...) y así continúa.
El resultado de lo anterior es que hay que sentirse cómodo con los números; sin duda hay que entender por qué "Hay 10 tipos de personas en el mundo, los que entienden los binarios y los que no" es divertido. Pero probablemente esté excusado "2 + 2 = 5 ... para valores muy grandes de 2".
fuente
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, entonces no puede ser un programador efectivo.
Las tareas de programación comunes pueden no necesitar ningún conocimiento matemático específico (por ejemplo, probablemente no necesitará álgebra vectorial y cálculo a menos que esté haciendo tareas como gráficos 3D o simulaciones físicas, por ejemplo), pero los conjuntos de habilidades subyacentes son idénticos y la falta de habilidad en un dominio se corresponderá con una falta de habilidad correspondiente en el otro dominio.
fuente
Para ser sincero, yo era un horrible estudiante de matemáticas en la escuela. El álgebra estaba completamente más allá de mí en ese momento, y no creo que haya llegado más alto que una D en él.
Sin embargo, unos años más tarde, después de haber trabajado como desarrollador de software profesional, volví a la universidad y tomé un curso de álgebra. Para mi sorpresa, fue la clase más fácil que tuve, y obtuve una A en ella.
La verdad era que la programación me enseñó álgebra, porque prácticamente todo es solo una expresión algebraica.
Así que no, no lo necesitas para comenzar. Ayuda, pero no es obligatorio. Lo bueno del desarrollo de software como un medio para enseñar matemáticas es que el compilador, el depurador y el programa de ejecución son formas maravillosas de verificar que tienes la respuesta correcta. En este sentido, la depuración es particularmente una gran ayuda para el aprendizaje, ya que puede recorrer el código y ver cada paso de la evaluación de su algoritmo.
fuente
Depende un poco de lo que esté haciendo exactamente, aunque definitivamente no puede doler.
Por ejemplo, alguien que se especializó en Ciencias de la Computación tiene que pasar por muchas matemáticas para obtener su título. CS generalmente se enfoca mucho en los algoritmos y su corrección, probados a través de pruebas de alto nivel de estilo matemático. Muchos programas de CS de Universitie están tan cerca de su programa de matemáticas que una doble especialización está a solo unos pocos cursos de distancia. Incluso como estudiante de Ingeniería de Software, yo mismo, estaba a 2 cursos de una especialización en Matemáticas.
Sin embargo, dicho esto, muchas de las pruebas, estructuras de datos, métodos de búsqueda y corrección de algoritmos que aprendí realmente no se han puesto en uso directo desde que terminé la escuela. Pero sería difícil para mí decir que al menos no me dio una buena base y una mejor comprensión de lo que hago en un nivel bajo.
Porque no importa cómo lo mires, en el nivel más bajo, todo lo que estás haciendo se reduce a las matemáticas.
fuente
¿Puedes convertirte en un buen desarrollador de software sin matemáticas? Sí, eso creo. ¿Puedes convertirte en el tipo de programador heroico del que la gente habla todo el tiempo? Yo creo que no.
El problema es que la mayoría, si no todos, los programadores heroicos (piense en Dennis Ritchie), tienen experiencia en informática o matemáticas. Para convertirse en un programador realmente excelente, debe comprender los algoritmos en un nivel que es más que superficial, lo que significa que se ve obligado a profundizar en la informática formal. Y la informática es solo matemática aplicada.
Del mismo modo, la comprensión del cálculo lambda sería invaluable para un arquitecto de sistemas operativos o un diseñador de idiomas.
fuente
He visto este tema discutido de un lado a otro. He trabajado con personas que tenían títulos en matemáticas que pensaban que podían programar y en un año o dos cambiaron de carrera. ¡Uno de los mejores programadores con los que tuve el placer de trabajar tenía un doctorado en bioquímica y nunca tomó una clase formal de programación / CS en la escuela, sino que fue autodidacta y comenzó una exitosa compañía de software!
En última instancia, lo que hace que un programador sea bueno o excelente es alguien que es capaz de comprender la lógica, los flujos de trabajo, puede aprender con el ejemplo y dispuesto a buscar una solución. Además, DEBE APRENDER EL NEGOCIO para el que son sus aplicaciones. Odio a los programadores que saben que no entienden la contabilidad, pero escriben aplicaciones de contabilidad. Siempre hacen suposiciones incorrectas y realmente ralentizan el desarrollo.
Encontrará, no importa a qué escuela asista, aprenderá más en un año fuera de la escuela que en 4 años. La escuela te enseña a aprender con habilidades básicas, pero la experiencia del mundo real es mucho más valiosa con el tiempo.
La experiencia es el mejor maestro y cuando tenga que aplicar las matemáticas al desarrollo de software, siempre que aprenda el negocio, estará bien. Además, recuerde, como dijo una publicación anterior, a menos que esté tratando de trabajar en un motor de gráficos 3D o sistemas de coordenadas gráficas como la aplicación SIG, las matemáticas que aprendió en la escuela secundaria son todo lo que realmente necesita.
He trabajado en sistemas de contabilidad y facturación, y nunca tuve que averiguar Log (x), SIN, COS, etc. para manejar un libro mayor o permitir la entrada de datos. Un Aging Journal no es "matemática alta", pero es fundamental para evaluar los problemas de AP.
Ahora que lo pienso, ¡nunca he conocido a un contador con una calculadora científica en su escritorio!
fuente
La respuesta corta es no. Creo que es un poco un mito, pero se propaga porque los problemas matemáticos generalmente son adecuados para resolverlos con computadoras.
Entonces, en la universidad, las personas tendrán problemas matemáticos que deben resolver en asignaturas de compilación, pero lo que generalmente encontrarán es que las matemáticas son realmente más difíciles de resolver que el código que se necesita para implementar la solución.
Una vez que ingrese al mundo real, encontrará cada vez más que los problemas están resueltos en gran medida para usted, su trabajo consistirá en implementarlos en código.
fuente
Tienes que aprender matemáticas o crear las tuyas propias. De cualquier manera, es importante ser bueno en esto de una forma u otra.
Mientras pueda trabajar con valores y comprender lo que están haciendo, por qué y qué puede hacer que hagan, entonces las matemáticas tradicionales pueden no ser siempre necesarias. Ocasionalmente, incluso se interpone en el camino.
Hay formas alternativas de visualizar el valor de un byte además de los números, pero definitivamente son el método más pensado. Sería factible escribir un programa pensando en todos los valores como colores, por ejemplo.
La programación actual deriva gran parte de su valor de poder representar 1s y 0s como diferentes tipos de datos. Aunque en realidad esos 1s y 0s no son números en absoluto, sino que la longitud de onda eléctrica cambia, las matemáticas no juegan tanto como la física, ... sin embargo , ... es muy importante para entender mucho de lo que otros programadores dicen y codifican.
Aún así sería posible ser un buen programador sin matemáticas, por difícil que sea.
fuente
Acabo de terminar un curso de introducción a las matemáticas discretas, y descubrí que ya sabía casi todo acerca de la lógica de predicados gracias a la programación; todo lo que era nuevo era la sintaxis: básicamente solo funcionaba con booleanos.
En resumen: tal vez no tenga que aprender matemáticas explícitamente , pero solo por ser un programador probablemente haya aprendido algo de matemáticas sin darse cuenta. Es decir, al ser un "buen programador", también eres realmente un matemático (hasta cierto punto).
La correspondencia de Curry-Howard ilustra lo que quiero decir: básicamente, afirma que las pruebas matemáticas y ciertos programas de computadora son "isomórficos", es decir, son diferentes formas de escribir lo mismo. Por supuesto, en realidad es más complejo que esto, pero no soy matemático, así que esta es la mejor explicación que puedo dar. Esperemos que no esté demasiado lejos de la marca.
En resumen, no solo muchos campos en CS y programación involucran muchas matemáticas, sino que incluso las ideas básicas de programación (por ejemplo, booleanos) son básicamente matemáticas disfrazadas.
fuente
Esta es una pregunta muy difícil de responder y probablemente provocará mucho debate.
Una de las razones por las que esta pregunta es tan difícil es que depende en parte del tipo de trabajo que esté haciendo. No hay muchas matemáticas involucradas con la mayoría de las aplicaciones comerciales, por lo que puede obtener una sólida comprensión del álgebra y las matemáticas comerciales. Sin embargo, las aplicaciones más avanzadas requieren matemáticas más avanzadas y comienza a necesitar una comprensión sólida del cálculo, álgebra lineal y similares.
Sin embargo, esa es solo una parte de la ecuación, ya que todavía necesita un cierto grado de matemática solo para la práctica de la programación misma. No hace falta decir que debe sentirse cómodo con la lógica para poder escribir un programa básico y un álgebra básica. Mirando un poco más allá de simplemente hacer que un programa básico funcione, es necesario que comprenda ciertos aspectos de las matemáticas discretas para poder determinar qué hace que un buen algoritmo se use para un problema dado.
Sin embargo, para volver al meollo de la pregunta. Personalmente, no creo que sea necesario ser matemático para ser un buen programador; sin embargo, creo que necesitas estar cómodo con las matemáticas para poder ser un buen programador generalista.
fuente
Sí definitivamente.
Incluso la programación de negocios de la fábrica requiere cierta habilidad en matemáticas.
La programación de negocios de ejecución de la fábrica requiere habilidades de base de datos. Ser un buen programador de bases de datos requiere una comprensión de cómo funcionan las bases de datos y cuáles son los algoritmos que utiliza el procesador de consultas cuando traduce sus consultas. Sin una comprensión de los límites y las derivadas (o incluso la comprensión básica de que la línea y = x interseca la línea y = x ^ 2 dos veces), no es factible comparar con precisión un plan de consulta de combinación interna de coincidencia hash versus una combinación de bucle anidado plan de consulta
Además, un buen programador puede trabajar en casi cualquier dominio, siempre que estudie un poco: juegos, simulación, desarrollo integrado, compiladores, sistemas operativos, material web, bases de datos, etc. Ser capaz de hacer todas esas cosas (o más ser capaz de aprender rápidamente cómo hacer todas esas cosas) requiere una buena cantidad de experiencia en matemáticas.
Yo diría que uno debería haber tenido alguna experiencia en algún momento con lo siguiente:
fuente
Las matemáticas son más que simples fórmulas. La comprensión de algunos principios matemáticos sobre la teoría de conjuntos es muy útil para comprender conceptos complejos en sistemas de tipos, ya que la comprensión de la complejidad es primordial para el uso eficiente de la estructura de datos.
La teoría de gráficos también es extremadamente útil, ya que muchos problemas de programación pueden ser modelados por un gráfico. ¡Estaba muy asombrado, cuando estaba desarrollando una aplicación comercial, al descubrir que los teoremas de la ruta más corta proporcionaban una solución elegante a un problema espinoso que tenía!
fuente
Siempre he considerado que la programación sea nada , pero las matemáticas.
Simplemente no parece álgebra de secundaria.
fuente
Las matemáticas son la antesala de la programación.
Poder trabajar con capas sobre capas de abstracción, modelos, "objetivación" de funciones, transformaciones y conceptos temporales, las matemáticas son el campo de entrenamiento perfecto para todo eso.
Es posible desarrollar la mentalidad correcta para programar sin matemáticas, pero es mucho más difícil.
Sin embargo, aparte de las áreas especializadas, solo es importante comprender las matemáticas, saber el nombre de todo y cómo se puede probar un teorema dado no lo es. Entonces, incluso si tiene buenas notas en matemáticas porque lo aprendió todo sin comprender realmente, todavía tendrá problemas con la programación.
fuente
El conocimiento matemático es bueno para algunas aplicaciones (como juegos, inteligencia artificial, gráficos por computadora, etc.), pero las matemáticas le enseñan algo más allá de fórmulas o ecuaciones complejas.
Aprender matemáticas es como aprender un nuevo lenguaje de programación. De hecho, la programación es matemática aplicada. Cuando aprendes un nuevo idioma, aprendes muchas cosas que te hacen un mejor programador. No es diferente con las matemáticas, pero si realmente dominas las matemáticas, serás un mejor programador para siempre, incluso si no utilizas las matemáticas avanzadas en tu trabajo.
La razón es simple: las matemáticas te enseñan a ver el mundo con otros ojos. Te enseña a resolver problemas con diferentes enfoques sin necesariamente programar. Esta nueva forma de pensar sin duda lo lleva a una mejor manera de hacer su trabajo.
La programación es un arte. La matemática es un arte. Si combinas ambos, serás un mejor artista.
fuente
No.
Al igual que la mayoría de las disciplinas científicas, tener una buena comprensión de los conceptos matemáticos será útil, especialmente al evaluar cosas como la eficiencia. Pero para la mayoría de las tareas de programación, su habilidad matemática solo es relevante si el problema que está resolviendo está relacionado con las matemáticas.
Las computadoras son excelentes para hacer matemáticas, por lo que tiene sentido que las primeras computadoras se usaran ampliamente para hacer el "trabajo duro" asociado con una gran cantidad de trabajos matemáticos complejos. Una gran cantidad de software todavía hace resolver problemas matemáticos complejos, en ese caso ser bueno en matemáticas le ayudará a escribir un programa mejor, pero no es lo que hace que un buen programador.
fuente
Por lo general, no en el sentido de que necesita saber, digamos, cálculos o ecuaciones trigonométricas para hacer la mayoría del trabajo. Si estás haciendo una gran programación de gráficos / juegos, entonces sí. Un famoso truco matemático para Quake es un buen ejemplo de esto. Sin embargo, el pensamiento en el que tiene que meterse mientras trata con matemáticas de alto nivel ciertamente es aplicable a la programación; con la programación, está desarrollando su propia estructura lógica, sus propias funciones, sus propias "pruebas".
La única vez que me he encontrado con matemáticas en mi trabajo (flujo de trabajo empresarial interno y aplicaciones) es cuando hago algunas aplicaciones de informes que requieren conocimiento de estadísticas, pero eso es solo porque era directamente aplicable a los requisitos.
fuente
Yo diría que no necesariamente. Ciertas disciplinas de programación (criptografía, gráficos, motores de física, etc.) definitivamente tendrían una clara ventaja para los matemáticamente inclinados, pero no creo que una buena comprensión de las ecuaciones diferenciales sea particularmente útil para la programación web, por ejemplo.
La lógica booleana es probablemente un requisito para ser un buen programador, pero no me sorprendería si muchas personas que no obtuvieron buenas calificaciones en matemáticas de la escuela secundaria son buenos para programar.
fuente
Diría que definitivamente no necesitas ser bueno en matemáticas para ser un buen programador.
Mi primer trabajo como programador fue hacer gráficos en 3D para B-52 y la planificación de misiones de Cruise Missile. Era una aplicación matemática intensiva, pero realmente solo necesitaba acceso a personas que fueran buenas / excelentes en matemáticas. No necesitaba saber la fórmula para calcular grandes distancias circulares entre dos puntos. Necesitaba saber cómo convertir la fórmula para que funcionara en un lenguaje de programación. Lo mismo con la simulación de vuelo. Boeing hizo todos los cálculos, solo tuvimos que aplicarlo.
Esa experiencia también me ayudó a tener una idea de quién sería un buen programador y quién no. El trabajo consistía en pilotos y navegadores que realizaban un recorrido de servicio como programadores y para ayudar a los programadores a comprender las necesidades de la misión. Por lo general, en unas pocas semanas se podría saber qué pilotos y navegadores serían buenos en eso. Las especialidades en matemáticas generalmente comenzaron a programar de inmediato.
Entonces diría que ser bueno en matemáticas aumenta las probabilidades de que seas bueno en programación, pero conozco a muchos buenos programadores que no son tan buenos en matemáticas.
fuente
No me gustan las matemáticas y siempre obtuve bajas calificaciones en matemáticas. No quiero decir que soy un buen programador, sin embargo, estoy en la industria del software durante 10 años con gran éxito.
fuente
¡No, no, no, no, sí y no!
No, porque a menudo lo necesitas.
¿Por qué no funciona?
¿Se puede reescribir de una manera más abstracta?
¿968 ms es más o menos que 0.7 s? Cuántos MB necesita, cuántos Ghz tiene la máquina, un byte será suficiente: las matemáticas son parte del trabajo diario. A veces explícitamente y matemáticas superiores.
Siempre implícitamente baja matemática.
La matemática es un campo amplio, desde el cálculo hasta la matriz, la geometría, la lógica, la estadística, la teoría de categorías y la teoría de grafos. Entonces, si cree que está programando sin usar las matemáticas, tal vez esté equivocado.
Si observa los problemas en la página del Proyecto Euler , encontrará acertijos, donde no tengo idea, cómo se usan las matemáticas para resolverlo. (No es que pueda resolverlos sin las matemáticas). Tenga en cuenta que el tamaño del problema es normalmente tan grande, que no puede resolverlos con fuerza bruta.
Sin embargo, dado que no puedo resolver muchos de ellos (aproximadamente 2/3 por ahora), ¿significa que no me gustan las matemáticas?
Si no estudiaste matemáticas, probablemente no sabrás dónde puedes encontrar matemáticas en tu vida diaria, incluida la programación.
Incluso si solo te especializaste en mover componentes GUI en la pantalla para que se vea bien, de alguna manera estás haciendo matemática.
fuente