¿Cuánto de aprender un lenguaje de programación de computadoras (como C ++) tiene sus raíces en las matemáticas, es decir, ¿necesito tener un cerebro matemáticamente competente para escribir programas?

El jurado todavía está fuera de esto. Joel Spolsky dijo famoso:

Por alguna razón, la mayoría de las personas parecen nacer sin la parte del cerebro que entiende los punteros.

En otras palabras, piensa que comprender los punteros requiere una cierta aptitud que algunas personas simplemente no tienen.

No todos están de acuerdo con él, por supuesto. No estoy seguro de si estoy o no de acuerdo con él. Tal vez hay tal cosa. Quizás no lo hay.

Creo que si tienes interés en aprender programación, deberías seguir adelante y probar. No debes asumir que te falta la aptitud. Incluso si le ha ido mal en la clase de matemáticas, eso no prueba que no tenga un “cerebro matemático” o que le falte aptitud, simplemente podría ser que sus maestros de matemáticas no lo hayan motivado lo suficiente . Quizás la programación es lo correcto para comenzar con el razonamiento cuantitativo. Dale un tiro.

Esta pregunta me ha acosado por mucho tiempo. He estado programando durante todo el tiempo que tenía capacidad de razonamiento abstracto, pero no me gustaban mucho las matemáticas. No lo odié exactamente, simplemente no lo disfruté, para mí fue algo así como literatura, donde la memorización es el rey: para obtener el área de un círculo, inserte los números en esta fórmula; para un triángulo, usa la otra fórmula. No hay explicación de la lógica detrás de esas fórmulas, ni siquiera una nota histórica sobre cómo se derivaron. Bueno, puse dos y dos juntos y comencé a escribir programas que escriben mi tarea de matemáticas, porque joder, prefiero jugar juegos que hacer un trabajo duro.

Más tarde, en la universidad, una de las primeras cosas que nos dijeron fue “olvida todo lo que has aprendido en la escuela”. Estaba ansioso por cumplir, no es que hubiera mucho que olvidar, ya que en realidad no aprendí mucho (excepto cómo convertir las fórmulas en software). Resultó que las matemáticas superiores eran realmente como la programación: sumas, secuencias, predicados, funciones … ¡ALGORITMOS que explicaban todo en el mismo nivel de detalle que tendrías en un lenguaje de programación! ¡Todo siguió a los primeros principios, sin grandes saltos de razonamiento!

Entonces, para responder a su pregunta, 1) depende de qué matemática: las matemáticas más altas son solo otro lenguaje de programación con una sintaxis ligeramente extraña, pero una semántica totalmente razonable, y 2) necesita un cerebro de programador para escribir matemáticas 🙂

He pasado por esto, así que solo responderé con mi historia y podrás decidir:

Como estudiante de primer año de Ciencias de la Computación, mi maestro Calc 1 me hizo a un lado y me dijo que no debía especializarme en CS porque era tan malo en el cálculo que nunca sería bueno en la programación.

Lo intenté muy duro pero reprobé su clase, lo tomé nuevamente con un maestro diferente, lo dejé caer después de calcular que no podía aprobar, lo tomé nuevamente por tercera vez (después de que mi profesor de C ++ me alentó y le dijo que me ayudaría) y luchó para pasar con un B-. Me sentí muy estúpido, más aún por estar orgulloso de mí mismo por haber pasado. Era bastante bueno en álgebra a los 14 años y orgulloso de eso. Estaba convencido de que, quizás, matemáticamente, mi cerebro se había agotado al máximo a los 14 años.

Ahora tengo 34 años y he hecho cosas con la informática que han superado con creces lo que creía posible, incluida mi carrera. Lo más interesante es que ahora he llegado a comprender las matemáticas a través de la programación.

De lo que me he dado cuenta es que las matemáticas y la programación son solo dos lenguajes diferentes para describir los mismos conceptos lógicos. Algunas personas hablan matemáticas. Yo hablo ciencias de la computación. Quizás tú también

1) Aprende sobre la marcha:
No, no necesitas un cerebro matemático para programar. Sin embargo, hay algunas áreas que requieren matemáticas. Pero puede recoger cosas si lo necesita.

2) Motivación:
El interés, el funcionamiento interno de un sistema que necesita saber, el autoaprendizaje, el entusiasmo y la energía son tan importantes como cualquier otra cosa.

3) Habilidades útiles:
Sin embargo, se requiere un razonamiento analítico lógico, capacidad para pensar las cosas, atención al detalle y trabajo duro. 🙂

4) Enfoque:
Enfoque de arriba hacia abajo para desglosar el trabajo hasta que sean simplemente lo suficientemente codificables. Uso de pseudocódigo para planificar la descomposición funcional o el análisis y diseño de OOP.
Enfoque ascendente para codificar primero las capas subyacentes en una biblioteca para su uso posterior por capas superiores.
De arriba hacia abajo requiere más amplitud en la visualización por adelantado y puede estar más en tu callejón. De abajo hacia arriba es un enfoque de tuercas y tornillos.

Vea también mi respuesta relacionada Respuesta del usuario de Quora a Soy una persona de humanidades y encuentro que la programación es muy difícil de aprender. ¿Por qué es esto?

Respuesta del usuario de Quora a Para volver a aprender matemáticas, tanto los sitios web como los libros proporcionan contenido visual (texto y algunos de ellos muestran ilustraciones). Entonces, ¿son los sitios web una alternativa a los libros (contenido de calidad)?

Considero que la programación en realidad es parte de las matemáticas. Piénsalo. La matemática se trata de reconocer y tratar con patrones y similares, y ¿qué es la programación sino lo mismo?

Por supuesto, la aplicación del arte de la programación es diferente de, por ejemplo, durante las “pruebas” matemáticas puras, pero eso no viene al caso. En ambos, está manipulando símbolos para representar alguna otra cualidad, proceso o procedimiento.

Quizás la pregunta podría reformularse, como qué otras áreas de las matemáticas podrían ser beneficiosas para escribir software. Y, por supuesto, la respuesta a eso es que depende de lo que intente lograr. Si está escribiendo el software que se utilizará en la predicción del clima, necesitará ecuaciones diferenciales de servicio pesado y análisis de vectores solo para empezar. Si está escribiendo un juego que involucra física, entonces, por supuesto, necesitará vectores y algunos cálculos básicos. Si está (ugh) escribiendo programas de contabilidad, entonces obviamente necesita contabilidad. Si se trata de “big data”, entonces necesitará saber algo sobre “teoría de conjuntos”, etc.

Cuantas más matemáticas conozcas, mejor serás. Pero me enfocaría directamente en lo que necesita saber en el dominio del problema específico de interés y me expandiría desde allí.

Creo que la mayor habilidad que necesitas es un “cerebro para resolver problemas”. Las matemáticas son parte de las computadoras, por supuesto, pero como he aprendido C ++ y Java, lo que más ha crecido no son mis habilidades matemáticas sino más bien mi capacidad para resolver problemas. Aprender los idiomas y la implementación adecuada de cada comando se basa mucho más en el pensamiento crítico que en la matemática pura. Pero si todavía no siente que puede resolver problemas, ¡no se preocupe! Al principio era muy malo, pero al intentar repetidamente todo tipo de proyectos y problemas, mis habilidades para resolver problemas han mejorado drásticamente.

En resumen: las matemáticas ayudan, pero no son tan cruciales al menos en niveles más bajos como el pensamiento crítico.

¡Espero que ayude!

Solo tienes que saber más, menos, dividir y multiplicar. No olvides que estás trabajando en una calculadora de gran tamaño. Conocía funciones, punteros e hice algunos trucos geniales con pecado, cos y otras funciones en mi Apple II cuando tenía 12-13 años, mucho antes de que supiera trigonometría o cualquier tontería, no comencé a aprender sobre cuadrados o cos y bronceado. antes de los 17 años

Entonces, no, no necesita saber matemáticas avanzadas a menos que esté profundizando en un territorio matemático avanzado, como investigación de astronomía, compresión, programación 3D y ciencia más o menos avanzada.

Lo que principalmente hace es tomar una lista, obtener algunos valores de ella, como promedio, contar y otros, y casi siempre hay funciones que lo hacen por usted.

Entonces, no te preocupes. Aprenderá a programar más rápido que las matemáticas y siempre aprenderá lo que necesita cuando lo necesita.

Escribo para una aplicación que se integra con una base de datos SQL y muestra información en un navegador web. No uso muchas matemáticas directamente, pero el problema del swing y los principios de diseño iterativo que aprendí en álgebra lineal lo aplico casi todos los días.

Realmente depende de lo que estés programando. En los días en que estoy trabajando más en la interfaz de usuario frontal, apenas tengo que pensar en las matemáticas o la complejidad de lo que estoy haciendo. Casillas de verificación en la pantalla.

En los días en que escribo una herramienta personalizada para obtener información de la base de datos en un nivel bajo, distribuir y mutilar los datos, y transformarlos en algo necesario para el diagnóstico o los datos específicos del cliente, generalmente utilizo las mejores prácticas y pienso rendimiento, lo que significa decidir si voy a usar un bucle for versus un do-while, y qué tan profundo necesito ir en ciertas clases realmente grandes para obtener información.

Hay días con muchas matemáticas y días con pocas matemáticas. Comprender el análisis de algoritmos y poder, de un vistazo, identificar los puntos de estrangulamiento en el código o los puntos donde va a haber un tiempo de cálculo pesado me hace escribir mejores, más seguras y más responsables aplicaciones. ¿Me siento y hago los cálculos para decirte el Big-O? Casi nunca desde que me gradué.

Ayuda, a veces, mucho.

Pero la mayor parte es tener sentido común y una mente lógica y una gran paciencia.

La mayoría de la programación actual es básicamente un pésimo fontanero, se canalizan algunos datos de alguna fuente a otra API que se comunica con un servicio web que ejecuta JavaScript que llama a otra API JS. No hay muchas matemáticas allí.

Pero si desea escribir un algoritmo eficiente o preciso para hacer algo complejo, es de gran ayuda poder estimar el tiempo de ejecución y la complejidad del código y encontrar trucos interesantes, a veces relacionados con las matemáticas.

No necesita saber matemáticas para aprender a programar, pero ciertamente ayuda. Cualquier tipo de pensamiento lógico ayuda.

También puede encontrar problemas matemáticos reales al programar. Cualquier cosa relacionada con gráficos 2D o 3D es más fácil de hacer si conoce geomery, vectores y matrices. Cualquier cosa relacionada con la seguridad digital es más fácil de hacer si comprende alguna teoría numérica.

Para aprender un lenguaje de programación y crear programas simples, no necesitas habilidades matemáticas superiores. Incluso los programadores profesionales que escriben principalmente software de negocios rara vez usarán matemáticas de nivel universitario. Sin embargo, si está interesado en la programación de juegos o gráficos en tiempo real, procesamiento de video y audio, Inteligencia Artificial, etc., se le solicitará que aplique matemática de alto nivel en contexto al problema. Un título en Informática te dará la base para construir una carrera haciendo lo que quieras con la programación.

Aprender un lenguaje de programación de computadoras es, como su nombre, aprender un idioma. En cierto sentido, está tan relacionado con las matemáticas como el inglés. Consiste en las siguientes prácticas:

  • gramática (sintaxis)
  • vocabulario (palabras clave y bibliotecas)
  • leyendo
  • escritura

La mayoría de los lenguajes de programación no se pueden hablar, pero algunos han descubierto formas de programar con voz, como esta:

Por otro lado, los lenguajes de programación a menudo se usan para implementar algoritmos, que requieren matemáticas. Esa es otra historia, y se cuenta abundantemente.

Aprender el concepto de “lenguaje”, es decir, la lingüística, es otra historia. Los lenguajes de computadora son especiales porque la lingüística sobre ellos implica muchas más matemáticas que los lenguajes convencionales. Después de todo, están “diseñados” por una persona o grupo en particular en lugar de “acordados” por todos los usuarios del mismo.

Para señalar cualquier posible sesgo de perspectiva, señalaré que estoy educado como matemático en lugar de informático. Eso puede colorear mi punto de vista.

Yo diría que gran parte de la programación es ‘raíz’ en Matemáticas.
Sin embargo, muchas de las capacidades mentales requeridas para las matemáticas son necesarias para la programación:

1. La capacidad de comprender la lógica detallada.
2. La capacidad de pensar en generalizaciones y abstracciones, así como en casos concretos.
3. Razonamiento inductivo y prueba (en CS para bucles y recursivos)
4. Comprender y manipular expresiones booleanas complejas de varios términos
5. Leer y escribir en idiomas formales (¡duh!)
6. Divide y conquista problemas lógicos y de razonamiento de manera eficiente.

Hay un elemento matemático de núcleo duro para la informática, como el escalado asintótico de algoritmos, pero diría que no importa cuán ‘amigable’ sea su conjunto de herramientas, solo llegará hasta ahora en la programación. Ya sea que lo sepan o no, los niños que usan Scratch hacen las 6 cosas en mayor o menor medida y cuanto más las hagan, más avanzado será su rendimiento.

Más exactamente: la programación y las matemáticas comparten una raíz común: la lógica. Si eres bueno en razonamiento lógico, es muy probable que seas bueno tanto en programación como en matemáticas. Y lo contrario es igualmente cierto.

Pero me gusta la respuesta de Brian Bi: si has tenido problemas con las matemáticas en el pasado, no necesariamente significa que no tienes la capacidad mental para hacerlo. Quizás tuviste maestros malos.

Le sugiero que pruebe algunos tutoriales en línea para un lenguaje de programación orientado a objetos, como Python o Ruby (no Ruby on Rails, simplemente Ruby). Continúe hasta llegar a la parte del tutorial donde aprende sobre objetos, sus métodos, instancias y herencia. Si todo esto le parece fácil de entender, ¡continúe y no mire hacia atrás! Si de repente tu cerebro golpea una pared de ladrillos y no quiere comprender estos conceptos, entonces tal vez la programación no sea para ti.

Como para cualquier otra pregunta, la respuesta es: depende.
La programación, especialmente hoy en día con una gran cantidad de marcos listos para usar, está bastante abierta a cualquiera. La verdadera pregunta es qué programarás. Si desea enfocarse en UI / UX y programas transaccionales simples, entonces no hay necesidad real de matemáticas.

Sin embargo, si planea desarrollar algoritmos, trabajar con bases de datos o campos tales como visión por computadora / gráficos, entonces un conocimiento profundo de las matemáticas es inherente a hacer un buen trabajo. Por supuesto, hay algunos genios que están tan matemáticamente conectados que saben cómo hacer estas cosas sin la educación formal de las matemáticas de alto nivel, pero esas personas son raras.

No creo que las matemáticas contribuyan mucho a la programación. Sin embargo, creo que hay un sustrato de disfrute de los diseños abstractos que ilumina tanto la programación como las matemáticas. Entonces la misma mente tenderá a disfrutar de ambos.

El problema es que la entrada a ambos está bloqueada por una puerta de detalles muy concretos que se espera que domines antes de llegar a los hermosos patrones. En el caso de las matemáticas, este es el tedio de la aritmética básica y la geometría simple; en el caso de la programación, ese es el editor de gastos generales y los mecanismos para obtener IO simple para su programa. Debes superar estas barreras con un poco de entusiasmo y energía antes de que puedas graduarte en los momentos divertidos. Demasiadas personas han gastado todos los recursos que están dispuestos a asignar antes de cruzar la zona de entrada.

No tanto. Por desgracia, comprender y dominar, requiere las mismas habilidades mentales. En otras palabras, cualquier persona buena en una, tiene el potencial de ser buena en la otra. Pero aprender uno no implica lo otro. Entonces, el proceso de razonamiento de un programador de computadoras puede parecer matemático para la mayoría solo porque eso es lo que todos aprenden primero.

Por cierto, va en ambos sentidos: sobresalir en informática es dudoso para cualquier persona que no entienda las matemáticas.

No. Requiere que tengas buenas habilidades de razonamiento y lógica. La razón por la cual las matemáticas a menudo se asocian con la programación es que enseña mucho de ese razonamiento gradual, desglose de problemas y lógica que es común en la programación. Además, las matemáticas también se enseñan junto con la programación en los currículos de Ciencias de la Computación, ya que las matemáticas forman la base de muchos algoritmos y conceptos formales de programación.

Pero para ser bueno en la programación, no, no se requieren grandes habilidades matemáticas. Su capacidad para buscar un problema, dividirlo en pasos y componentes y resúmenes es en gran medida lo que define su capacidad para ser un buen programador.

Tener un conocimiento básico de álgebra es un buen comienzo para comenzar con la programación y si la programación es lo que te gusta, entonces otras matemáticas comenzarán a medida que aprendas más sobre codificación. Hasta dónde llega es cómo su cerebro puede manejar el aprendizaje de más y más matemáticas. Algunas personas se detienen en cierto punto, mientras que otras se convierten en programadores de pasatiempos o profesionales.
La programación también se basa en la lógica como han dicho otros y, desafortunadamente, algunas personas también se detienen allí en un momento en que algo simplemente no se hunde.
Empecé a ir más lejos ahora con la codificación 3D y el estudio, y eso me está tomando algo de tiempo, pero lo estoy aprendiendo. Esa es la ruta por la que voy. Otros nunca entran en 3D y se adhieren a otros tipos de codificación o incluso pasan a idiomas de nivel superior.
Dependiendo de qué ruta de programación tome, dependerá del tipo de matemática y lógica adicionales que aprenda.

No hay mucho en el lenguaje en sí que requiera ningún conocimiento avanzado de matemáticas. Se requiere comprender muy bien las matemáticas booleanas, pero uno podría aprender a programar en C ++ bastante bien incluso sin tener conocimientos de álgebra.

Ahora, aquí está el problema: a menudo se encontrará con situaciones como programador de C ++ donde se espera que pueda trabajar con álgebra y matemáticas superiores debido a las tareas específicas que debe cumplir su código. Creo que a menudo un cliente o empleador espera que usted tenga un buen conocimiento práctico de las matemáticas para completar correctamente su tarea. Supongo que la idea es que si eres un programador profesional, muchos clientes y empleadores esperarán que tengas un conocimiento práctico de las matemáticas avanzadas; esto es lo que he experimentado en mi carrera de programación.

Por lo tanto, su conocimiento de las matemáticas es muy importante para ser un programador de C ++ exitoso: simplemente no es necesario para aprender el lenguaje en sí, pero es muy necesario poder escribir código que requiera el uso de las matemáticas (lo cual es bastante frecuente). )

More Interesting

¿Qué asignatura de matemática es más relevante para la ingeniería de software, la combinatoria o la teoría de números?

¿Cuál es la complejidad temporal de la ecuación T (n) = T (\ sqrt {n}) + n; n> 2 T (n) = C; n = 2?

¿Es la matemática de la computación (UCLA) una especialidad decente para ir a la escuela de posgrado en informática?

¿Cuál es la forma más sencilla de entender las máquinas de Turing y el problema del castor ocupado?

¿Qué pasaría si un procesador pudiera procesar más rápido que la velocidad de la luz?

Si se le da un gráfico G no dirigido simple, ¿cómo podemos encontrar todas las subgrafías inducidas de G, que son gráficos de girasol, dentro de una cantidad de tiempo polinómica?

¿Quiénes son los mejores profesores que trabajan en algoritmos de aproximación?

¿Cuál es la relevancia de la computación cuántica para el problema NP = P?

¿Cómo funciona el proceso de eliminación en una lista vinculada? ¿Es solo eliminando la referencia del nodo? ¿Qué mecanismo se utiliza para disponer un nodo?

Cómo responder a las consultas de rango medio de manera eficiente

¿Son defectuosos los números complejos?

¿Cuáles son algunos temas imprescindibles en matemática discreta y probabilidad de programación competitiva?

¿Son los algoritmos y las fórmulas dos cosas diferentes y mutuamente excluyentes? ¿Cuál es o no es la diferencia?

Si f (n) es O (g (n)) yf (n) es O (h (n)), ¿significa que g (n) es O (h (n))?

¿Cuál es la complejidad temporal de T (n) = T (n / a) + T (n / b) + cn cuando 1 / a + 1 / b> 1? Por ejemplo T (18n / 20) + T (5n / 20) + n.