Red de conocimiento informático - Espacio del host - Mi nombre tiene "Qing". Piense en un nombre clásico en línea para mí, con la palabra "Qing". Gracias

Mi nombre tiene "Qing". Piense en un nombre clásico en línea para mí, con la palabra "Qing". Gracias

Como sigue:

1. Zhang Qingrui, Zhang Qingshun, Zhang Qingxi, Zhang Qingjia, Zhang Qingyang.

2.

3.

4.

5.

6.

上篇: ¿Por qué mi computadora portátil siempre tiene fallas en el teclado mientras juego? 下篇: Si quiero ser programador, ¿qué debo estudiar en la universidad? Finalmente, decidí escribir mis pensamientos, con la esperanza de ser útiles para los estudiantes actuales. Primero, debemos darnos cuenta de que la respuesta a esta pregunta es variable, depende de sus objetivos y habilidades naturales y de ninguna manera es única. Por supuesto, los cursos universitarios también suelen ser únicos, por lo que puede haber algunas contradicciones. Lo más importante aquí es el objetivo. El estudio universitario es sólo un vínculo para alcanzar el objetivo final, y debe servir al objetivo final. Por supuesto, es difícil para los estudiantes universitarios saber claramente dónde están sus objetivos, pero deben tener una dirección general. La razón por la que esto es importante es porque determina directamente lo que debes aprender. Después de trabajar en software durante muchos años, me di cuenta de que la diferencia entre software es en realidad mayor que la diferencia entre un caballo y un buey. El uso de métodos de clasificación populares, como: desarrollo front-end, desarrollo back-end, desarrollo .net, desarrollo Java, etc., puede perder el enfoque, por lo que siempre siento que el método de clasificación de Barry W Boehm en el libro "Estimación de costos de software " es muy bueno: el método de clasificación del libro "A COCOMOII Model Approach" es más útil para el aprendizaje. En esta clasificación, el software se divide en tres niveles: el nivel más bajo es el desarrollo de software de infraestructura (plataforma); el nivel medio es el desarrollo de herramientas, integración de sistemas y middleware; entendido como aplicaciones generales Desarrollo de programas. Al mismo tiempo, el autor también añadió una estadística: en 2005, el 95% de los programadores estadounidenses realizaban programación para el usuario final. Esto parece desviarse del tema, pero no lo es. La clave es determinar la dirección en su conjunto. Porque para los programadores cuyo objetivo es la infraestructura y los programadores cuyo objetivo son las aplicaciones generales, lo que tienen que aprender es completamente diferente. "El arte de la programación informática" de Donald Knuth no carece de mérito, pero si pasas 2 años repasándolo y concentrándote en el desarrollo de aplicaciones, entonces este libro es realmente inútil. Como mínimo, alguien que domina un lenguaje, marco, patrón de diseño, orientación a objetos o UML en particular está en desventaja en comparación con alguien que acaba de leer El arte de la programación informática, aunque este último puede ser más pérdida de tiempo. Pero a la inversa, en el trabajo intensivo en algoritmos, esta ventaja/desventaja ya no existe. No hay duda de que lo mejor es dominar todo, pero el tiempo humano es limitado, pero el conocimiento relacionado con el software es ilimitado, por lo que es fundamental centrar tu aprendizaje en tus objetivos. Y cuál es el objetivo depende de su situación real. Supongamos que realmente siente que tiene buenas habilidades y quiere hacer cosas de tipo infraestructura, MapReduce, sistemas operativos, etc., entonces lo primero que debe darse cuenta es que hay muy pocas personas haciendo esto y la competencia es muy feroz. Si sólo el 5% de los programadores en Estados Unidos hacían esto en 2005, entonces calculo que la proporción es como máximo la misma en China hoy. Personalmente creo que los cursos de informática en las universidades realmente están destinados a capacitar a las personas en esta dirección. Una vez que realmente vayan en esta dirección, los cursos de informática en las universidades serán verdaderamente útiles. Estudia mucho y progresa todos los días. Por supuesto, no basta con tomar clases. También es fundamental poner en práctica lo que se aprende en clase (como los proyectos de código abierto). El problema aquí es que sólo alrededor del 5% de las personas pueden hacer esto, y es posible que muchas personas no puedan participar incluso si trabajan duro. Entonces supongamos que una persona dice de manera muy realista: las escuelas mejor clasificadas del país sólo tienen el 5% del total. La competencia es demasiado feroz. No elijo esta dirección objetivo, prefiero hacerlo entre el 95% de la gente. Entonces en este momento ¿Qué debo aprender? Personalmente creo que lo principal es aprender algo que sea difícil y que requiera mucho tiempo para aprender, y no dedicar más tiempo a cosas sofisticadas. Lo difícil se refiere a: estructuras de datos y algoritmos básicos. Ya sea que esté trabajando en software de infraestructura o no, el conocimiento básico de estructuras de datos y algoritmos sigue siendo imprescindible. Probablemente no tendrá muchas oportunidades de escribir sus propias estructuras de datos y algoritmos desde cero, pero si no sabe cómo calcular la complejidad y no sabe la diferencia entre una lista enlazada, un árbol rojo-negro o un tabla hash, entonces esto es metafísica de todos modos. Competente en un lenguaje de programación, puede elegir según la situación real. Pero el énfasis aquí está en el lenguaje, no en entornos y marcos de desarrollo integrados. Puede ser fácil de entender porque el significado detrás de cada palabra clave debe quedar claro de un vistazo. La trampa aquí es aprender muchos idiomas y no dominar ninguno de ellos.