Hacker News new | past | comments | ask | show | jobs | submit login

Anything that pushed native over web in my mind is a step backwards. Let's think about the challenges that come along with native ios apps:

- Less accessible. Objective C is a strange, low-level, difficult-to-learn, niche language used only for mac development.

- More work. See above explanation of Objective C. You need an IDE to even be remotely efficient, an IDE that Apple also controls.

- 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!

- 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.

The common theme of these points being that Apple wants control over everything, and has control over everything. But that's a point for a separate rant. 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.

Apple could still take control and sell web apps, but they seem to be very purposely not doing that, and pushing native as hard as they can while occasionally implementing a buggy web app feature here or there. It just makes me sad. We don't need parallax when we move our phones around. We don't need blur effects everywhere. We need an easy, clear, open, and accessible way to develop apps for mobile devices.




I find the web programming model to be very difficult and limiting relative to desktop or mobile UI development. I don't take on any development work in that area because it is so unpleasant to me (JavaScript, HTML/CSS, DOM manipulation, and making that stuff work on multiple browsers reliably). I suspect I am not the only one hoping that someone comes up with an entirely new web development model that is much more like classic desktop UI development, and portable. JavaServer Faces was one attempt I can think of. GWT is another.

The user experience with web apps isn't there yet either, particularly for mobile where you don't have a mouse, keyboard, and screen real estate to burn.

There are of course many other advantages web-based applications. Good application UX is just not one of those advantages and I think it is the main reason that native continues to rule mobile, not anything Apple or any other mobile OS vendor is doing.


> Less accessible. Objective C is a strange, low-level, difficult-to-learn, niche language used only for mac development.

I don't think you know what a low level language is. Also, Obj-C is quite a breeze to learn.


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.

Can you name an app that charges that isn't in the App Store? There's plenty of apps in the App Store that are "HTML apps" (built using PhoneGap, Titanium, etc)


Ah, you forget the main Advantage (to Apple)

- native means control.


> - 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.


I 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.


Objective-C is about on the same level as Java.


Well... 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.


It 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.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: