Cómo aprender mejor C con C Primer
Ayer escribí un artículo sobre cómo aprender C. Alguien respondió y me preguntó cómo aprender C, así que escribí aquí parte de mi experiencia de aprendizaje personal, con la esperanza de que sea útil para todos. En primer lugar, debido a que cómo aprender el lenguaje C habla de algoritmos y sistemas, aquí solo hablaremos del lenguaje C.
C es el lenguaje más difícil. Puede que el lenguaje de programación más difícil del mundo no sea C. No debes pensar que puedes aprender C en unos pocos días. La curva de aprendizaje de C es bastante BT. Puedes leer este artículo. C es un lenguaje muy libre, tan libre que da un poco BT y da un poco de miedo. Ni siquiera considero a C un lenguaje de programación completo porque es muy propenso a errores. Por lo tanto, hay que tener mucho cuidado al principio y tratar al C como a una bestia difícil de entrenar.
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? En absoluto, todo en C tiene una razón real, y para aprender bien C hay que entender por qué C está diseñado como está. Para aprender bien C, debes comprender por qué C está diseñado como está. Si tienes la oportunidad, puedes leer el libro "C Evolution and Design".
Leer libros, muchos libros en C. Puedes leerlos 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 dolorosamente, todo sobre el lenguaje Las características y razones están todos en él, léalo atentamente. 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 solo el primer paso de un largo viaje. También debe 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 realmente clásicos. Si no está familiarizado con el lenguaje C, estos dos libros le permitirán regresar y ponerse al día con el curso de lenguaje C. "Think in C" es también otro libro clásico. Es una lectura obligada para aprender C. Sin embargo, la versión china está mal traducida, por lo que deberías leer la versión en inglés. También vale la pena leer "Think in C". No enseña programación, sino la forma de pensar, lo cual es bastante valioso. Exceptional C" y "More Exceptional C" le indican cómo resolver varios problemas y algunos errores clásicos comunes. Advanced C y Modern C le permiten aprender sobre los sorprendentes usos de C. La programación de propósito general y STL llevan el poder 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é algunas 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? 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., todos ellos 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 cierra 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.
Espero no haberte asustado y cualquier añadido será bienvenido.