What about all the junk objects that would create? ‘+’ for concatenation for things like Lists would make perfect sense, but arithmetic operators would be scary. a = a + 1 + 1 + 2 + 3 + 1 + 2 + 3 + 0;
could not be optimized without also expanding/replacing the type system. You could not reduce the number of new objects created, you could not simplify expressions, you could not rearrange the order of operations on objects, and you would have to make a lot of method calls. It would be relatively simple to provide that feature as syntax sugar, but readability would be scary.
c = a + b;
would look nicer than SomeObject.add(a, b, c);
, but only on the surface. It could mean anything depending on the type of a and b at compile time and their types at run time. Then you would have to jump around between source files to decipher meaning from human-unreadable code. Jumping around that much just to get some information from another person’s code that could have been written using a more consistent and fairly self documenting language is dizzying and takes time away from real programming. That’s why C++ is so hazardous to your health, as well as any other language with an include directive.