Red de conocimiento informático - Conocimiento informático - ¿Cuál es la mayor dificultad para aprender el lenguaje de programación C++?

¿Cuál es la mayor dificultad para aprender el lenguaje de programación C++?

Una de las dificultades es "C++ es un lenguaje difícil de aprender y usar". Creo que muchas personas pueden identificarse con esta frase. La dificultad de aprender C++ radica en el hecho de que el lenguaje en sí tiene demasiados "actos" y la otra radica en el "cambio de paradigma" (cambio en el modo de pensar).

Lenguajes tradicionales como C, Pascal, Basic, Fortran... excepto que se ven ligeramente diferentes, básicamente tienen funciones que se llaman de un lado a otro. Son muy similares y fáciles de dominar. Las acciones que desea realizar se pueden ver claramente en el código. Lo que no puede ver es que el compilador agrega un pequeño fragmento de código (prólogo y epílogo) a su función para manejar el apilamiento. Este pequeño fragmento de código básicamente hace el trabajo de limpieza. No importa, no afecta tu forma de pensar sobre la lógica del programa.

C++ es diferente. C++ tiene demasiadas acciones estrechamente relacionadas con la lógica del programa que el compilador agrega por nosotros. En otras palabras, el compilador de C++ "agrega código" por nosotros. Si no comprende claramente esta sección, aprender C ++ es como ver flores en la niebla. La niebla no es niebla y las flores no son flores.

¿Qué código añade el compilador a nuestro programa C++? ¡mucho! ctor se evocará cuando el objeto nazca y dtor se evocará cuando el objeto muera. Estos son todos los resultados de la codificación. vtpr y vtbl se configuran en ctor, que también es el resultado de la codificación. Cuando se crea un solo objeto, se generará una cookie de bloque de memoria. Cuando se crea una matriz de objetos, se generará una estructura interna para registrar el tamaño del objeto y el ctor de clase... Este también es el trabajo detrás de escena. Se puede decir que todas las acciones relacionadas con la lógica del programa que no se pueden ver en el código del programa pero que deben completarse son todos los resultados del compilador de C ++.

Cuando ocurre la "herencia", toda la situación se vuelve un poco más complicada. La "herencia múltiple" es un poco más complicada y la "herencia virtual" es un poco más complicada.

Los temas detrás de estas escenas se pueden clasificar como el llamado modelo de objetos de C++. Si no conoce estos mecanismos subyacentes, sólo puede memorizar reglas como "hacer virtuales los destructores en las clases base" o "nunca tratar las matrices polimórficamente" sin comprender su fundamento. Usar algo pero no entender su fundamento es lo que dijo Lin Yutang: "No es inteligente". Sólo sé cómo, no por qué.

Nivel de dificultad dos La segunda dificultad para aprender C++ es el "cambio de paradigma" (cambio de modo de pensar). Por no hablar de diseñar sus propias clases, el simple hecho de utilizar las clases de otras personas supone un cambio en los patrones de pensamiento y comportamiento. El programador de MFC (o OWL o VCL) definitivamente podrá comprender y comprender el significado.

Utilizando el llamado marco de aplicación (una biblioteca de clases grande y cohesiva con una infraestructura pública orientada a objetos), ¿cuál es la relación entre su código y el marco? ¿Cuál es el significado y el valor de una gran cantidad de funciones virtuales reescribibles proporcionadas por el marco? ¿Por qué las diversas propiedades hermosas y los diversos algoritmos diseñados por el marco se pueden implementar en los tipos de clases que diseñamos nosotros mismos? Cuando se diseñó el marco, no sabía que existíamos. Este es el poder del polimorfismo en la orientación de objetos.

El modelo de objetos de C++ mencionado anteriormente es un aspecto de bajo nivel de la programación; el cambio de modo de pensamiento mencionado aquí es un aspecto de alto nivel de la programación. El polimorfismo orientado a objetos (polimorfismo) y la generalización (genéricos) se pueden utilizar para aprovechar al máximo el poder del nuevo modelo de pensamiento. Si no utiliza estas dos características, ingresará a C++ pero saldrá con las manos vacías.

Templado repetido, oscilación cíclica

Imagínese C++ como un cuchillo utilizado para resolver problemas de programación. Para que sea fuerte y afilado, debe templarse muchas veces entre altas temperaturas y frío repentino. refinamiento.

Después de aprender la sintaxis de C++ por primera vez, debes intentar experimentar el polimorfismo (en términos generales, el uso de funciones virtuales) lo antes posible. Cuando tenga la capacidad de controlar el espíritu general de la programación orientada a objetos, pero no tenga claros muchos pequeños detalles de C++, es el momento de volver al modelo de objetos de C++ y practicar.

Ver la fuente de este artículo