Do you speak binary?
01001001 00100000 01100010 01100101 01110100 00100000 01101110 01101111
(Translation: I bet no) Try yourself. Well this is what all CPUs “speak” as you likely know.
Now we can discuss how the translation happens, ahead of time (aka Compilation) and execution time (aka Interpretation) or some hybrid worst/best of both worlds (aka Just In Time Compilation or JITing) but that also is somewhat irrelevant to today’s post. Just understand we transform one representation of an idea, er program, into another so the computer can run it.
I think we all know this process if we’ve ever coded something even fairly trivial. Now recently Apple has decided that it is going to ban this process , or at least the kind they don’t like. You see Apple isn’t keen on Flash and much ado has been made about them not supporting it on their ever popular iPhone and iPad, something about CPU drain, etc. Probably more about app store control, but whatever. However, the war escalates so now they have decided that it is not legal to use some software that will transform Flash into an allowed native application
Seriously!? As a semi-serious computer scientist this is UTTERLY LAUGHABLE. The hair splitting of this legalese is bound to become a classic.
Ok so we can only write in their four prescribed languages, all other languages are illegal? What’s next no Spanish speaking apps? (sarc)
It is especially key the word “originally.” You see otherwise it goes like this, I write in Flash in other words ActionScript and then press a button and it makes C in an intermediate form and then press another button and it makes the native API calls in one of the four approved languages. However, the “originally” of course keeps me from doing that. They need to know what my inspiration is.
I am wondering if I write pseudo-code on a piece of paper that is in Lisp and then use my brain and translate that into C if that is illegal? I guess not if my brain doesn’t qualify as an “intermediary translation or compatibility layer or tool”!
I especially like “…directly link against the documented APIs.” It is interesting the choice of the word link here and directly, they avoid the words invoke or call. This is interesting because I wonder if there was some API called doMagic() and I happened to write my own doMagic() method (spelled exactly the same) which in my illegal language which will eventually call their doMagic() after some process then that is disallowed. They are trying to with the use of the mention of compile and link as well as the insertion of “compatability layer” knock this down.
It is interesting the use of the word compile too. How about if write an interpreter for the iPhone OS? Is it ok then to call things or do I have just compile? Can I write a VisualBasic interpreter and sell it in the AppStore? Then can its programs call things, you see they aren’t compiled they are interpreted? Well likely they won’t allow that app to come into the app store, so that won’t work.
p.p.s. I own both an iPad and iPhone and like them quite a bit, but this doesn’t make this technology fight or legal language any better. I am not arguing for some “break the Apple walls down and go free for all”, but simply be reasonable about things. The what not the how should be concern of a program allowed on the device.