#13285 - sajiimori - Wed Dec 10, 2003 7:06 pm
In another thread, I made this statement:
Since it would have been offtopic to start a flame war in that thread, I invite all those who cannot resist the temptation to share your opinions here.
To narrow the topic a bit, what programming languages have been developed for practical use (i.e. not Malbolge or Intercal) that are more complicated than C++?
Perl is a good candidate, but consider: how long has it taken C++ compilers to fully and correctly support the language? Perl may have an unfair advantage because the language is essentially defined by the interpreter, but it is still worth noting that after 20 years, there are still few (if any) correct implementations of C++.
Ok, so I'll concede that Perl is more complicated in terms of its quantity of rules. But the rules in Perl are geared toward convenience, not technical concerns. At least you don't have to try to remember to declare your destructor virtual, or define a copy constructor for a class that has pointers, or label a constructor "explicit" to prevent automatic conversion, or use array delete with array new, or check for self-assignment in operator=, or make sure that static objects are initialized in the correct order. BTW, most of these errors are not detected by modern compilers.
Anyway, I think it's perfectly reasonable to agree that C++ is the most convoluted language in existence (almost), and still use it on a regular basis and even call it your favorite language.
You could always argue that a complex language is needed to develop complex software. I agree, in a sense. Lisp is an exceedingly simple language (at its core), and you wouldn't dream of writing a complex application directly in low-level Lisp code. You would use the low-level operations to construct a new "language" of higher-order functions (which you can then apply to construct another layer atop that, and so on).
But instead of having a small, extensible core language, C++ incorporates a large number of higher-order features directly into the core of the language (well, they're higher-order than C anyway). This is why C++ is more complicated than e.g. Lisp, as I suggest it is more complicated than all other practical languages.
Quote: |
C is an elegant balance of simplicity and practicality, whereas C++ is possibly the most convoluted language ever concieved (and intended for practical use). |
Since it would have been offtopic to start a flame war in that thread, I invite all those who cannot resist the temptation to share your opinions here.
To narrow the topic a bit, what programming languages have been developed for practical use (i.e. not Malbolge or Intercal) that are more complicated than C++?
Perl is a good candidate, but consider: how long has it taken C++ compilers to fully and correctly support the language? Perl may have an unfair advantage because the language is essentially defined by the interpreter, but it is still worth noting that after 20 years, there are still few (if any) correct implementations of C++.
Ok, so I'll concede that Perl is more complicated in terms of its quantity of rules. But the rules in Perl are geared toward convenience, not technical concerns. At least you don't have to try to remember to declare your destructor virtual, or define a copy constructor for a class that has pointers, or label a constructor "explicit" to prevent automatic conversion, or use array delete with array new, or check for self-assignment in operator=, or make sure that static objects are initialized in the correct order. BTW, most of these errors are not detected by modern compilers.
Anyway, I think it's perfectly reasonable to agree that C++ is the most convoluted language in existence (almost), and still use it on a regular basis and even call it your favorite language.
You could always argue that a complex language is needed to develop complex software. I agree, in a sense. Lisp is an exceedingly simple language (at its core), and you wouldn't dream of writing a complex application directly in low-level Lisp code. You would use the low-level operations to construct a new "language" of higher-order functions (which you can then apply to construct another layer atop that, and so on).
But instead of having a small, extensible core language, C++ incorporates a large number of higher-order features directly into the core of the language (well, they're higher-order than C anyway). This is why C++ is more complicated than e.g. Lisp, as I suggest it is more complicated than all other practical languages.