¿Cómo aprender CAD?
Haga preguntas de "por qué". Para aprender C, es necesario hacer muchas preguntas de "por qué sucede esto" y "por qué debería suceder esto". Por ejemplo, mucha gente sabe que C tiene un constructor de copias y una lista de inicialización, pero ¿sabes realmente por qué hay un constructor de copias? Pero, ¿sabes realmente por qué hay un constructor de copias y por qué hay una lista de inicialización? ¿Por qué plantillas, por qué RTTI, por qué no otra cosa? ¿Es sólo para hacer que el lenguaje sea más atractivo? Ese no es el caso en absoluto. Todo en C tiene alguna razón real, y hay que entender por qué C está diseñado como está para poder aprender C bien. Si tienes tiempo, puedes leer el libro "C Evolution and Design".
Leer libros, muchos libros en C. Puedes leerlo en el siguiente orden (los siguientes libros me llevaron entre 4 y 5 años y todavía los estoy revisando)
"Introducción a C", este libro introductorio puede hacerte masticar Es doloroso , pero todas las propiedades y razones del lenguaje están ahí, léelo bien. Por supuesto, el "lenguaje de programación C" escrito por el padre de C también es bueno. Simplemente lea uno de estos dos libros (yo leí el primero).
Comprender la sintaxis de C es sólo el primer paso de un largo viaje. También es necesario leer "C eficaz" y "C más eficaz". Estos dos libros no son gruesos, pero los he estado leyendo desde 2002 y puedo aprender algo nuevo cada vez que los leo. Son muy clásicos. Si eres nuevo en C, estos dos libros te ayudarán a ponerte al día con tus lecciones de C.
Think in C también es otro clásico y una lectura obligada para aprender C. Sin embargo, la versión china está mal traducida, por lo que es mejor leer la versión en inglés.
También vale la pena leer Think in C. No enseña programación, sino cómo pensar, lo cual es bastante valioso.
"Exceptional C" y "More Exceptional C" le permiten conocer las soluciones a varios problemas y algunos errores clásicos comunes.
"Advanced C" y "Modern C" te permiten aprender sobre los sorprendentes usos de C.
"Programación Universal y el STL" lleva la práctica de C al extremo. Es muy poderoso. STL: biblioteca de plantillas divina (contenedores, algoritmos y objetos funcionales), incomparable.
"Exploración en profundidad del modelo de objetos de C" le permite comprender cómo se ve C en el compilador y le permite saber que C no es malo. Esto es crucial para los programadores de C. La "Explicación detallada de la tabla de funciones virtuales de C" y el "Diseño de memoria de objetos C" que escribí antes pertenecen a esta categoría.
Comparar el lenguaje Java. Personalmente, creo que Java ha realizado muchos ajustes, especificaciones y restricciones al lenguaje C inmaduro. Entonces, compare Java y C y piense por qué ciertas cosas se pueden hacer en C pero no en Java. Por ejemplo, las excepciones de Java deben detectarse o no se compilarán.
¿Por qué Java no proporciona sobrecarga de operadores? ¿Por qué Java introduce interfaces para implementar la herencia múltiple? ¿Por qué Java no tiene flujos de caracteres de E/S como C? ¿Por qué Java no admite punteros? ¿Por qué Java realiza la recolección de basura? Java incorpora mucho diseño orientado a objetos y aprender Java le ayudará a aprender mejor la programación en C.
Diseño orientado a objetos. Aunque la orientación a objetos puede ser una estafa. Pero creo que algunas prácticas en el diseño orientado a objetos son muy buenas, como el principio de singularidad, el principio de inversión de dependencia, etc., que son todos muy clásicos. "Patrones de diseño" es una lectura obligada y "Análisis y diseño orientado a objetos" también es un buen libro. Pero no se puede programar con patrones de diseño. Debe utilizar patrones de diseño para resolver el problema.
Aprendizaje en la biblioteca de clases. Mire cómo MFC encapsula la API de Windows, observe cómo ACE está orientado a objetos, observe cómo boost está orientado a objetos y observe cómo está diseñado CPPUnit. Por supuesto, el JDK de Java tiene demasiados patrones de diseño a los que hacer referencia.