'James Terry - Software Developer

James says: "Thanks for looking at this blog post."

Hey Steve, no assembly language?
May 03, 2010

By now I'm sure you've seen and/or heard of Apple's prohibition on using anything other than "approved languages" when developing for the iPad/iPhone.

Here's the infamous text:

3.3.1 - Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

First off, no assembly language?!? What if I want to go right to the metal and make sure my App is as small, fast and power preserving as possible. Surely this is just an oversight. And I'm being only a little facetious. The first version of the AI code for my Cherokee Checkers game on the iPhone was too slow when written in Objective-C. I rewrote it in straight C (saving lots of object creation and destruction) and that speed it up significantly. But I was looking at moving it into assembler if needed - I'd like to see the objection to that.

In the end these kinds of arbitrary rules that are only driven by Apple's monopolistic tendencies will likely come back and bite them. Of course they can just drop it when it's convenient for them, so I suppose it might even make business sense. It kind of brings a soap opera feel to the whole mobile development scene.