3 ms·
What, specifically, don't you like about it? I think it's a fine language.
by syoutsey 16y ago
What, specifically, don't you like about it? I think it's a fine language.
- cpr 16y agoAgreed. It's just Smalltalk with C control structures. (An odd but felicitous mismatch, if there ever were one.)
- abstractbill 16y agoI suppose it's ok compared to something like C++, but coming from a more dynamic/functional preference (Common Lisp, Python, etc) I find Objective C clunky (my experience is in using it on the iPhone, so I'm really talking about the language as it is implemented on that platform). Reference counting memory management gets old and annoying very quickly. I'm glad to see what are effectively lambdas in iPhone OS 4, but wow it took a long time to get them! And the whole iPhone api requires delegate objects all over the place, so without lambdas or the ability to make some kind of anonymous inline class your code gets spread all over the place. I don't like header files, nor do I see the need for them in 2010 for crying out loud - I shouldn't have to write the same thing in two places just because a compiler isn't smart enough to figure it out. Overall I would prefer to just use C, if I need something really low level, or something much more high level if I don't (Common Lisp, Python, etc). Objective C straddles the two places badly imho.
- deleted 16y ago[deleted]
- j_baker 16y agoObjective-C is extremely verbose compared to the other mentioned languages. This is a big downer for me.
- cpr 16y agoNo more so than Smalltalk. Its adherents consider this a feature. And this is a function of the libraries used with the language, not the language itself.
- orangecat 16y agoNo more so than Smalltalk. Verbosity doesn't mean long method names. In this case it means header files, primitive types vs objects, poor collection support, and manual memory management. Smalltalk does a better job in all of those areas.
- catch23 16y agoSmalltalk has equally long method names in many places... see some of the morphic libraries... ObjC is basically naming type parameters. I don't think their (ObjC) collection support is too bad either. Also, the manual memory management only exists on the iPhone, if you use ObjC on the desktop, it comes with a garbage collector.
- cdonnellytx 16y agoWhich is what makes it even worse: it's not that they can't do it on the iPhone, it's that they won't. And why not? It can't be a question of RAM: Java has had GC back when the average home computer had half the memory available in the first gen iPhone. Nor can it be efficiency: most GCs these days are efficient enough for the average program, and a developer can always disable it if she prefers manual memory allocation. My point is that it just ends up being yet another example of Apple making arbitrary restrictions that do little for performance or user experience, while causing a lot of pain for developers.
- Zev 16y agoThe Newton had a garbage collector with NewtonScript. And the Newton only had something like 640kB of RAM. Although, I don't think the decision to leave it out was arbitrary or solely to piss off developers. Apple likely wants to have as little code duplication as possible, so they're not going to add it in until the iPhone/iPad has enough ram free so that game developers don't have to worry about when the GC will run. My guess (and lots of emphasis on guess) is that this will happen when support for the iPhone 3G is dropped.
- 16y ago