2010-08-24 14 views
6

He leído muchos blogs y publicaciones en el foro sobre las matemáticas en la programación y he llegado a la conclusión de que las matemáticas básicas son necesarias en la programación. No soy un buen matemático. ¿Pero es de alguna manera posible mejorar mi pensamiento lógico y algorítmico sin profundizar en la ciencia de las matemáticas? ¿Hay algún ejercicio o algunos libros que puedan ayudarme a mejorar estas habilidades para poder convertirme en un buen arquitecto?Matemáticas y programación

Gracias de antemano.

+3

¿Podría darnos una idea de lo buenas que son sus matemáticas? ¿Qué es lo que reconoces en esta lista? ¿En qué dirías que eres competente? -Trigonometry -Calculus -Probabilidad/Matemáticas discreta -linear Álgebra (matrices) -Manejo de Estadísticas -Análisis (cosas como serie infinita, sumas infinitas) –

+0

creo que esto es una adecuada diferente, y pregunta más manejable que la más común http://stackoverflow.com/questions/157354/is-mathematics-necessary-for-programming – mctylr

+0

No puedo decir que sea bueno. 3 puntos de 5.Me perdí algo en la escuela y me resultó difícil comprender las matemáticas superiores. – Azat

Respuesta

2

¿Pero de alguna manera es posible mejorar mi pensamiento lógico y algorítmico sin profundizar en la ciencia de las matemáticas?

Pero la lógica y la resolución de problemas es la base de las matemáticas.

Sospecho que el problema real es cómo se enseñan las matemáticas, y lo que tú (y tus profesores anteriores) piensan que son las matemáticas. Recomendaría A Mathematician's Lament, para una mejor explicación de lo que son las matemáticas, frente a lo que normalmente se nos enseña son las matemáticas.

¿Hay algún ejercicio o algunos libros que puedan ayudarme a mejorar estas habilidades para poder convertirme en un buen arquitecto?

Sí, otros le han dado una mejor lista de sugerencias de lo que podía, pero la idea básica es que sí se puede aprender a ser mejor en las matemáticas, en particular, las matemáticas que más comúnmente se refiere a la Informática y programación.

Supongo que quiere decir arquitecto de software, porque la arquitectura tradicional, como la ingeniería, tiene una base firme en matemática aplicada. De todos modos, un buen arquitecto de software debe ser lo suficientemente cómodo como para hacer un análisis informal y un análisis algorítmico, que requiere una base matemática.

Normalmente diría que si pudiera aprender equivalentes a los requisitos matemáticos típicos de primer año de la universidad para un título de informática (es decir, primer año de cálculo, matemáticas discretas o álgebra lineal), sería un gran avance para convertirte en un mejor informático y mejor programador o arquitecto. No es imposible sin, pero puede hacerlo mejor en su trabajo (más rápido para evaluar o resolver problemas de manera correcta, eficiente y efectiva).

Buena suerte.

+0

Sí, exactamente. Quise decir arquitecto de software. – Azat

7

trabajo a través Project Euler.

El comienzo de CLRS Algorithms tiene un poco de teoría de números, matemática discreta, combinatoria, probabilidad, teoría de grafos y otras cosas realmente útiles. Está enseñando exactamente qué es aplicable a los algoritmos, y omitiendo todo lo demás.

0

hay muchos tipos de programación. Si está diseñando algoritmos de compresión inalámbricos, probablemente querrá un máster en ingeniería. Si estás haciendo un selector de color en línea, estarás bien con el trigonometría de la escuela secundaria.

3

Grandes sugerencias anteriores: para poner algo de esto en contexto, hay una gran project para reformar la educación matemática en la escuela secundaria. Puede ayudarlo a comprender algunas de las frustraciones de aprender matemáticas y cómo superar esas dificultades.

Recuerde: gran parte de la educación matemática consiste en ejercitar su capacidad de pensar de manera abstracta y resolver problemas. Ambas habilidades requieren práctica y, a veces, aunque no veas la conexión directa entre los problemas y la llamada "vida real", siempre hay algo que aprender y practicar resolviendo los problemas.

1

El énfasis en lo que constituye "Matemáticas Discretas" en los currículos de pregrado de Informática ha cambiado en los últimos cuarenta años. Solía ​​ser que tales cursos cubrirían material como el álgebra abstracta y entrarían en conceptos tales como "géneros" y "tipos", que son útiles para la especificación algebraica de programas. Si ese es el tipo de matemática que crees que disfrutarás, entonces compra un libro viejo en Matemáticas Discretas, como este: Discrete Mathematics in Computer Science (1977)$ 5 enviado!

No creo que el ridículamente caro libro de Susanna Epps contenga material similar, y debería saberlo, ya que ese libro terriblemente caro es lo que tuve que usar en mi clase Discrete Maths (2003) - No puedo ¡Creo que el precio casi se ha duplicado desde su precio escandaloso incluso entonces!

1

No necesita saber cálculo para poder programar. La programación de computadoras se compone de operaciones matemáticas muy simples, solo sumas, restas, multiplicaciones, redondeos decimales e incluso divisiones largas (las matemáticas de 4to grado son útiles).

Los contadores son extremadamente útiles; necesitas saber cómo comenzar en cero y contar hacia arriba. Sencillo. La mayoría de los lenguajes tienen un significado basado en cero que comienza con cero en lugar de comenzar con uno. Muchos estudiantes se olvidan de eso. Incremento y preincremento (por ejemplo, i++ y ++i) aumentan la variable i en uno después o antes de usar la variable en la instrucción.

Los operadores lógicos son enormes en la programación. Menos que y más que se utilizan con frecuencia para evaluar un determinado valor y mantenerse dentro de los límites adecuados. Debe tener en cuenta que i < 5 es lo mismo que 5 > i pero calculan a true o false. Cuando se usa así: if (i < 5) ... cuando i = 4, entonces es equivalente a if (true) ...

Del mismo modo, los operadores AND, OR y NOT son importantes para las pruebas booleanas. Es posible que desee saber if (i < 5 && i >= 0) ..., lo que significa que si tengo menos de cinco AND i es mayor o igual que 0. NOT (!) y OR (||) actúan de manera similar.

Algunos lenguajes requieren que diferencie entre enteros y decimales (o números de coma flotante). Las matemáticas enteras utilizan el redondeo de formas diferentes para cada idioma. Los números decimales tienen diferentes problemas de precisión a medida que las operaciones se vuelven más complejas.

Algunas técnicas avanzadas implican la operación del módulo (%). Todo lo que hace es tomar el resto de dividir dos números. Es útil para distinguir entre números pares e impares (por ejemplo, filas en una tabla).

Más información general sobre los conceptos básicos de la programación de computadoras, incluyendo estructuras de control y los operadores: http://computerprogramming.suite101.com/

2

yo diría que la matemáticas que necesita depende de los problemas se le pide que resolver.

Los problemas que se le pide que resuelva dependen de las habilidades matemáticas que tenga.

Cualquiera que diga que solo necesita matemática de 4º grado también le está diciendo que no puede razonablemente esperar tener la oportunidad de resolver problemas más desafiantes.

Me gustaría señalar que las computadoras han cambiado las matemáticas y las aplicaciones. Mi educación de ingeniería consistió en una gran cantidad de cálculo y soluciones de forma cerrada con lápiz y papel.

Mi primera carrera significó aplicar análogos numéricos discretos a esas técnicas en las computadoras.

Si desea hacer ese tipo de trabajo, es mejor aprender mucho sobre numerical methods y linear algebra.

El rango de página de Google era un problema de valor propio de $ 25B cuando se publicó this paper. La capitalización bursátil de Google es de $ 144 billones en la actualidad.

Los gráficos de computadora son matemáticamente intensivos. Si te gustan los gráficos, mejor aprende bien las matrículas.

Las estadísticas son terriblemente importantes, especialmente cuando tiene océanos de datos disponibles para usted en la web. Aprenda R y basic statistics frío.

Lea algo así como "Programming Collective Intelligence" para ver qué tipo de problemas nuevos requerirán algunas matemáticas sofisticadas.

Si desea resolver ese tipo de problemas, lo mejor es estar ocupado.

0

¡Es cierto que una buena base en matemáticas ayudará a programar mucho! Para mejorar su pensamiento algorítmico, puede intentar resolver preguntas combinatorias. A veces, algunos resultados matemáticos sirven para reducir la complejidad del código, por lo que si desea resolver problemas básicos, al menos póngase cómodo con las matemáticas de la escuela secundaria. Le sugiero que lea "El arte de la programación de computadoras" de Donald E. Knuth y "Concrete Mathematics" de Ronald L. Graham, Donald E. Knuth y Oren Patashnik. Creo que Concrete Mathematics te dará una buena base de matemática para la informática, debes intentarlo.

¡Lo mejor de la codificación!

Cuestiones relacionadas