Assuming you're belittling Objective-C, let's not forget that Objective-C is simply C with Smalltalk bolted on. I'm having a hard time imagining a plane of reality in which either is not "half decent". Objective-C is, in my opinion, much better than C++ to accomplish the same task (they have semi-equivalent aims, though implemented very, very differently).
I learned Objective-C and iOS (then called iPhone OS) from scratch to write a quite-complex app once. The app has been in the store for two years now. Like you, initially, I balked at the brackets; everybody does. Eventually, I was actually pleased that my C experience carried over so well, and it was a pleasant experience in the end. As you do, I wrote two to throw away until I mastered the platform, and I didn't mind it at all.
Assuming your object user has an update method which takes a name argument and you want to store the result of calling update somewhere, here's Python vs. Objective-C (the Smalltalk-influenced terminology is different, but the concepts are the same):
save_result(user.update(name="Larry"))
saveResult([user updateWithName:"Larry"]);
I don't find one much more horrible than the other.This is because it stole ideas from Smalltalk, which is also brilliant. I doubt there are many people who hate it rationally, but I'd love to have a discussion with them instead of the people that have some knee-jerk reaction to the message-passing syntax.
Now maybe that melts away when you learn the language but I've heard enough complaints from people who have to get the feeling that's not entirely the case.
Readability is probably the most important language feature.
Objective-C is tolerable, sure, but I'd rather write C++ - and that is no compliment to C++. (But, as a side note, I give Apple all the credit in the world for having a fantastic C++ environment on its own. XCode has its stupid spots, but it doesn't get in clang's way.)
My User object was called, unsurprisingly, "User". [[User alloc] init].
As for interop with C++, Objective-C++ exists and is used for apps in the store. (Hint: 3D games that are ports.)
Even just aesthetically--vomiting out half-line identifiers every time I have to refer to a class is, for me, painful and stupid and makes me hate reading what I've written. One of the worst feelings in the world is looking at code you've written and hating even looking at it, and for me there are only three languages I've spent time with where that's the case for reasons beyond me fucking up: Java, Scala--for reasons entirely unrelated to its Java heritage, it makes its own mistakes--and Objective-C.
As for Objective-C++, it's useful in a limited capacity but often requires unscrewing your object model in pretty stupid ways just to provide inputs that the Objective-C side won't barf on. It's an "ehh" hack with painful edge cases.
I'm pulling my rip cord on this discussion based on your tone, the nearly guaranteed futility, and the complete lack of any realizable benefit in my own life of carrying on. Good evening.
I wish the privilege to delete didn't disappear after a time, so I could wash my hands of this thread and forget that I ever spent more than ten minutes on it.
All languages have namespaces. It's clear you don't understand the concept. A namespace is an abstract container to provide context and ensure uniqueness between items with the same name. User is a namespace. Since you have a global namespace, you have to prefix the name to make another type of User. So yes, naming conventions (which are namespaces that are not enforced by the compiler) are due to the absence of namespaces as a construct. Sheesh.
Your vitriol is uncalled for, and since it's only your second comment ever, you should pause a moment to consider whether Hacker News is the community for you (judging by the two comments you've left so far, it isn't; I recommend Reddit for dick jokes and personal attacks on comprehension).
Garlic is good. Ice cream is good. That doesn't mean that garlic ice cream is necessarily good. It exists as a promotional gimmick, sure enough, but it won't be in Baskin Robbins any time soon.
One can always mix first rate components badly to create abominations. Not saying Objective C is an abomination, but pointing to the coherence of the underlying languages is not much of a defence of the clarity of Objective C.