Los lenguajes no son distintas formas de expresarse (Ni siquiera los lenguajes que utilizamos para conversar)
De hecho que I (yo) en ingles empiece con mayúsculas o que las palabras en inglés no indiquen sexo (como en español) nos dice mucho acerca de la forma de pensar de la sociedad… más allá de las ideas que se expresen.
Mucho más ocurre con los lenguajes de programación. Cada lenguaje hace que sea más fácil o más difícil resolver cierto tipo de problemas usando cierto paradigma para la solución.
Y normalmente esa supuesta “facilidad” de los lenguajes hace que lo que se termina ejecutando en el procesador aproveche más o menos sus posibilidades.
Los lenguajes que parecen más fáciles normalmente tienen menor capacidad expresiva y brindan menos posibilidades.
Si tenés un lenguaje que sea mas facil porque para mostrar un video sólo tengas que escribir
playVideo(“nombre del video”);
En principio es una pavada… hasta que querés que cada botón sea de un color diferente, o querés que el botón “forward” aparezca más grande y de un color especial
Entonces ¿cómo expresás eso?
Una caracterítica de C++ es que dando un nivel de abstracción (podés pensar en objetos en vez de pensar en instrucciones a un procesador) brinda una capacidad expresiva que es muy cercana a si escribieras instrucciones directamente para el procesador (que sería la forma mas cercana al código máqiuna)
Y no es mejor uno que otro. No se puede pensar o mejor o peor si no se considera el contexto en que se lo aplica.
Un ejemplo que siempre doy son los sistemas de coordenadas cartesianos y polares.
Dibujar una recta en un sistema de ejes cartesiano es una pavada
y = 5.
Tenés una recta horizontal
Dibujar un círculo en un sistema de coordenadas polares es una pavada
y=5
es un círculo de radio 5
Ahora dibujar una recta en el sistema polar o un círculo en el de coordenadas cartesianas es bastante más complejo.
Cada lenguaje te permite expresar un conjunto de cosas en un contexto.