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).Let's suppose I want to write an iPad app in strict accordance with these terms. I can't use python or ruby or Lua or (god forbid) ActionScript, but I guess I can deal with that; I'm more familiar with C anyway.
Of course, being a well-trained computer scientist, I'm going to design a modular piece of code, with different modules devoted to touchpad tracking, graphics output, physics simulation, score-keeping, and so on. Naturally, to keep the code modular, I'm going to carefully document the calling syntax, function, side-effects, necessary preconditions, and error codes of each routine within each module....
Oh, wait; that's an API. That's the very definition of an API. And since it's not an Apple API, that makes it a private API. Damn. I guess I'm not going to write separate modules after all; no way am I keeping all that stuff straight in my head.
Well, okay, at least I can organize my code into separate functions, so that I'm not just dealing with a big pile of spaghetti.
Oh, wait. What's the difference between calling a subroutine that calls another subroutine that invokes Apple's API, and using an 'intermediary translation or compatibility layer or tool'? There isn't one! Oh no!!
I guess I'm going to have to write a big pile of spaghetti after all; I'd better keep the app simple. Implementing the Hashlife algorithm without function calls (except to Apple's API) is going to be a pain in the ass, but at least when I'm done, I'll have the best Game of Life simulator on the iPhoo, EVAR! Now I just need to sit down and think about my design; let me get some paper...
Oh, wait. I'm not allowed to write down pseudocode; that would violate the '...must be originally written in...' clause! I guess I'd better stick to something I can write directly into the code, without thinking about it. Good thing the basic Life algorithm is so simple...
Oh, wait. The Game of Life is Turing-complete. That means any program can be encoded as a Life pattern, and then executed through an 'intermediary translation layer', namely, my simulator. So the new license might not outlaw my native-spaghetti-C simulator, but it would explicitly forbid actually using it to simulate anything.
Crap. I guess I'll just stick to proving theorems.
Recent Comments