2010-09-05 16 views
16

¿Es importante para los desarrolladores conocer las matemáticas discretas? La mayoría de los libros sobre algoritmos y análisis tienen al menos algunas referencias a las matemáticas. Puedo entender los algoritmos en principio y puedo implementarlos sin ningún problema, pero cuando se trata de las partes matemáticas me quedo atascado. ¿Se asume generalmente que los desarrolladores tendrán un conocimiento profundo de las matemáticas para comprender los algoritmos y los métodos?¿Los desarrolladores deberían saber matemáticas discretas?

+9

Creo que los desarrolladores deberían saberlo todo. Eso sería mejor que no saber todo. –

Respuesta

3

Depende de lo que el desarrollador está haciendo probablemente. Si está haciendo web, probablemente no, tal vez un poco cuando se trata de seguridad. Como el tiempo que tarda un ataque de fuerza bruta para decodificar una clave de cierto número de bits bajo un cierto hash. Si está haciendo gráficos para juegos de alta gama, probablemente necesite comprender bastante las matemáticas y los pros y los contras de los métodos. Como administrador o red de DB, no deberías.

+2

Un administrador de base de datos podría beneficiarse al conocer alguna teoría de colas. –

+2

@Peter G: Y la creación de redes básicamente consiste básicamente en teorizar en cola. No es accidental que el lenguaje de programación principal para las redes de telecomunicaciones lleve el nombre del inventor de la teoría de colas. –

0

Si su trabajo es puro CS como la búsqueda de Google donde inventa nuevos algoritmos, entonces sí, tendrá que ser capaz de analizar los tiempos de ejecución bastante bien, también cualquier cosa como simulaciones de física. Si eres un desarrollador 'normal', entonces necesitarás conocer los tiempos de ejecución y lo que significan y su impacto en tu aplicación.

+0

Sí, por supuesto, puedo averiguar los tiempos de ejecución y el impacto ... al menos para los algoritmos estándar. Pero este no es el único requisito. – NixDev

19

Depende del tipo de desarrollador del que se trate y del tipo de matemática de la que se trate. Estoy bastante seguro de que la mayoría de los desarrolladores "normales" no necesitan saber mucho sobre matemáticas. Pero, ¿quieres ser desarrollador "ordinario"?

  • Si está desarrollando aplicaciones web que solo muestran y permiten la edición de datos en la base de datos, entonces probablemente nunca necesitará ningún cálculo.
  • Por otro lado, si está desarrollando un sistema GPS que muestra una ruta hacia el objetivo (o alguna otra aplicación que haga cálculos más complicados), las matemáticas discretas le serán útiles.
  • Sin embargo, no necesariamente se trata de matemáticas discretas, por ejemplo, en la industria financiera, las personas necesitan probabilidades y estadísticas con mucha más frecuencia.

Dicho esto, saber matemáticas definitivamente te hará un mejor desarrollador, porque entrena tu mente de una manera que es útil no solo para resolver problemas matemáticos específicos, sino que también te enseña a pensar en problemas en una forma más formal (que, creo, es importante para escribir el código correcto).

+0

¿Cuándo un sistema de GPS nunca involucrará matemática continua? – Gian

+0

Bueno ... ¿y cuál es la ruta de aprendizaje? – NixDev

+0

@Gian: No estaba seguro. Estaba pensando en encontrar un camino en un gráfico (o un gráfico similar basado en problemas matemáticos discretos) –

0

Mi experiencia es la siguiente:

Saber algo sobre matemática discreta es algo que nunca se arrepentirá. Hará su trabajo más fácil en muchos casos, incluso en tareas mundanas, porque estará lo suficientemente familiarizado con varios conceptos que al menos le permitirán construir una consulta de Google más inteligente. La familiaridad profunda y la capacidad de hacer estas cosas de memoria probablemente no sean útiles para la mayoría de los programadores, pero una familiaridad pasajera definitivamente sí lo es.

Dicho esto, la mayoría de los programadores en la industria con los que me he encontrado (¡e incluso algunos académicos!) No saben casi nada de esto, por lo que no es probable que te sitúes en desventaja significativa fuera de unos pocos programas especializados subdisciplinas.

0

En general, no se espera que tenga un conocimiento profundo de las matemáticas, a menos que la aplicación lo requiera, p. estás escribiendo software financiero, o haciendo algunos modelado en 3D, balanceo de carga en un avión, escribiendo algún algoritmo de compresión a medida, etc. He trabajado con grandes desarrolladores que tuvieron problemas con las matemáticas simples. Y conocer las matemáticas discretas parece muy específico. Entender cómo funciona una variedad de algoritmos puede ser útil, y si puede hacer eso, no importa mucho que no pueda construir una prueba de su optimalidad, etc.

para ser honesto lo que creo que es más importante es la comprensión de la empresa que está construyendo para, y cómo acercarse a la escritura de código (legibilidad, modular, etc.)

9

Sí.

Encuentro que la matemática discreta es bastante básica para la informática. Comprender la teoría de conjuntos, el álgebra booleana, los mapas, etc. son beneficiosos para un desarrollador y forman parte de la matemática discreta.

Por supuesto, los conceptos no siempre serán aplicables en el sentido más académico. Casi nunca abrirá su discreto libro de texto de matemáticas y copiará algo en su código para resolver un problema. Sin embargo, comprender esos conceptos ayudará a los desarrolladores a escribir mejores códigos, mejores algoritmos y usar patrones de diseño de manera más efectiva.

+1

Ok, pero es el conocimiento de la informática el núcleo del desarrollo de software. No lo creo. –

+3

Creo que es. Tal vez no todos los desarrolladores necesitan un fondo CS, pero cada proyecto lo hace. Mi trabajo implica tomar los requisitos del cliente que pueden ser bastante complejos y encontrar soluciones elegantes para ellos. Sin un título CS, la mayoría de las personas fracasarían en esta tarea. Cuando termino, entrego el diseño a un grupo subcontratado que esencialmente genera el código. No entienden CS, matemática discreta, etc., pero yo sí. –

+3

Tengo que decir que estoy de acuerdo con John Saunders, realmente depende de lo que esté haciendo, si está haciendo un desarrollo con un lenguaje dinámico de alto nivel, es probable que no sea necesario un conocimiento complejo de CS, cuanto más alto sea el nivel de idiomas, más simple se vuelve hacer cosas que antes eran más complicadas, seguro que son menos eficientes en términos de uso de la máquina, pero esto es una compensación para una mayor productividad del programador, y depende de qué tipo de proyecto realmente se pueda decir definitivamente si un el conocimiento profundo de CS es realmente todo lo necesario. – Rick

0

Algún conocimiento de matemática discreta algún día podría ayudarlo a detenerse antes de pasar mucho tiempo intentando codificar algo matemáticamente imposible o la complejidad de NP para resolverlo. Obtendrá una "sensación" mucho mejor para cuando algún problema de software propuesto o ruta de solución se parezca más a una asignación de tarea fácil, o uno de esos proyectos de término que nadie en su clase haya completado.

1

El tipo de problemas que tienes la oportunidad de resolver depende de lo que sabes.

Si solo conoce matemáticas de cuarto grado, solo se le pedirá que resuelva problemas que involucren matemáticas que estén en un nivel de 4º grado o menos.

Si desea hacer más o entender los fundamentos de otros algoritmos, tendrá que aprender cualquier matemática que sea necesaria.

Creo que encontrará que trabajar a través de los puntos en los que se queda atascado mejorará sus matemáticas, su apreciación de los problemas que resuelve y una mejor oportunidad de extender las matemáticas que aprende a nuevas áreas.

Me da náuseas oír a la gente desacreditar inmediatamente un área que les resulta difícil, como para justificar su falta de voluntad de superar el dolor de la ignorancia y la lucha. Aprender cualquier habilidad nueva requiere que atravieses esa barrera, ya sea matemática o cualquier otra cosa. Te aconsejo que te quedes con él y te demuestres a ti mismo que puedes dominar algo difícil al resistir el impulso de rendirte.

1

Ya ha descubierto que los resultados de las matemáticas discretas son útiles en la programación. Mi experiencia es que entender por qué algo funciona, en lugar de intentar simplemente seguirlo de memoria, te permite encontrar y corregir muchos errores y malentendidos. También le permite manejar situaciones que son casi, pero no del todo, como son en el libro de texto, y darse cuenta cuando la respuesta del libro de texto ya no se aplica. El tiempo dedicado a comprender incluso una pequeña parte de algo que podrías usar o en el que trabajar no se desperdiciará.

0

Depende de la parte de las matemáticas discretas que hable. Por supuesto, saber matemáticas siempre será una ventaja ... pero creo que conocer algunas partes de las matemáticas discretas no es solo una ventaja, sino que son muy esenciales para un desarrollador (por supuesto, depende de los proyectos en los que trabaja). .

Pero temas como:

  • teoría de conjuntos
  • La teoría de grafos
  • Alg. Análisis
  • Alg.Complejidad
  • la clasificación
  • etc ...

son esenciales para un desarrollador.

Cuestiones relacionadas