Esto se afirma una y otra vez en este barrio de Quora: 18 no es tarde. 50 no es tarde No es tarde el tiempo, siempre y cuando esté dispuesto a aplicar las matemáticas, la planificación y el razonamiento necesarios para escribir el código. Comencé a aprender sobre el mismo tiempo que tú.
Si no está filmando para un tipo particular de trabajo, pruebe algunos lenguajes de programación diferentes bastante pronto en lugar de limitarse a uno solo. Aprender un montón de Python es genial, pero algún día estarás haciendo algo en Python que está usando C o Fortran bajo las sábanas y será muy bueno tener ideas sobre cómo funcionan. Estar familiarizado con el funcionamiento de Python, Haskell, C ++ y JavaScript debería ser suficiente para ayudarte a lidiar con cualquier cosa que se te presente.
Estoy con Jonas que hacer algunos ejercicios y algo de teoría es una buena idea (y lamentablemente estoy de acuerdo en que no todos los doctores en ciencias de la ciencia saben cómo codificar). Mi lista de temas tiene alguna coincidencia con la suya:
- Representaciones de datos: ¿Qué tipos básicos existen en la forma de almacenar números y letras? ¿Son las cuerdas un primitivo? ¿Cómo se almacenan en su computadora? ¿Cuáles son sus limitaciones y ventajas? ¿Cuándo sabrás que estás usando el incorrecto? ¿Cómo se asegura de poder obtener el tipo correcto de salida en función de los tipos de entrada?
- Estructuras de datos: muchos cálculos se reducen a la clasificación, el almacenamiento y la búsqueda. Muchas estructuras de datos existen para admitir estas operaciones, con la cantidad de tiempo requerido para estos pasos y la sobrecarga de espacio que varía drásticamente. Si conoce el tipo de datos, el volumen de datos, la velocidad a la que agregará y cambiará las cosas, cómo lo haría y la velocidad a la que buscará las cosas, ¿puede averiguar qué datos? ¿Será la estructura mejor para tus datos? ¿Y puedes entender por qué? Puede ser útil conocer las matrices frente a las muchas encarnaciones de la lista enlazada (pilas, colas, salidas), mapas hash y varios tipos de árbol de búsqueda binaria equilibrada. Es bueno saber cómo implementarlos, pero lo más importante es poder reconocer qué desea y si se implementó de la manera que esperaba según la documentación.
- Complejidad: Esto se enlaza con las estructuras de datos. A menos que quiera entrar en la teoría, no debería necesitar un entendimiento super sofisticado de la teoría de la complejidad de los algoritmos. Lo que necesitará es la capacidad de hacer comprobaciones para ver si está pasando bien el tiempo. Por ejemplo, mirar una lista sin clasificar una vez para ver si hay algo allí es más rápido que ordenar la lista, pero mirar la lista varias veces cerca de la longitud de la lista es más lento, y sería mejor ordenar primero También es bueno saber qué cosas son difíciles. Si alguien te está pidiendo que resuelvas un problema en el que crees que deberías revisar todas las combinaciones posibles o pedir varias cosas para encontrar la mejor solución, podría ser un problema de NP-Hard, de Wolfram MathWorld, en cuyo caso tienes que elegir entre hacer algo muy lento por más de unas pocas cosas o algo que puede no ser del todo perfecto. No es necesario que conozca todas las formas posibles de hacer frente a los problemas graves de NP, pero al menos debería saber uno cuando vea uno para no pasar demasiado tiempo tratando de hacer algo rápido que nadie en el planeta sabe. para hacer rápido todavía.
- Partes internas de la computadora: además de saber cómo se almacenan los datos en la escala de bytes, es bueno saber algo sobre la arquitectura de una computadora. La razón principal de esto es que, contrariamente a la creencia popular, la complejidad en términos de número de iteraciones matemáticas tiende a tener un efecto bastante pequeño en la velocidad de los programas modernos. Las computadoras son realmente rápidas para hacer matemáticas con los números que viven en los niveles más rápidos de la jerarquía de memoria. Lo que tiene un gran efecto es la cantidad de cosas que se deben mover en los distintos niveles de caché, memoria y disco. Debe saber qué tipo de operaciones hacen que las cosas se muevan en la memoria, qué llena su memoria rápidamente, cómo se vacía su memoria cuando termina con las cosas (que pueden no ser automáticas) y algunas ideas aproximadas de qué tamaño de Las cosas encajarán en tus diferentes capas de memoria.
- Lógica: muchas de sus grandes decisiones de programación vienen en la forma de su flujo de control. ¿Qué pasa si, si no, y qué bucles elige utilizar para hacer las cosas? Y muchas veces, este flujo de control se rige por un conjunto de declaraciones condicionales. En el nivel más básico, debe poder razonar sobre el conjunto de casos que tiene y que no ha abordado con su flujo de control en su código. El conocimiento sofisticado de la lógica de predicado y los conjuntos ofrece beneficios adicionales, pero los conceptos básicos pueden ayudarlo mucho.
- ¿Puede una niña de 15 años que tenga 5’0 crecer 5 pulgadas?
- ¿Se considera trashy en los EE. UU. Para que las adolescentes obtengan destacados?
- ¿Qué cosas debes hacer antes de cumplir los 18?
- ¿Qué consejo le darías a los adolescentes que quieren cambiar el mundo?
- Tengo 17 años y quiero tener relaciones sexuales con mi novio, que tiene 21 años, ¿qué debo hacer?