¿Qué matemáticas necesito saber para ser un programador exitoso?

Como programador del sector empresarial, he hecho todo lo imaginable con las fechas. Gregoriano, Julián, gamas, cubos. lo que sea

Tiempos también. Zulu, offset, ANSII, rangos, europeo, EE. UU., Todo … Pero eso es mucho más formato de datos que matemática, pero se vuelve complicado cuando se usa el reloj del sistema para cronometrar la E / S del dispositivo y alguien pone el reloj al revés … Realmente ralentiza la E / S.

Muchas gráficas también, pero nada que no esté fuera de lo común para un estudiante de secundaria.

Muchas dimensiones del análisis cuantitativo son casi tan lejos como llevo mis cálculos. Tomé toneladas de cálculo en la universidad y nunca usé nada de eso. Incluso cuando trabajaba en el sector aeroespacial.

Las finanzas de muy alto nivel usan cálculo, pero por lo que vi lo usaron de manera incorrecta o podrían haber usado otros mecanismos. Creo que intentaban impresionar a todos con lo listos que eran, y terminaron siendo despedidos.

Hablando de matemáticas y no de la técnica de programación, necesitará conocer todos los conceptos básicos de las matemáticas.

Dependiendo de lo que esté programando, será diferente de lo que necesite, pero hay partes de la programación en las que necesitará todos los elementos básicos, y específicamente:

  • Álgebra (especialmente Resolver ecuaciones, funciones inversas y funciones racionales)
  • Trigonometría (seguramente necesitará las variables que contiene)
  • Cálculo (lo necesitará mientras usa el procedimiento de algoritmo o la fórmula para el procesamiento de datos y el razonamiento automatizado)
  • Comprensión de los fractales y convertir una ecuación en un gráfico visual (imaginando un círculo de diámetro específico, ahora copia y pega la imagen de ese círculo colocado uno al lado del otro, se colocan en el suelo “x”, enrolla una cuerda en un círculo y déjalo circular delante de ellos, la cuerda terminará frente al cuarto círculo cortando el eje aproximadamente a 0.14 y ahí obtienes Pi)

Ejemplos:

Considere algo simple en la programación, como el desarrollo front-end de una página de galería, su galería cargará algunos álbumes, al hacer clic en uno las imágenes de ese álbum se mostrarán en un estilo de mampostería, aquí deberá obtener el tamaño de los medios archivo (imagen) y reducirlo a una miniatura (multiplicación porcentual), si no puede hacer eso como Facebook y tiene que establecer la miniatura en un tamaño específico, entonces redondea las dimensiones de la imagen y obtiene qué tamaño es más grande y por cuánto más grande para ponerlo en su categoría correcta “rectángulo horizontal”, “rectángulo vertical” y “cuadrado” y luego escalar al tamaño especificado de esa categoría. Aquí se usa matemática simple.

Ahora considere exprimir ese álbum en una página receptiva usando un estricto documento html donde solo puede usar píxeles en lugar de porcentaje, necesitará crear un patrón similar al patrón de noticias, que sería similar a este patrón simple que ve aquí:

Seguramente cuando necesite obtener etiquetado automático, inteligencia artificial, base de datos piloto, controladores eléctricos y demás, necesitará mezclar su conocimiento de las matemáticas y poder imaginarlo para que le resulte fácil lo que es, en lugar de simplemente perderse. los números.

Aquí hay una explicación de la fórmula de Euler en escala visual, que muestra cómo es fácil cuando la imaginas, y sí, la usarás en algunas partes de la programación, pero no en la codificación junior. Disfrutar.

¡Por supuesto! Pocos profesionales que copulan son genios matemáticos. Pocos profesores de CS son genios matemáticos, aunque muchos piensan que lo son. Una sólida formación matemática lo ayudará a tener éxito en una profesión informática y le aconsejaría no entrar en algunas áreas teóricas que dependen mucho de las matemáticas, pero hay muchas carreras potenciales para estudiantes de CS que requieren solo un nivel básico de conocimiento matemático. Le sugiero que visite http://www.swebok.org y busque el conjunto de conocimientos de ingeniería de software. Hay una sección sobre fundamentos matemáticos, pero observe todas las otras cosas que un ingeniero de software debería saber (algunas de las cuales no se enseñan en la mayoría de los programas de CS).

Depende de lo que vas a construir. Si está trabajando en aplicaciones financieras, entonces la contabilidad básica es útil. También es posible que desee conocer las matemáticas detrás de los cálculos de préstamos e hipotecas.

Si está trabajando con aplicaciones CGI, la geometría avanzada sería un requisito. Pero la geometría básica siempre es práctica cuando intentas ajustar controles en una pantalla.

En muchas aplicaciones comerciales, también puede usar el conocimiento sobre estadísticas. Por ejemplo, es posible que deba generar informes que contengan información sobre el valor de la venta promedio de una tienda web para que el propietario tenga una idea de cuánto pedirán los clientes en promedio.

También necesitará saber un poco sobre los cálculos de probabilidad para poder estimar la posibilidad de que sucedan algunas cosas específicas. Esto es importante cuando intenta resolver errores, ya que los errores que tienen más probabilidades de ocurrir deben corregirse primero.

Y al desarrollar juegos, Game Theory se vuelve importante.

Pero en general, no estarías desarrollándote solo. Trabajaría en un equipo y al menos uno de los miembros del equipo debería saber todas las matemáticas necesarias para construir el programa. Sin embargo, ese miembro del equipo no tiene que ser un programador. Solo tiene que documentar los cálculos exactos que deben hacerse. Su trabajo es transformar esas descripciones en código.

Problema 1 – El Proyecto Euler es un muy buen ejemplo de cómo necesitarías las matemáticas para resolver la ecuación y es divertido, ¡pero deberías poder hacerlo en tu cabeza ! (¡Y una calculadora manual!) Soy programador y puedo hacer esto, así que déjenme explicar cómo.

Debe calcular la suma de todos los múltiplos de 3 o 5 por debajo de 1000. Bueno, el múltiplo más alto de 3 sería 999, por lo que tendría 333 múltiplos de 3. Y 995 sería el múltiplo más alto de 5 por debajo de 1000, por lo que tenemos 199 múltiplos de 5.

Pero si agregamos estos, ¡agregaríamos todos los múltiplos de 3 y 5 dobles! (Por ejemplo, 15 se contarían dos veces). Entonces tenemos que restar todos esos múltiplos y el múltiplo más alto de 15 es 990. Lo que sería 66 múltiplos de 15.

Entonces, ahora sabemos que habría 333 + 199 – 66 múltiplos para un total de 466 valores. ¡Pero tenemos que calcular la suma de esos valores! Entonces, ¿cómo calcular esto? Esto se vuelve un poco más avanzado, pero la suma de 3 por debajo de 1000 sería igual a la suma de 1 a 333, multiplicada por 3. La suma de 1..333 sería una fórmula simple, que resulta ser n * (n + 1 ) / 2 entonces (333 * 334/2) = 55,611. Multiplica por 3 y obtienes 166,833.

Para los 5 obtienes 5 * (199 * 200) / 2 o 99,500 y para 15 obtienes 15 * (66 * 67) / 2 o 33,165.

Luego suma los resultados 3 y 5 y resta los 15 resultados y obtienes 166,833 + 99,500 – 33,165 = 233,168.

Entonces, la respuesta es 233,168. Pero tengo que admitir que he usado una calculadora para calcular los números grandes, de lo contrario tendría que usar lápiz y papel. 🙂

Encontrar la lógica para resolver estos problemas es lo que debería poder hacer usted mismo, o tener un compañero que pueda calcular todo esto por usted.

Y sí, tengo una calculadora anticuada junto a mi computadora. ¡Soy anticuado también!

Honestamente, recoges las matemáticas necesarias a medida que avanzas. Para un trabajo de programación general que es. La lógica debería ser natural incluso si requiere un poco de práctica. La aritmética es un hecho. Gráficos y conjuntos que necesitará aprender para algoritmos más complicados.

Sin embargo, dependiendo del campo, es posible que necesite muchas más matemáticas. p.ej. Gráficos / Juegos / GPGPU / Simulaciones físicas / Finanzas, etc.

Si quieres ser ingeniero y desarrollar una carrera utilizando la tecnología para resolver problemas de la vida real, entonces no tienes que ser un genio matemático de ninguna forma.

Si quieres ser científico y hacer una carrera investigando tecnología e inventando nuevas tecnologías, entonces debes ser un gran solucionador de problemas. La habilidad matemática te da esas habilidades. Sin embargo, no tienes que ser prodigioso. Dennis Ritchie, el inventor de C tenía un título en matemáticas, pero no era “prodigioso” en matemáticas. James Gosling, el padre de Java, ni siquiera es matemático. No le creo a Linus Torvalds, el inventor de Linux es un prodigio matemático. Creo que estas personas estarían por encima del promedio.

Los únicos informáticos que también eran prodigios de las matemáticas, que puedo recordar, son Alan Turing y Von Nuemann, y estos 2 individuos estaban en su propia clase. Mientras tanto, ha habido cientos, si no miles de informáticos que han liderado el campo de la informática sin ser algún tipo de genio de las matemáticas.

No sé dónde te encontrarás con estos científicos prodigios de las matemáticas. ¿Qué han hecho exactamente estas personas además de obtener un puntaje alto en las composiciones matemáticas? Tal vez, hay un sesgo de autoselección aquí, ¿hmm?

Debería estudiar suficientes matemáticas para comprender los desafíos planteados y elaborar una estrategia en papel y lápiz para resolver el problema. La estrategia de papel y lápiz no tiene que ser eficiente; está bien si le llevaría días, meses o años encontrar la respuesta correcta utilizando la estrategia, siempre y cuando eventualmente encuentre la respuesta correcta.

Una vez que tenga estas dos cosas, podría automatizar las estrategias utilizando casi cualquier lenguaje de programación.

Depende de su definición de programador exitoso y del dominio en el que estará trabajando. El éxito de muchos desafíos de ingeniería de software no radica en los algoritmos sino en otros factores como las personas y la tecnología (madurez de plataforma y lenguaje). La computación científica requiere un conjunto de habilidades completamente diferente a la programación móvil y web.

En mi experiencia, una vez que haya aprendido los conceptos básicos para resolver problemas como el de TopCoder, es mucho más útil pasar tiempo aprendiendo cómo trabajar con otras personas y cómo construir software reutilizable que ser un genio de las matemáticas.

Recursos matemáticos específicos:

– Introducción a los algoritmos, MIT Press, Cormen.

– Matemáticas para la informática (MIT OpenCourseWare)

Sorprendentemente poco. A menudo terminas manipulando cosas de manera algebraica, y necesitas algo de lógica (no es que necesites tomar una clase para eso). Después de eso, depende específicamente de lo que estás haciendo. Ciertos tipos de programas requerirán ciertas habilidades matemáticas. En ocasiones, he encontrado que trigonometría es útil, pero solo por las cosas específicas en las que estaba trabajando.

Aquí está el requisito matemático esencial: preálgebra, eso es todo.

Todo lo demás es la guinda del pastel, como se detalla en la respuesta de Marcas Neal a ¿Cuál es la forma más rápida para que un estudiante de informática moleste a un programador / ingeniero de software que trabaja?

He estado escribiendo software por más de 20 años. He sido publicado varias veces en algunas revistas comerciales y soy una autoridad respetada en mi campo, no he usado ninguna matemática más complicada que el preálgebra en mi código.
Aunque sufrí algunos cursos de cálculo y trigonometría en la universidad, estos fueron necesarios para obtener el título de CS. La comprensión de las matemáticas avanzadas puede ayudarlo a pensar en formas abstractas, pero de ninguna manera necesita ser un “genio de las matemáticas” para tener éxito en la industria de TI.

No necesitas ser un genio de las matemáticas para ser bueno en CS. La mayoría de las personas que conozco probablemente piensan que sí, pero no lo soy. Siempre me fue mejor en áreas verbales y de escritura que en matemáticas. No soy malo, diría que soy muy bueno, pero lejos de ser un genio de las matemáticas.

Conozco personas que son. A uno de mis mejores amigos de la universidad le encantó. Le pidió a sus padres que le dieran un avión de vidrio y un marcador para su cumpleaños para que pudiera trabajar en él. Pero no puede codificar mierda. Simplemente no piensa de esa manera. Tenía que tomar una clase introductoria de CS y lo odiaba.

Diría que la mayoría de las personas que son buenas en CS también son buenas en matemáticas, pero no tienen que ser increíblemente buenas, y no tienen que amar las matemáticas. Me encantan las matemáticas discretas, pero la OMI es prácticamente solo CS. Sé que hay personas que son increíblemente buenas en ambos y aman a ambos por igual, pero todavía no me he encontrado.

Aritmética básica (comprensión de los algoritmos clásicos, básicamente), y ayuda a ser realmente fuerte en lógica y, si es posible, en teoría de conjuntos.

Una comprensión de los fundamentos de las matemáticas puede ser útil, pero esto normalmente vendrá en función del estudio de la lógica y la teoría de conjuntos. Esto le dará una buena visión (o al menos conocimiento) de la estructura de los números para que el concepto de desbordamiento sea fácilmente evidente, al igual que las condiciones en las que es probable que ocurra.

Según lo que ha escrito, tiene el potencial de tener un buen desempeño en CS, en mi opinión. Lo bien que lo haga dependerá de una serie de factores, como el mercado general de ciertos tipos de trabajo, cuánto esfuerzo están dispuestos a realizar otras personas con una aptitud comparable a la suya para lograr sus objetivos, etc.

Después de 40 años ganando la vida desarrollando software, la mayoría de las matemáticas que tuve que usar fue el álgebra de la escuela secundaria. (Tuve que aprender contabilidad una vez, escribir un programa de contabilidad, pero eso es solo aritmética. Y nunca había tomado un curso de contabilidad en la escuela).

Si va a desarrollar programas en campos científicos que usan matemática avanzada, tendrá que conocer las matemáticas, o pedirle a alguien en el campo científico que escriba las matemáticas por usted, luego simplemente prográmelas. (Lo hice con óptica, en lugar de aprender óptica, tuve un técnico que me dio las fórmulas que necesitaba).

Como otros dicen, depende de lo que quieras hacer y de cuán limitado quieras ser.

Un programador de juegos moderno necesita comprender Álgebra lineal, que generalmente se enseña después del cálculo.

Bueno, muchas tareas requieren teoría de números, geometría (para aquellas tareas con polígonos que pueden ser bastante complicados) y conceptos básicos de combinatoria (todas esas permutaciones, combinaciones, etc.).

Toma este conocimiento y agrega un poco de imaginación matemática: mira y mira, eres el rey del Proyecto Euler 🙂

¡Buena suerte!

Desde mi experiencia personal, los temas de las matemáticas discretas, como la teoría de conjuntos, la lógica, las relaciones de recurrencia, etc., son esencialmente necesarios para que uno sea un buen programador.

Depende de lo que estés programando. Para sistemas grandes de clase empresarial, generalmente hay muy pocas matemáticas que necesita saber, y cualquier cosa que necesite saber se proporcionará en los requisitos comerciales del sistema que está programando. Los informes tienden a ser el único lugar donde las matemáticas son importantes, y aquí generalmente usará estadísticas.

Preguntas similares a esta ya se han hecho varias veces. Siga este enlace y escanee hacia abajo para verlos.

https://www.quora.com/search?q=p