Red de conocimiento informático - Material del sitio web - ¿Cómo aprender C++?

¿Cómo aprender C++?

Introducción: el autor publicó anteriormente "Cómo aprender el lenguaje C" y ahora presenta sugerencias relevantes sobre cómo aprender C++.

Ayer escribí un artículo sobre cómo aprender bien el lenguaje C y alguien respondió preguntándome cómo aprender bien C++. Por lo tanto, escribí aquí parte de mi experiencia de aprendizaje personal, con la esperanza de que sea útil. todos. En primer lugar, debido a que los algoritmos y sistemas se analizan en Cómo aprender el lenguaje C, aquí solo hablaremos del lenguaje C++.

C++ es el lenguaje más difícil. El lenguaje de programación más difícil del mundo puede ser C++. No debes pensar que puedes aprender bien 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 de BT y da miedo. Incluso creo que C++ no es un lenguaje de programación maduro porque es muy fácil cometer errores. Por lo tanto, debes tener mucho cuidado al principio y tratar a C++ como una bestia difícil de entrenar.

Haga más preguntas de "¿Por qué sucede esto?". Al aprender C++, debes hacer más preguntas como "¿Por qué es esto?" y "¿Por qué debería ser así?". 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? ¿Por qué necesitamos una lista de inicialización? ¿Por qué necesitamos una plantilla, por qué necesitamos RTTI y por qué no otra cosa? ¿Es sólo para hacer que un idioma sea más atractivo? Este no es el caso en absoluto. Cada característica de C++ tiene algunas razones reales. Debe comprender por qué C++ está diseñado así y luego podrá aprender bien C++. Lea el libro "Evolución y diseño de C++" cuando tenga tiempo.

Leer libros, muchos libros de C++. Puede leerlo en el siguiente orden (pasé entre 4 y 5 años leyendo los siguientes libros y todavía los estoy revisando en cualquier momento hoy) "C++ Primer", este manual puede resultarle muy doloroso, todos ellos Las características del lenguaje y por qué 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. Solo lee uno de los dos libros (yo leí el primero). Comprender la sintaxis de C++ es solo el primer paso de un largo viaje. También debes leer "C++ efectivo" y "C++ más efectivo". Estos dos libros no son extensos, pero los he estado leyendo desde 2002. Léelos. Tengo nuevas experiencias. Estos dos libros son tan clásicos. Si no está familiarizado con el lenguaje C, estos dos libros le permitirán regresar y compensar las lecciones de lenguaje C. Think in C++ también es otro libro clásico, una lectura obligada para aprender C++. Sin embargo, la versión china no está bien traducida, así que será mejor que lea la versión en inglés. También vale la pena leer "Meditaciones sobre C ++" Lo que se enseña aquí no es programación, sino el método de pensamiento, que es bastante valioso. "Exceptional C++" y "More Exceptional C++" le permiten buscar soluciones a varios problemas y algunos errores clásicos comunes. "C++ avanzado" y "C++ moderno" pueden permitirle conocer varios usos mágicos de C++. La "Programación genérica y STL" es algo que lleva C++ al extremo. Muy poderoso. STL: una biblioteca de plantillas divina (contenedores, algoritmos y objetos de función), tengo que aceptarla.

"Exploración en profundidad del modelo de objetos de C++" le permite comprender cómo se ve C++ en el compilador y le permite comprender que el rendimiento de C++ no es malo. Esto es muy crítico para los programadores de C++. El "Análisis de la tabla de funciones virtuales de C++" y el "Diseño de memoria de objetos de C++" que escribí antes pertenecen a esta categoría.

Comparar con el lenguaje Java. Personalmente creo que Java ha hecho muchos ajustes, especificaciones y restricciones a C++, un lenguaje inmaduro. Entonces, compare Java y C++ y piense por qué algunas cosas se pueden hacer en C++ pero no en Java. Por ejemplo: se deben detectar las excepciones de Java; de lo contrario, la compilación fallará. ¿Por qué Java no proporciona sobrecarga de operadores? ¿Por qué Java introduce interfaces para herencia múltiple? etc. Java incorpora muchas cosas en el diseño orientado a objetos. Aprender Java le ayudará a aprender cómo utilizar mejor C++ para programar.

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 único, el principio de inversión de dependencia, etc., todos ellos muy clásicos. "Patrones de diseño" es una lectura obligada y se puede leer "Análisis y diseño orientado a objetos". Pero no se puede programar con patrones de diseño como centro, sino que se deben utilizar patrones de diseño para desacoplarlos.

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, hay demasiados patrones de diseño en el JDK de Java como referencia.

Espero no haberte asustado y agradezco tus incorporaciones.