algorithm - temario - matematicas discretas schaum pdf
¿Deberían los desarrolladores saber matemáticas discretas? (10)
Algún conocimiento de matemática discreta podría ayudarlo a detenerse antes de pasar mucho tiempo tratando de codificar algo matemáticamente imposible o de complejidad NP para resolverlo. Obtendrá una mejor "sensación" cuando un problema de software o una ruta de solución propuesta se parezca más a una tarea fácil o a uno de esos proyectos a término que nadie en su clase haya completado.
¿Es importante que los desarrolladores conozcan las matemáticas discretas? La mayoría de los libros sobre algoritmos y análisis tienen al menos algunas referencias a las matemáticas. En principio, puedo entender fácilmente los algoritmos 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?
Depende de qué parte de las matemáticas discretas estás hablando. Por supuesto, saber matemáticas siempre será una ventaja ... pero creo que conocer algunas partes de la matemática discreta no solo es una ventaja, sino que es muy esencial para un desarrollador (por supuesto, depende de los proyectos en los que está trabajando) .
Pero temas como:
- Teoría de conjuntos
- Teoría de grafos
- Alg. Análisis
- Alg. Complejidad
- Clasificación
- etc ...
Son esenciales para un desarrollador.
Depende del tipo de desarrollador del que estés hablando y del tipo de matemática del que estés hablando. Estoy bastante seguro de que la mayoría de los desarrolladores "normales" no necesitan saber mucho acerca de las matemáticas. Pero, ¿quieres ser un desarrollador "ordinario"?
- Si está desarrollando aplicaciones web que solo muestran y permiten la edición de datos en una base de datos, entonces probablemente nunca necesitará cálculos matemáticos.
- Por otro lado, si está desarrollando un sistema de GPS que muestra una ruta hacia el objetivo (o alguna otra aplicación que haga cálculos más complicados), las matemáticas discretas serán útiles.
- Sin embargo, no es necesariamente una matemática discreta; por ejemplo, en la industria financiera, las personas necesitan probabilidades y estadísticas con mucha más frecuencia.
Dicho esto, saber matemáticas definitivamente lo hará un mejor desarrollador, porque entrena su mente de una manera que es útil no solo para resolver problemas específicos (matemáticos), sino que también le enseña cómo pensar los problemas de una manera más formal (que Creo que es importante para escribir el código correcto).
El tipo de problemas que tienes la oportunidad de resolver depende de lo que sabes.
Si solo conoce matemáticas de 4º grado, solo se le pedirá que resuelva problemas que impliquen matemáticas en un nivel de 4º grado o menos.
Si aspira a hacer más o comprende los fundamentos de otros algoritmos, tendrá que aprender las matemáticas que sean necesarias.
Creo que encontrará que trabajar en los puntos en los que se queda estancado 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 escuchar a las personas de inmediato despreciar un área que les resulta difícil, como para justificar su falta de voluntad para superar el dolor de la ignorancia y la lucha. Aprender cualquier nueva habilidad requiere que atravieses esa barrera, ya sea matemática o cualquier otra cosa. Te aconsejo que te mantengas al día y te demuestres que puedes dominar algo difícil resistiendo la tentación de rendirte.
En general, no se espera que tenga un conocimiento profundo de las matemáticas, a menos que la aplicación lo requiera, por ejemplo, está escribiendo software financiero o haciendo un modelado 3D, equilibrando la carga en un avión, escribiendo algún algoritmo de compresión personalizado, etc. He trabajado con grandes desarrolladores que lucharon con matemáticas simples. Y saber matemáticas discretas parece muy específico. Tener una comprensión de cómo funcionan 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 entender el negocio para el que está construyendo y cómo aborda la escritura de código (legibilidad, modular, etc.)
Mi experiencia es esta:
Saber algo acerca de las matemáticas discretas es algo de lo que nunca te arrepentirás. Hará que su trabajo sea 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 forma remota probablemente no sean útiles para la mayoría de los programadores, pero definitivamente lo es una familiaridad pasajera.
Dicho esto, la mayoría de los programadores en la industria con los que me he encontrado (¡e incluso algunos en el mundo académico!) No saben casi nada de esto, por lo que no saberlo es poco probable que lo sitúe en una desventaja significativa fuera de algunas subdisciplinas de programación especializadas.
Sí.
Me parece que las matemáticas discretas son bastante básicas para la informática. La comprensión de la teoría de conjuntos, el álgebra booleana, los mapas, etc. son beneficiosos para un desarrollador y forman parte de las matemáticas discretas.
Por supuesto, los conceptos no siempre serán aplicables en el sentido más académico. Casi nunca abrirá su libro de texto de matemáticas discretas y copiará algo en su código para resolver un problema. Sin embargo, entender esos conceptos ayudará a los desarrolladores a escribir mejor código, mejores algoritmos y usar patrones de diseño de manera más efectiva.
Si su trabajo es puro CS, como la búsqueda en Google, donde usted inventa nuevos algoritmos, entonces sí, tendrá que ser capaz de analizar los tiempos de ejecución bastante bien, también algo similar a las simulaciones físicas. Si eres un desarrollador ''normal'', entonces deberás conocer los tiempos de ejecución y lo que significan y su impacto en tu aplicación.
Ya has 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, le permite encontrar y corregir muchos errores y malentendidos. También le permite manejar situaciones que son casi, pero no del todo, la forma en que se encuentran en el libro de texto, y darse cuenta de cuándo ya no se aplica la respuesta del libro de texto. El tiempo dedicado a comprender incluso una pequeña parte de algo que puede usar o trabajar no se perderá.
Depende de lo que el desarrollador esté haciendo probablemente. Si estás haciendo web, probablemente no, tal vez un poco cuando se trata de seguridad. Como el tiempo que tarda un ataque de fuerza bruta en decodificar una clave de cierto número de bits bajo un determinado hash. Si estás haciendo gráficos para juegos de gama alta, probablemente debas entender un poco de matemáticas y las ventajas y desventajas de los métodos. Como administrador o red de DB, no deberías.