For the popular languages and libraries we use every day: What are examples of some bad design, embarrassing APIs, or generally bad usability? Design errors that we have to pay for because they introduce subtle bugs, we have to use awkward workarounds or memorize unintuitive ways to get things done.
I'm especially thinking of issues like: There's a class in an OO language that really shouldn't inherit from that other class. There's special operator that makes a certain language hard to parse, and it turned out to be unused anyway. A function that's misnamed or is often in use for other things than it was designed for (I'm thinking of std::getline
to tokenize strings).
I'm not looking for contributions that bash languages and claim that, say, Perl or some other language is just badly designed. I'm more looking for concrete examples or anecdotes about things that clearly should have been done differently. (Maybe the designers caught it too late and tried to fix it in subsequent versions, but had to retain backward compatibility.)