Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Gruber gets this mostly right, especially about vendor lock-in and abstracting on top of the platform as a whole (i.e. multiplatform, write-once apps.)

Where he gets it wrong is here:

IPHONE DEVELOPERS: No change. If you’re a developer and you’ve been following Apple’s advice, you will never even notice this rule. You’re already using Xcode, Objective-C, and WebKit. If you’re an iPhone developer and you are not following Apple’s advice, you’re going to get screwed eventually. If you are constitutionally opposed to developing for a platform where you’re expected to follow the advice of the platform vendor, the iPhone OS is not the platform for you. It never was. It never will be.

There are many good applications written in something other than C, Objective-C, C++ or JavaScript available for iPhone. In Apple's hubris to strike down Adobe and other opponents, they've caught many well-meaning developers in the crossfire. Especially in regards to independent and startup developers, being able to choose your tools -- tools that otherwise obey every other rule in the developer program -- is hugely important. I think most HN readers will resonate with this claim.

I can't stand Flash. I also don't much like plain JavaScript. I prefer to write applications in a mix of C, Scheme/Lisp, or Haskell. I can probably write faster and more stable iPhone apps with these tools than a 10-man-strong team can with C and Objective-C. I definitely cannot write faster and more stable iPhone apps with C and Objective-C than a 10-man-strong team can with C and Objective-C.

Apple's banning of languages other than "The Three Cs" strikes developers as egregious because we know how much the language you use affects how you think. Apple is telling us, now, how we should be thinking when we solve problems. They are asking us to agree to use only an approved set of thoughts.

They have a right to, it's their platform. We also have the right to walk away from this self-imposed kiddie pool, and go back to the ocean to ride the big waves.



If Microsoft said "No Windows 7 Mobile apps that aren't C++ or C#" we'd just shrug, and say, "well, that's Microsoft for you."

Microsoft would never do this. They are the "developers, developers, developers" company, after all. They even invest money in programming language research and actually make the academic stuff production capable.

Apple just adds half-baked features to dead languages. "Yay."


You're right, but I had already removed that paragraph before you commented.


I prefer to write applications in a mix of C, Scheme/Lisp, or Haskell. I can probably write faster and more stable iPhone apps with these tools than a 10-man-strong team can with C and Objective-C.

Have you?


Yes.


Can you probably, or have you actually build in shorter time (or did you really mean apps that run faster) apps that are more stable than that created by a 10-man strong Obj-C team for the iPhone?

If so, would you say it was a function of the quality of the other programmers, or could it be distilled to purely tools?

Genuine interest (since I love languages for their own sake and the expressiveness they allow): what tools + languages did you use?


We should just take your word for it?


If you don't want to, you can just ignore my comment.


There are many good applications written in something other than C, Objective-C, C++ or JavaScript available for iPhone.

Any examples? I'm genuinely curious since I've heard that a few times already today but haven't heard of any specific examples.


Anything with a parser. Anything that uses Quartz 2D (a drawing library that uses the C preprocessor, in Cocoa/UIKit.) Anything with C preprocessor macros above a certain unknown threshold (hey, Objective-C was originally just a bunch of macros!) Anything that implements its own memory management scheme. Probably 90% of non-trivial games, and 100% of the good ones. (Almost all good games utilize their own runtime implemented in either C++ or other fast language, abstracted into a higher level set of primitives for the game designers to work with.)


Quartz 2D is Apple's C-based graphics drawing framework, mentioning that is irrelevant here. I still haven't seen anything specifically mentioned that's not written in C. You mentioned using Lisp & Haskell to write iPhone apps, which ones are those? Who else is doing this and which apps have they published?


Quartz 2D is Apple's C-based graphics drawing framework, mentioning that is irrelevant here.

Quartz 2D is written in the C preprocessor language, not primarily C. To use it, you mostly use C preprocessor directives, not C. It's then translated into C by a compiler, before being compiled by the actual C compiler.

I still haven't seen anything specifically mentioned that's not written in C.

Other people have. Tons of applications, probably tens of thousands at the very least make direct use of some kind of abstraction tools. Hundreds of thousands (or all) if you take Apple's clause literally.

You mentioned using Lisp & Haskell to write iPhone apps, which ones are those?

I'm not obligated to tell you.

Who else is doing this and which apps have they published?

Is this a serious question?


You're making a lot of claims without citations. flyosity's absolutely correct to question them, and if you're serious about what you say, then yes, you are obligated to back them up in some way.


Citations: Quartz 2D: Read Apple's library docs or headers. Publicly available. No other devs have stepped up to question this claim. Dead obvious if you use it.

My own apps: I'm not obligated to tell you. If that pisses you off, sorry, then just ignore that part of my claim, I don't care.

Who else is doing this: Any game made with Unity. Any game made with Mono. Any game made with Lua. Any game made with its own runtime. Any game made with Python. Any game with an advanced preprocessor. Any game that manages its own memory.

Any software with a parser not written directly by hand with C arrays (i.e. any that are worth a shit.) Any software that uses C macros (all of them.) Any software that uses garbage collection. Any software that uses Core Data (violates their own rules.) Any software that has linked in a regex library.

Things that would not have been created had their creators had to work with the same limitations they now impose on others on their platform: every single part of their toolchain. Objective-C, graphics, the compilers, everything.


The C pre-processor is part of the C language definition.


And you think Apple will institute a policy that kills off 100% of the good games on their platform?


They already did. Now they get to choose when to apply it, arbitrarily.


It appears that the lawyers want to, yes.


And why have you concluded that the clause is made by evil lawyers (who Apple hires) and not by the business? Can I really do anything I want in life, and if I'm criticized, I can just claim, "my lawyers made me do it"?


A specific example: Canabalt (fresh take on the "platformer" genre)


Though the flash version of Canabalt is written in ActionScript 3, the iPhone version is written 100% in Objective-C. Take my word for it, I personally did the iPhone port.


I was unaware of that. From what I gleaned using class-dump, it appeared that you were using a custom version of flixel that retargeted Objective-C. My mistake.

(also, nicely done. the iPhone port is very slick)


Do you think you could have ported a non-trivial game with Objective-C? How about something like Braid, which is slightly less straightforward?


I don't think it necessarily matters how trivial the game is. If the game is more complex, then it is just a matter of requiring more time to do the port. Canabalt took just under two weeks to port. Something like Braid would likely take significantly longer.




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

Search: