¿Por qué los graduados en matemáticas, física y química son los programadores informáticos más impresionantes? ¿Cómo les ayuda la búsqueda de matemáticas / física a ser programadores tan exitosos? ¿Qué los motiva a profundizar en las computadoras?

Percepción, interpretación o posiblemente incluso interpretación.

Matemáticas y Ciencias son muy similares a la programación de computadoras en la forma en que necesita pensar (modelar el mundo real para identificar soluciones versus modelar el trabajo real para crear procesos).

Los graduados en ciencias de la computación pueden ser más “malos” ya que es su enfoque.

Sin embargo, más personas ingresan a la informática por razones equivocadas, lo que lo convierte en un campo confuso. La mayoría de las personas que estudian física o química, o incluso matemáticas, lo hacen porque les encanta. La mayoría de las personas que van a las computadoras lo hacen porque “pueden ganar dinero”. Como tal, la mayoría de los programadores informáticos no aman la informática.

Esto da como resultado que se aferren a ideas que ya están ahí fuera, encontrando patrones a seguir. (Esto no es malo, pero es como un ingeniero, bueno para armar las piezas, pero solo un interés pasajero en las teorías subyacentes).

Aquellos que aman el aspecto científico de la informática superan los conceptos básicos para profundizar en las nuevas áreas. De hecho, generalmente hacen mal en la mayoría de los trabajos de programación porque están atrapados en hacer las cosas de la forma en que todos los demás las hacen.

Como tal, muchos de los verdaderos científicos informáticos (los que tienen verdadero amor y pasión por comprender las computadoras (no solo construir cosas) a menudo son más impresionantes, pero se pierden en un mar de ingenieros.


No digo que los ingenieros sean malos, ni siquiera los desarrolladores, como solemos llamarlos. De hecho, creo que, en cambio, muestra que necesitamos ciencias de la computación, ingeniería de software, desarrollo web, etc. como grados múltiples.

El CS puede seguir siendo teórico con suficientes aspectos prácticos para seguir las teorías, mientras que la Ingeniería del Software puede enfocarse en aspectos más prácticos que pocos títulos de CS enseñan (incluidos los conceptos del ciclo de vida y aspectos similares).

Parte del problema es que hay tanta demanda y necesidad en este momento, que la distinción sigue siendo confusa, y la búsqueda de verdaderas posiciones de “ciencia” a menudo se ve afectada por los innumerables trabajos de ingeniería o guiones para niños.

Soy ingeniero, ingeniero mecánico, y como siempre he estado programando para la pasión desde que era muy joven (me gradué en 1986, así que comencé a programar 15 años antes con el mal hardware disponible en ese momento). Utilicé mucho la programación durante mi universidad.

Por ejemplo, para el examen de mecánica aplicada, hice una pequeña animación de dos engranajes girando, mostrando cuadro tras cuadro cómo los dientes tocan y transmiten el movimiento. Usando esa animación simple para DOS (1984 si no estoy equivocado) fue bastante fácil ver directamente los problemas típicos que puede crear un tamaño de diente incorrecto.

He estado utilizando mi pasión por la programación en algunas otras situaciones, por ejemplo, para problemas de transferencia de calor, y de hecho me gradué estudiando con un método de Monte Carlo la transferencia de calor radiante en hornos.

Como puede imaginar, el uso de programas de computadora es de suma importancia cuando tiene que crear modelos de trabajo de un problema físico o matemático, por lo que no es una gran sorpresa que los matemáticos, físicos o ingenieros comiencen muy pronto a usar la programación de computadoras para resolver sus problemas reales. problemas.

Hay una característica común para todas las personas que menciona: se enfrentan a problemas reales, es decir, a diario se enfrentan al hecho de que lo que piensan no es exactamente cómo funciona realmente el sistema que intentan modelar. Los matemáticos, médicos e ingenieros están acostumbrados a poner a prueba sus ideas, por lo que no están acostumbrados a enamorarse de su abstracción mental, pero están listos para cambiarla para que funcione.

Esta característica es extremadamente importante cuando se trata de programación de computadoras. Incluso ahora, después de más de 40 años de programación, sé que la primera versión de un programa que escribo no es correcta, necesita correcciones, los errores deben resolverse, se necesitan nuevas funciones imprevistas.

Entonces, la interacción creativa y disciplinada entre una mente humana y algún dispositivo físico y complejo es exactamente la mentalidad que requieren todos estos asuntos, de ahí la respuesta a su pregunta, en mi humilde opinión.

¡Eso es porque la informática y las matemáticas están estrechamente vinculadas!

En la programación de computadoras, es difícil nombrar una disciplina que no requiera matemática de una forma u otra. Incluso si tomamos el proceso banal de crear una hoja de estilo en CSS para una página web, incluso eso requiere algunas matemáticas si queremos diseñar algunos efectos bonitos, como animaciones o transiciones.

Entre las muchas otras disciplinas que requieren matemáticas (física) de una forma u otra están:

  1. Teoría de grafos . Este es uno de los aspectos más difíciles de la programación algorítmica por computadora que depende en gran medida de conceptos matemáticos avanzados.
  2. Simulaciones Por supuesto, casi todas las simulaciones involucran matemáticas de algún tipo, especialmente ciencias “dinámicas” como la física y la trigonometría.
  3. Criptografía Se basa en gran medida en la teoría de números (factorización prima, factorización, etc.)

Y, por supuesto, hay muchos otros.

Por lo general, las especialidades en matemáticas y física tienen habilidades cuantitativas muy fuertes, así como habilidades verbales por encima del promedio (con especializaciones en física con habilidades verbales ligeramente mejores que las especialidades en matemáticas). Vea, por ejemplo, este diagrama de dispersión de puntajes promedio en matemáticas y GRE verbal por campo de posgrado:

Esas habilidades se transfieren a la programación de computadoras. Las personas con fuertes habilidades cuantitativas sobresalen más fácilmente en la comprensión de sistemas precisos y lógicos como computadoras y lenguajes de programación, mientras que las personas con fuertes habilidades verbales probablemente tengan una ventaja en la comprensión y la creación de sistemas grandes y bien abstraídos.

La mayoría de los graduados de matemáticas / física con los que trabajé en mis días de banca comercial (principalmente Quants y Actuaries) eran programadores terribles.

Finalmente formé una teoría.

El problema es que Matemáticas y Física enseña reduccionismo. Se le enseña una y otra vez cuando se le presenta una ecuación llena de términos que se pueden cancelar, que debe simplificar la ecuación hasta el extremo.

Llevada al desarrollo de software, esta estrategia es un desastre.

Algún “desorden” en el software mejora dramáticamente la estabilidad y la confiabilidad del software. Por ejemplo, el uso de punteros inteligentes protege el código de una gran cantidad de defectos de software, pero un puntero inteligente no es la representación más simple posible de una referencia a un bloque de memoria.

Ninguno de los tipos de Matemáticas / Ciencias con los que trabajé podía ver el punto de los punteros inteligentes: su código estaba lleno de punteros sin formato, los términos simplificados hasta su extremo y, como resultado, su código estaba lleno de errores.

Pregunté a algunos Quants qué pensaban de mi teoría y estuvieron de acuerdo, a pesar de que intelectualmente podían ver el punto de los punteros inteligentes, cuando intentaron escribir el código, su condicionamiento se hizo cargo, no pudieron evitarlo.

Ellos no.

La razón por la cual los matemáticos y físicos pusieron los cimientos fue porque el campo de la informática aún no se había inventado, ya que no había fundamento para eso antes.

Los matemáticos y los físicos eran las personas que tenían problemas que podrían resolverse mejor con una calculadora (o una computadora si lo desea) que a mano, por lo que aprendieron a programar computadoras e hicieron herramientas para facilitar la programación de computadoras.

Luego vinieron los informáticos y refinaron esas herramientas toscas en la belleza que ves ante ti.

Piénselo en otros términos: las primeras espadas no fueron forjadas por forjadores de espadas, sino por herreros regulares. Solo como era evidente que esta especialización tiene méritos, los primeros herreros comenzaron a refinar la nave. E hicieron las espadas ‘rudas’ entonces, no los herreros, todavía fabricaban rastrillos y herraduras …

Empecé al revés. Comencé a enseñarme a programar cuando tenía 8 años. Nadie me lo mostró. Nadie en mi familia tiene experiencia en programación. Solo me gustó. Continué y me volví muy bueno y realmente experimentado. A los 16 años me invitaron a realizar una pasantía en una compañía de software de muy alta especificación que hace software de back-end especializado para las principales compañías de telecomunicaciones, bancos e instituciones. Después de la pasantía de 4 semanas, me dijeron que me contratarían cuando terminara mi escuela. Lo hicieron, todavía estoy allí y estoy bastante feliz, la gente es genial (matemáticos, físicos y expertos en informática), llamas a los gerentes por su primer nombre. Mi camino me llevó a la intuición de que debería estudiar ciencias de la computación porque era bueno y todos me dijeron que lo hiciera. No lo hice eventualmente. Empecé a estudiar física por placer. Ahora con la física, auditas las mismas conferencias que los matemáticos, aprendes teoría de la informática, aprendes a dominar la programación, también haces un trabajo de campo. Y después de todo eso, todavía auditas la física experimental y la física teórica. Puedes imaginar por qué los físicos son tan buenos programando. Lo necesitan y tienden a pensar de manera muy estructurada. Los matemáticos en realidad no son tan buenos para programar. Las matemáticas y la programación puras son un poco de contraste, pero hay bastantes por ahí, mi compañero de trabajo es matemático entre los informáticos.

Siempre he estado motivado por la curiosidad y, en general, excepcionalmente curioso . Siempre quise comprender cómo funcionan las cosas. Comienzas con tu triciclo a los 3 años (lo derribas y lo reconstruyes), deteniéndote en las computadoras por cierto, pero eventualmente todo lo demás es aburrido “Para que pueda percibir lo que sea que tenga // El mundo unido en sus pliegues más íntimos”. – Goethe La programación es más como un oficio para los físicos y “como físico siempre eres el mejor científico de la computación” – CH , eso es lo que me dijeron en el primer semestre. Hay algo de verdad en eso.

Y finalmente los químicos: son excepcionalmente buenos para estudiar sistemas complejos, los físicos solo pueden observar una cosa a la vez. De Verdad.

Soy de la especialidad de Matemáticas y ahora trabajo en desarrollo de software. La programación y la informática no son lo mismo.

Los matemáticos son excelentes informáticos porque la informática es una rama de las matemáticas. Al igual que cualquier otro campo de las matemáticas, hay varios niveles en el campo y el nivel de abstracción depende de los detalles del alcance de su trabajo.

Es completamente posible ser un informático sin ningún conocimiento de programación de computadoras. Mi profesor de investigación era un matemático puro que estudiaba la computabilidad (una rama de la lógica matemática), lo que tiene implicaciones en la ciencia de la computación más adelante pero no puede escribir código de computadora para salvar su vida ni le interesa un poco. Pero puede trabajar en un nivel completamente abstracto usando máquinas de Turing. Es posible hacer informática con el concepto de una computadora en lugar de una computadora real. Esta es la belleza de las matemáticas de todos modos.

Personalmente, mi entrenamiento en matemáticas me ayuda a apreciar abstracciones como objetos e interfaces en OOP (las motivaciones e implicaciones en lugar de los patrones de implementación / diseño). También me ayuda a comprender la complejidad de los algoritmos gracias al tratamiento serio del cálculo y al análisis real. Pero descubrí que la programación en sí misma tiene poco que ver con el tipo de matemáticas que hacemos en el nivel universitario (a menos que esté trabajando en un software computacional que implique optimización, bibliotecas de análisis numérico, etc.)

Entonces, cuando me acerco a un problema de programación, trato de resolverlo con el mismo espíritu de resolver un acertijo de inteligencia o un problema de matemáticas de la escuela secundaria. Ciertamente no es la disciplina que se nos enseña a manejar problemas matemáticos de alto nivel en la universidad. En este sentido, no creo que los matemáticos sean programadores rudos simplemente porque son matemáticos.

En realidad, como la física y las matemáticas son dos grados que son mucho más fáciles de aceptar, muchas personas intentan pasar a la informática a través de estos dos departamentos (aunque muchas veces les resulta muy difícil aprobar los exámenes en estos departamentos y alcanzar las calificaciones) necesitan hacer este pasaje). Ser aceptado en la facultad de ciencias de la computación en la mejor universidad de hoy es una de las cosas más difíciles de hacer.

Si bien es cierto que muchos grandes programadores tienen una especialización en matemáticas menor o mayor (además de mayor o menor en ciencias de la computación, en consecuencia) los matemáticos puros prefieren no ingresar a la industria y si lo hacen, en su mayoría hacen algoritmos y mucho menos codificación. Ser arquitecto de algoritmos exige una base y capacidad matemática muy sólidas, pero se trata menos de la programación. Si bien se les paga más que a un programador, es tarea del programador tomar el algoritmo y convertirlo en código. Y claro, un matemático talentoso naturalmente posee excelentes habilidades de programación. De la misma manera, ese gran velocista también sería al menos un muy buen saltador largo (y viceversa).

Jon von Neuman y Turing, los fundadores de la informática moderna, eran matemáticos de élite. Pero tome un excelente posgrado en informática y un excelente posgrado en matemáticas o física, todos estudiados en las mejores universidades, no debería encontrar grandes diferencias entre ellos la mayoría de las veces, ya que las habilidades necesarias son paralelas a un alto grado. Si estás hablando de genios, entonces en la lista no muy larga de los ganadores del premio Turing, que es el premio Nobel de informática, encontrarás algunos matemáticos y muchos tienen una licenciatura en matemáticas (mucho porque cuando eran jóvenes estudiantes allí en su mayoría no era departamento de informática). Pero solo te dice que no hay grandes diferencias entre los dos campos. La informática es como la matemática aplicada (y en realidad hace aproximadamente dos o tres décadas era parte de los departamentos de matemática aplicada en la mayoría de las universidades).

En cuanto a la química, no creo que sea igual a las matemáticas o la física en sus demandas y supongo que es más difícil graduarse de la informática que del departamento de química. Una vez más, la química es ciencias exactas (y básicamente los planes de estudio incluyen muchos cursos de matemáticas y física). Pero la física y las matemáticas requieren mayores niveles de pensamiento abstracto y cuantitativo.

Creo que debes tener cuidado al tener este cliché. Conozco a más grandes programadores que no se graduaron en matemáticas o física que a los graduados y conozco a muchos más matemáticos que no pueden escribir el programa más simple. También trabajé con matemáticos que entregaron una muy mala calidad de código.

Sí, puede haber alguna correlación entre los buenos programadores y los programadores que cuentan con estos antecedentes debido a los requisitos en lo que respecta al pensamiento estructurado, pero se necesita mucho más para convertirse en un buen programador.

He visto que la mayoría de los innovadores, científicos y grandes programadores en la construcción de los fundamentos de la informática fueron graduados en matemáticas o física en algún momento de su vida. ¿Cómo la búsqueda de matemáticas / física les ayuda a ser programadores tan exitosos? Además, ¿qué los motiva a profundizar tanto en las computadoras?

En mi caso, siempre me interesaron las matemáticas aplicadas, especialmente la investigación de operaciones y las matemáticas numéricas. Especialmente la numérica es un área muy cercana al desarrollo de software. Entonces para mí fue un camino natural sumergirse en el desarrollo de software algún día. Las matemáticas y la informática están muy relacionadas. En los campos teóricos de la informática, a menudo encontrarás profesores con conocimientos matemáticos. Durante mi tiempo universitario tuve cuatro profesores de informática diferentes (la informática era una de mis dos asignaturas menores) y dos de ellos eran matemáticos nativos.

Probablemente me desviaré un poco de la pregunta per se, pero creo que puedo decir algo útil sobre esto …

Bjarne Stroustrup, creador de C ++, dijo una vez en una conferencia: “Lo que me gusta de CS es que es una gran excusa para meter la nariz en casi cualquier área del conocimiento. Te gustan los aviones, así que vas y construyes programas de aviónica para ayudar a conducir un avión, te gusta la física, así que trabajas para el CERN y escribes programas para administrar sus complejas infraestructuras, etc. ”

Por supuesto, los ejemplos son demasiado extremos, pero la idea en sí es muy clara: la programación existe para resolver problemas del mundo real que, la mayoría de las veces, salen del ámbito puro de la informática … Esto implica que, si usted, como un CS, que se especializó en, digamos, sistemas distribuidos, o computación paralela, etc., solo conoce esos dominios específicos, o terminará trabajando en investigación / enseñanza de esas cosas específicas, o, si sale a la naturaleza, usted utilizará ese conocimiento para trabajar en algo real.
Tal vez trabajará para ayudar a secuenciar cadenas de ADN para ayudar con la identificación de algunos virus, supongamos. Y, por supuesto, conocer la computación paralela es extremadamente bueno y una habilidad muy importante en dicho dominio. Pero, supongamos también que usted escribió un programa, que está muy optimizado simplemente hablando del ámbito de la programación.

Un biólogo a su lado, que conoce un poco de programación y MUCHO más de biología, puede encontrar fácilmente un dominio de optimización “estúpido” que puede mejorar enormemente el programa, digamos, “oh para esta cadena de virus específica, si un La adenina viene después de una citosina y la cadena si tiene una longitud mínima de X, entonces * descarta todos estos cálculos pesados ​​*.

Obviamente, escribir un sistema completo a prueba de balas, súper escalable y confiable, puede no estar a su alcance como biólogo, pero por lo general, pueden proponer técnicas específicas de dominio que, cuando se combinan con los fundamentos de algoritmos y estructuras de datos (que MUCHOS científicos informáticos homónimos simplemente CANT MASTER) permiten escribir programas muy decentes que se ven totalmente rudos.

Para concluir, por supuesto, un biólogo con un menor en CS no puede construir un sistema totalmente confiable y / o un programa altamente optimizado programáticamente. La advertencia es que, usted, nosotros, como un graduado en ciencias de la computación, probablemente no pueda hacerlo sin una gran cantidad de maquinaria pesada realizada por frameworks o desarrolladores senior en su empresa. Y cuando ese escenario se vuelve claro, te das cuenta de que conocer otros dominios, los dominios en los que escribirás tu código, puede darte una gran ventaja sobre solo ser un maestro de código.

Debe distinguir entre codificadores y diseñadores de sistemas. La codificación requiere lógica y la capacidad de pensar en detalle; El diseño requiere una vista panorámica. En muchas organizaciones, los buenos programadores son promovidos a diseñadores, razón por la cual hay tanto mal diseño. Los mejores diseñadores de sistemas (y a menudo todoterreno) en mi experiencia son personas que han estudiado música. Las personas de Asperger pueden ser buenos programadores si se les dan especificaciones suficientemente buenas, pero son pésimos en el diseño.

Los matemáticos y los físicos no pueden hacer su trabajo sin usar herramientas analíticas avanzadas y la programación es una parte importante de su trabajo.

Pero sus temas les permiten abordar problemas matemáticamente. Pueden modelar matemáticamente un sistema complejo antes de escribir un algoritmo que lo implemente. No hay ifs y thens en matemáticas, por lo que sus modelos son a menudo altamente eficientes.

Aparte de eso, las matemáticas y la física son temas difíciles que requieren cerebros inteligentes. Muchos programadores inteligentes pero no encontrarás muchos matemáticos y físicos no inteligentes

Los graduados de informática son los programadores más rudos. Tomaremos graduados de los otros campos STEM, pero tendrán que ganar su camino hacia el equipo mostrando algunas habilidades de codificación.

Todas las disciplinas STEM requieren la capacidad de construir, comprender y navegar estructuras complejas y etéreas complejas. Dan un gran valor al dominio de una jerarquía de conceptos que, juntos, forman un sistema, o un sistema compuesto por múltiples sistemas más pequeños. El estudio de cualquier campo STEM es el estudio de sistemas y relaciones entre sistemas.

Están capacitados para resolver problemas utilizando múltiples métodos, incluida la atomización. Luego, simplifique la solución hasta obtener la solución más elegante posible. También se llama afeitado de costos.

La mayoría de nosotros no se nos ocurre una sola solución. Puede resolver el área debajo de la curva con trigonométrico, geometría o cálculo. Me llevó cinco líneas de comandos simples usando geometría y K & RC en una nota que envié a un profesor diciéndole a su estudiante de posgrado que no hiciera la tarea.

Puede reducir el costo de cualquier parte de la solución. Costo total, tiempo de ejecución, velocidad de comercialización, confiabilidad y más. Cuantas más opciones elija, más cuesta y más tiempo le llevará.

¿Cuál es el corazón de la computadora o la electrónica digital?

Respuesta: física

¿Cuál es el corazón de la física?

Respuesta: matemáticas

¿Cómo se diseñaron los programas informáticos centrales?

Respuesta: con álgebra lineal y ecuación diferencial

Y esta es la razón por la cual los grandes programadores tenían graduados de matemáticas o física.

Porque la informática requiere un conocimiento de las estructuras lógicas más que los lenguajes de programación. Los lenguajes y plataformas de programación van y vienen todo el tiempo. Son las estructuras lógicas subyacentes las que permanecen.

Como matemático que ha estado en TI durante 20 años, no puedo decirle con qué frecuencia tengo que explicar a la gente la lógica interna de un sistema y por qué un cambio funcionará o no.

Es casi natural que los graduados de Matemáticas sean programadores de computadoras: las computadoras son cosas que computan, ¡y esa es una de las cosas que las matemáticas hacen bien! Una programación principal de Matemáticas, algo que esencialmente hace matemáticas para hacer matemáticas es bastante meta, pero genial.

Tanto las matemáticas como la física tienen mucha lógica, y ese es uno de los pilares de las computadoras. Y las computadoras no necesitan ser electrónicas: siempre que pueda ingresar algo en ellas, agitar esos datos y generarlos, eso es una computadora. La informática no se trata solo de gadgets, pero se trata de matemáticas, física y lógica.

Y si ya tiene interés en Matemáticas y Física, solo podría profundizar en informática. Como estudiante de matemáticas, puede buscar mejorar las computadoras, o usar computadoras para mejorar las matemáticas, o ambas. Como físico, querrá explorar cómo hacer que las computadoras sean más precisas para el estudio científico, a su vez para obtener mejores datos.

Matemáticas y Física es definitivamente útil para desarrollar una lógica similar a la que usan nuestras computadoras. Pero solo si eres un graduado de Matemáticas o Física no implica que seas un programador rudo. He visto profesores que aprendieron matemáticas pero que eran muy malos para codificar. La curiosidad al igual que la carga de trabajo a la que están acostumbrados los estudiantes de Matemáticas y Física es clave para convertirse en un programador rudo.

Ha pasado un tiempo desde que estaba en la industria del software, pero estuve allí durante más de 30 años. En mi experiencia, los mejores eran personas que simplemente estaban entusiasmadas y podían apreciar el flujo del código. estudiaron. Aprendieron su profesión y continuaron con ella. No fue un trabajo pesado para ellos.

¿En cuanto a un solo tipo de formación / profesión? Las personas que parecían dedicarse más fácilmente a la codificación eran músicos.

More Interesting

¿El rápido desarrollo de la computación cuántica atrapará la criptografía comercial con los pantalones caídos antes de que la criptografía post-cuántica se generalice?

¿Qué es la computadora DWave?

¿Cuál es su teorema, ley, propiedad o principio favorito (matemáticas, física (cuántica), química (cuántica), psicología ...)?

¿Existe algún tipo de mecanismo al que se puedan reducir todos los eventos en el universo?

¿Qué hace que las computadoras cuánticas sean tan rápidas en algunos problemas, pero fantásticamente lentas en otros?

¿Cuáles son algunas de las nuevas tecnologías que explotan la mecánica cuántica?

¿Por qué es tan importante la computación cuántica? Si 0 Y 1 son necesarios para 3 estados para la computación, ¿por qué no podemos simplemente agregar una capa a nuestra tecnología actual?

¿Qué es la teletransportación cuántica?

¿Cuáles serán las implicaciones una vez que tengamos potencia de computación cuántica en nuestros dispositivos móviles?

¿Cómo pueden los operadores en computación cuántica (por ejemplo, el operador de 'oráculo cuántico' de Grover) operar en qubits sin destruir el enredo entre los qubits?

¿Cuál es la relación entre el universo y la mecánica cuántica?

¿Qué especialidad universitaria debería elegir para hacer trabajos de ingeniería en mecánica cuántica y tecnología cuántica?

¿Son los relojes atómicos clave para la gravedad cuántica?

¿Por qué los graduados en matemáticas, física y química son los programadores informáticos más impresionantes? ¿Cómo les ayuda la búsqueda de matemáticas / física a ser programadores tan exitosos? ¿Qué los motiva a profundizar en las computadoras?

¿Cuáles son algunas soluciones para aproximar la gravitación de n cuerpos?