6 razones por las que C++ es un excelente lenguaje de programación
Este semestre me ha tocado ver una pequeña introducción al lenguaje de programación C++, y en un principio yo mismo creía que era algo fácil, algo como Java, y grande fue mi sorpresa cuando vi todo el potencial que tiene este lenguaje, que nada tiene que ver con Java o algo similar.
Entonces, por tal expectación que ha creado en mi este lenguaje les traigo algunas razones por las que C++ es el mejor lenguaje de programación; estoy seguro que hay muchas más cosas que hace más poderosamente, pero estas son las que más me han asombrado a mi, un pobre estudiante de ingeniería que trata de aprender.
La herencia múltiple
He trabajado con lenguajes como C#, Objective-C y por supuesto Java y ninguno de ellos es capaz de soportar la herencia múltiple. También he de decirles que no le he encontrado necesidad al uso de heredar muchas clases, pero con C++ podemos hacerlo, y eso representa un lenguaje muy complejo para poder mantener control no sólo a la herencia de muchas clases, sino también al tipo de herencia, pública, privada o protegida. El compilador ha de sudar mucho tan sólo de pensar en realizar todas las operaciones para que la herencia salga como si nada.
Operadores sobrecargados
También me asombré cuando conocí los operadores sobrecargados. No he visto si en otros lenguajes de programación implementan esta técnica, pero el hecho de modificar un operador como +, –, *, +=, –= entre otros ya es hablar de un nivel mucho más poderoso. La implementación de operadores sobrecargados en C++ permiten manipular objetos mucho más fáciles y hacer lo que queramos con ellos, teniendo un control mucho más amplio al momento de hacer aplicaciones. Es como decir: “rayos, ¿como igualo dos objetos? ah, pues modifico la operación de igualdad para hacerlo”.
Templates
Los templates si están presentes en algunos otros lenguajes de programación como C#, pero en C++ los entendí primero que en C#. Los templates nos permiten construir clases de un tipo genérico, logrando así que si tenemos una clase que implementa almacenar valores y hacer operaciones con ese valor en vez de cerrarnos a definir un tipo de dato fijo podemos hacer un template y al momento de declarar una instancia decirle de qué tipo es el valor que le pasaremos, haciendo mucho más útil nuestro código.
Apuntadores
C es por excelencia un gran lenguaje que defiende su poderío al hacer uso de apuntadores, es decir, trabajar con la memoria del sistema, técnica que en general cualquier lenguaje de programación decente implementa y que a lo mejor en sus entrañas usa el mismo concepto. C++ al ser un lenguaje que hereda muchas cosas de C también tiene la capacidad de trabajar con memoria, y si lo combinamos con objetos tenemos una herramienta muy poderosa para jugar con la memoria de nuestra aplicación y tener un mejor aprovechamiento de los recursos. Con los objetos tenemos ahora el constructor y destructor, el deep copy y algunas otras técnicas que nos ofrece C++ para trabajar con memoria, pero a la vez hace más abstracto y difícil trabajar con la misma.
El concepto de POO
C++ implementa la metodología de programación orientada a objetos, y si le sumamos el uso de memoria, y la libertad de hacer lo que queramos con operadores, clases, herencia y demás tenemos que el concepto mismo de Programación Orientada a Objetos es una monstruosidad en toda su palabra. Con Java aprendí los conceptos de la POO y en parte fue fácil aplicarlas porque el mismo lenguaje te ayuda a que si haces polimorfismo sólo haya una forma de hacerlo, sin complicarte la vida, con C++ no lo es.
Si realmente queremos aprender a manejar todo el paradigma de objetos lo mejor es hacerlo con C++, ya que aplicar estos conceptos usando todo el potencial de C++ complica tremendamente todo el concepto, y ya una vez dominando esto cualquier lenguaje de POO nos será una cosa de niños.
Su librería STL
Una de las librerías por excelencia de C++ para construir aplicaciones. No he usado tanto la librería en mis proyectos o tareas, de hecho, por curiosidad he usado algunas clases, pero he estado leyendo para ver qué cosas tiene y me he quedado pasmado. La librería tiene clases para implementar algoritmos, operaciones, manejar estructuras de datos, y un sin fin de cosas que me han asombrado como no tienen idea. No tengo la menor idea de cómo están implementadas todas las clases, pero creo que para alguien que ya quiere crear algo específico esta librería ayuda tremendamente en cuestiones que de otra forma tendría que atender antes de ocuparse en las tareas más importantes.
Conclusiones
Si ustedes ya tienen más experiencia en C++ a lo mejor tienen muchas razones por las que C++ es un lenguaje muy poderoso y no solo una extensión de C. Yo les presento algunas de las características que he visto en mi curso de introducción, pero si hay más con gusto compártanlas en los comentarios.
C++ es un lenguaje que sin duda todos los que nos dedicamos a esto deberíamos aprender, Java es un chiste a comparación de lo que hace C++, y cualquier otro lenguaje de programación que tome conceptos de C++ ya dice algo muy importante sobre el hecho de aprenderlo también, así que si aún no han leído nada de este lenguaje los invito a revisar algún libro o tutorial porque al igual que yo se darán una buena sorpresa.
