4 ms·
> - Less accessible. Objective C is a strange, low-level, difficult-to-learn, niche language used only for mac development. It's not hard for someone that alre
by pbsdp 13y ago
> - Less accessible. Objective C is a strange, low-level, difficult-to-learn, niche language used only for mac development.
It's not hard for someone that already knows C, or really any other language. The learning curve is in platform knowledge, and every platform -- including the web -- is different.
> - More work. See above explanation of Objective C. You need an IDE to even be remotely efficient, an IDE that Apple also controls.
The IDE is a major win, not a downside. It automates the mundane, and applies equally well to web development -- I use IntelliJ for web work.
> - More work to port anywhere else. Popular app on iOS and want it on android? Time to rebuild the entire thing from scratch in another language!
That's unfortunate, but it provides the best user experience.
> - More expensive. Want to sell your app? Better give Apple their 30% cut, in addition to the yearly fee in order to have an app of any sort.
On the other hand, Apple has a mountain of customer's credit cards on file. The 30% buys you a lot.
> My point here is that the web has none of these drawbacks. The web is a uniform interface across devices, the languages are fairly simple and widely used, and the environment is open.
The web has a massive pile of its own drawbacks -- it's a language monoculture, low performance, no platform to speak of, much less platform consistency. Development is a hodgepodge of different interdependent tools, server-side and client-side. None of your users actually own anything, and webapps can just disappear at any time.
Neither proprietary native platforms NOR the web are perfect, and both are imperfect in very different ways.
- jdgiese 13y agoI have never used objective C, although I use C quite a bit. Javascript is much higher level than C, thus you can code more faster with less bugs in javascript. Of course it all depends on if you need low-level performance.
- Cookingboy 13y agoObjective-C is about on the same level as Java.
- potatolicious 13y agoWell... No. And I say this as someone who write Obj-C all day and actually likes Obj-C. Obj-C is a relatively thin layer around C, it's nowhere near Java's level of abstraction. For one thing, at least on iOS, there is no actual garbage collector. ARC is a static analyzer that injects manual memory management code into your app - it does not collect garbage at runtime. Even with ARC you are still managing your own memory - it is not possible to write a complex iOS app without understanding manual memory management and what the different reference types do in this regard. This is in contrast with Java where you really don't have to understand memory at all to write non-leaky code. You're also allowed to (though not encouraged to) do low-level hackery like pointer arithmetic. There is nothing stopping you from reaching down and fiddling with raw memory addresses and values. This is in sharp contrast with Java and other high-level languages where you're very explicitly forbidden from doing anything that might blow your foot off. The runtime itself is also really thin compared to the JVM. Hell, frequently the first you know something is wrong is when your program segfaults. Try that with Java. Not Obj-C, but OSX/iOS, is also that as soon as you get into any of the deeper libraries you're in C-land. Core Graphics is exclusively a C API, as are many of the other APIs like calendaring and address book. You really can't go deep into the platform without touching raw C. Anyways, Obj-C isn't on the same abstraction plane as Java, not even close.
- Cookingboy 13y agoIt was a generalized statement for people who want to begin to learn it, I personally find that Obj-C offers very similar level of abstraction for beginners as Java does (especially with ARC, and not everyone has to deal with CoreAudio, AddressBook and other C libraries or integrate C and C++ code into their app). I'm a professional iOS dev as well and everything you said were correct, so no arguing there.