Cita:
Empezado por escafandra
La complejidad es relativa al conocimiento del lenguaje.
|
Solo cierto, IDEALMENTE. Eso es lo que se llama "complejidad necesaria" (
https://en.wikipedia.org/wiki/No_Silver_Bullet).
C++ tiene mucho de lo que se llama "complejidad accidental o inesperada" que no se le puede achacar la culpa al usuario, es culpa del lenguaje, intrínseco a él.
Esto ni siquiera es un tema de opinión o controversial. Es un hecho claro y comprendido. El porque C++ ha tomado esta ruta, es parecido a otros lenguajes como Perl: Anteponer la capacidad de hacer algo de tantas formas posibles vs el estilo de lenguajes como Pascal/Python/Lisp: El tener la forma más simple y clara de lograr el objetivo, a costa de reducir la posibilidad de hacer cosas de forma diferente.
Obvio que eventualmente si se programa dia y noche en C++ todo parecera simple. Pero eso es pura costumbre. Cuando se aprende otros lenguajes se vuelve muy claro en que aspectos son mejores o peores.
Si uno compara C++ con otro lenguaje del mismo nivel, como ADA, Pascal o RUST es muy claro que C++ es mucho mas complejo. Si otros lenguajes tuvieran el minimo de maquinaria faltante para ser considerados "Systems languages", en terminos de pura sintaxis C++ queda borrado.
Desafortunadamente para todos en nuestra industria, C++ le gano a Pascal, y es la causa de millones de dolares en perdidas debido a ello.
----
Como un experimento interesante, busque en google "LANGUAGE X is too complex", usando C++, Delphi, Pascal, Python, Perl, Scala, Javascript.
Efectivamente, es tal como esperabas:
- C++, Scala, Perl, Javascript son considerados muy complicados como tal, como una falla inherente, un mal necesario de usarlos
- Delphi, Python, Pascal se discute la complejidad pero no tanto del lenguaje, sino de los proyectos o librerias externas, de interfazar con otros sistemas y cosas por el estilo. Tal como se espera de una herramienta mejor hecha que permite concentrarse en la tarea.
Una conclusion que es obvia si se tiene experiencia en varios lenguajes.