Bravo, Apple

Finally, Apple is doing away with those arrogant upstarts who think then can write a few lines in a high level language and call it a program. Their new developer agreement requires:

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

This has a couple of good points – firstly banning stupid languages (used by those people who are not smart enough to learn c++), and secondly getting rid of translation layers. Apple has clearly put a lot of thought into their APIs, so why would anyone want to put a layer on top of them – it’s just going to make things harder to use.

Languages

There has been a lot of talk recently about compiling “foreign” languages, such as haxe, as3, javascript, java, .net based languages, into binaries that will run extremely well on the iPhone. But like all foreigners (who are responsible for all the terrorism in the world) these languages should be cleansed from all iPhones to maintain the iPhones mono-lingual purity. Putting such insidious diversity into a beautifully designed device can be shown to confuse consumers, most of whom don’t even know their device and been compromised by these so call “high level” languages.

By raising the barrier of entry, and only permitting “real” programming languages (ie, “C” based ones), Apple ensures that the quality of apps will remain at its current lofty levels. “Natural Selection” will then weed out those people who are too lazy or too stupid to learn a proper language. In fact, I think Apple has not gone far enough here and should dabble in a bit of “Intelligent Design” by requiring that all developers who wish to submit apps hold at least a 4 year degree in computer science. Just imagine a world where any kid can work out of his garage and build an application with an original language, or bit of hardware, that snubs its nose at the establishment – anarchy would ensue. Therefore, it is important that the responsible companies out there vet such potentially disruptive ideas before they can cause too much damage.

It can’t be said that Apple don’t like new langauges, after all, they championed the greatest NeXT Step in programming ever, Objective-C, it’s just that all the other languages are utter crap. Some of then do away with the beautiful square bracket, some use commas to separate function arguments and nearly all the modern ones perform “Garbage Collection”. What a joke! Apple solved this problem years ago be simply not creating garbage in the first place. Again, it is only those too lazy to learn about how to use allocation pools and correct reference counting that need anything as dirty as Garbage Collection.

The new langages, such as haxe, are so terse that you do not even know when you are using a delegate. How can anyone possibly understand that code like:
addEventListener(KeyboardEvent.KEY_DOWN, function(event) { trace(event); });
Is supposed to do? I mean where is the delegate? Where is the class that implements the UITextFieldDelegate protocol? (And why must these languages continue to call things “Interfaces” when they are clearly “Protocols” ?)

I think Apple are right to ban code generators, such as the haxe c++ backend. While these produce code that could in theory be produced by hand, the code it robotic and lacks the “soul” of hand written code. To err is human, and without the quirks introduced bu a human coding c++ we may as well hand the future over to SkyNet and let the machines run everything.

Layers and Tools

Thankfully, Apple has also done its research into programming techniques as well as programming languages. The problem with programming these days is that where are too many layers and tools to learn, and they are taking us back to a simpler times where you are “close to the metal”. Apple rightfully shuns these extra layers, and focuses only on code. Once you understand Objective-C, Interface Builder, NIB, XIB, Frameworks, .app layouts, provisioning, xml, plist, controllers, delegates, owners and outlets, then you can create pure lovely code, without any of that layering crap getting in your way.

Programmers must beware of code that essentially “lies” by pretending that the beautiful, native API actually looks like one of the ill-conceived APIs from another language. For example, why would anyone want to view a native UIView image as the practically unsable as3 “equivalent” (I use the term loosly) of BitmapData? I don’t think there is a single successful application ever written that uses this BitmapData class.

Isolating your code from the native API will cause your code to lose its identity. If you can compile it for another (obviously inferior) device then your code will become tainted by the lower class device, even it it performs identically on the Apple device. How quickly people forget that the upper class should not mingle with the lower class.

I hope Apple’s ban extends to the gzip “translation layer”. Programmers should not be using this library because it has security implications, and they should simply use the streaming classes and do the decompression in their own code. If more programmers thought like Apple, then there would be a lot fewer security holes in software.

Don’t get me started on Game Making programs. Thank god these are banned – imagine letting a non-programmer create an App. What next, Artist creating games? Don’t make me laugh.

Conclusion

Apple has made a huge stride forwards by tightening the definition of what a real developer is, and I’m looking forward to what’s next. I think they have a little way to go – for example, what about all those people using foreign editors, rather than XCode? Surely if XCode is not good enough for a developer, then that developer is not good enough for Apple. The best way I can see for them enforcing this is for them to install a “watchdog” application the the developer’s machine, and send screenshots back to Apple periodically. That way, if the developer does not conform to the coding purity required by Apple, they could be identified and sent to a camp to help them concentrate on being better programmers. Win-win, what a great idea.

This entry was posted in flash, hxcpp, iphone and tagged , , , , , . Bookmark the permalink.

135 Responses to Bravo, Apple

  1. neil manuell says:

    Lets be pedantic… I believe that this is irony, not sarcasm.

  2. Petit says:

    Thanks for a good laugh on a serious matter!
    Just wonderful!

    Cheers!
    /Petit

  3. Bas Horsting says:

    I feel for you mate, you’ve such a huge effort into this project… and it all seems for nothing right now. The thing is, Apple’s move is not about languages at all. They’re essentially shutting down a road to multi-platform development which would hurt their business, as Android grows bigger and bigger as a competitor, and with Windows Phone Series 7 just around the corner. It’s a shame for us developers, and probably, in the long run, a mistake. But we’ll find out about that in due time; it might be that they’re not even concerned about this in the long run… The biggest shame is that we have to (continue to) develop in Obj-C for the iPhone & -Pad, which is one of the crappiest languages around. If only they’d have something like c# or java on offer… oh well. I wouldn’t be surprised if Apple comes up with something high-level someday. It would be a logical next step for them after these announcements.

  4. Huge says:

    Hi All,
    I wrote this before going on holiday, and did not really anticipate such as shit storm.
    Those who are regular readers will be more familiar with some of my other ideas on these topics, with particular reference to the haxe (http://haxe.org/) programming language, and may have an easier time interpreting my comments, eg:

    Compiling for foreign targets: http://gamehaxe.com/2009/07/28/haxe-iphone-cpp-at-last/
    Code generation: http://gamehaxe.com/2009/05/22/haxe-on-iphone-simulator/
    Garbage Collection: http://gamehaxe.com/2009/08/17/switched-to-immix-for-internal-garbage-collection/

    I apologise if I miss the irony in any comments with my responses:

    dcolumbus: No the terrorism comment was certainly not necessary

    Jessica: I don’t deny it may make good sense for Apple. Just as only allowing Internet Explorer on Windows makes sense for Microsoft and indeed censoring the internet makes sense for China.

    Brent: Sorrry

    jeckil: I understand that some people may like Objective-C, and I have no problem with that. In fact, I think almost every language has its good points. I was really after the political point, but couldn’t resist a little dig.

    observer: I may perhaps never grow up.

    Meme: I was aiming for 95% first pass.

    Chis: no, I’m not serious

    Mistergino: I laid it on thick so I could not be mistaken. Thicker next time.

    WTF: Too much?

    tonto: I though it was not subtle enough – but maybe not.

  5. mraak says:

    Spot on!! I don’t know why the hell Objective C they feel they are a category above the others. Entire Apple dev environment is mediocre at best, J2ME with a way more fucked up syntax. It seems more like Jobs tried to fulfill his childhood dreams, having been neglected and abused for decades and survived only by stubborn loyalty of Adobe design community.

    Having said that as a professional developer I did have to learn it and buy a mac so I can cater to my clientèle, although with a great deal of disgust.

  6. mraak says:

    @Jessica: You know, Hitler had more money than Jobs. Probably also Osama Bin Laden, so please join their church as well.

  7. The_Fellowship says:

    Fantastic article! I agree with most of your points lol

  8. Scott F. Barnes says:

    Noticed there was a different Scott Barnes posting above so I included my middle initial to differentiate.

    Really though. For pure code, you need to write in assembly language. None of this high-level object oriented crap. Come on Apple – bare metal!!!

  9. Eric Fickes says:

    “Apple has made a huge stride forwards by tightening the definition of what a real developer is” – that’s funny

  10. Ash says:

    ……. .. . . . . DDDN ………….
    ….. . . . DNDDDD$ . ………….
    … .. …. .. …….. .. ..$DDDDDDD .. ……………
    … … …. NDDDDDDDD ………….
    … …… .. . .. … . ..NDDDDDDDD.. … ………….
    …… …. . …. … …..DDDDDDDN …. ……………
    … .. . ODDDDDD. ………….
    … . …. NDDDN.. ………….
    … . … . ~O+.. ..:MDDD… ………….
    ….. . .. . ..DDDDDDDDDDND. ..NDDDDDDDDDDDNO………….
    … .. ….NDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDM………..
    … ..DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD……….
    … . .=DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD………..
    … ..DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDN…………
    … . ..NDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD…………..
    … $DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDO ………….
    … ..DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD. ………….
    … DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ………….
    … .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ………….
    … . .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ………….
    … . .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD……………
    … …DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD? ………….
    … NDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD…………..
    … . DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD~…………
    … . .NDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ……….
    … .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD………
    … . . .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDN……..
    … . . ..DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ……..
    … . . …DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD……….
    ………..?DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD7……….
    …………ZDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$………..
    ………….,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDI…….. . .
    ……………DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD . . . ..
    …………….DDDDDDDDDDDDDNNNDNDDDDDDDDDDD.. . . . .
    ………………DDDDDDN……….,NDDDDDN …… …….

  11. Ash says:

    Hahah that so didn’t work

    Nice post ;)

  12. pixnlove says:

    You are very knowledgeable, and thanks to you Haxe can now target C++….
    But where are the finish product using this target? Where is the Doc?

    And that is the way it work, unfortunately you guys(experienced programmers) create great tools but few projects, documentation and examples to learn from.

    The only solid doc that you can find for the Haxe targets are at least 2 years old!

    The time goes by, Haxe is growing but less and less doc are generated which make the new features obsolete and pointless.

    Unfortunatly that is haXe biggest failure.

  13. maya says:

    Haha… Fun article, like it…*))

  14. Before making any derogatory comments, you should google the author; that way you will realize that this is a greatly established sarcasm by Huge!

    And, CS Degree requirement is my favorite.

  15. iFone Phucker says:

    “Just imagine a world where any kid can work out of his garage and build an application with an original language, or bit of hardware, that snubs its nose at the establishment – anarchy would ensue. Therefore, it is important that the responsible companies out there vet such potentially disruptive ideas before they can cause too much damage.”

    remind you of any company? i’ll give you a hint, it rhymes with snapple and isn’t delicious.

    while there are some decent reasons for apple to have a deathgrip on the app market for the iphone, i think it’s a mistake in the long run. apple would do better to have 2 distinct software paradigms the iphone can be run in. the first being what exists now, the second would have no limitations on apps at all and wouldn’t even need an apple run market place. apple could only provide tech support for the 1st group, but still allow the existence of the second. the second would also be a useful proving ground for new apps and would likely increase overall quality of apps in the traditional group.

  16. iFone Phucker says:

    oh yeah, a CS degree requirement is the most retarded thing i’ve ever heard. a college degree does not magically grant someone more intelligence. MANY terrible programmers have CS degrees and MANY excellent programmers do not.

    artificially propping up the university system by such requirements drives up tuition costs and drives down quality of education.

  17. davea0511 says:

    Don’t know whats funnier .. the sarcasm in the original post or all the people who thought anybody could be so dense to say all that and not be sarcastic.

    That said, Apple’ announcement actually makes Haxe all the more relevant … as it’s the only way to use code intended to be platform independent to run on the iPhone, is it not? Haxe is the #1 way to stick it to Jobs.

    Unfortunately pixnlove is right. Haxe has the possibility (and has for some time) to be THE game-changer, to no avail. It’ll be a no-show until those in the know set aside a week and put all their knowledge into a comprehensive and easy (think “for dummies”) wiki. If they don’t haxe will ultimately go the way of all such promising efforts: obsolescence. Languages don’t succeed based on ability nor ease, but rather because of evangelism and the best evangelism is a good fully documented, up-to-date, and easy to follow wiki and code examples…

    …which haxe doesn’t have.

  18. Christopher says:

    There has been a lot of talk recently about allowing “foreign” speaking people, such as blacks, mexicans, asians, into binaries that will run extremely well on the planet Earth. But like all foreigners (who are responsible for all the terrorism in the world) these people should be cleansed from all countries to maintain the Earth’s mono-lingual purity. Putting such insidious diversity into a beautifully designed planet can be shown to confuse people, most of whom don’t even know their heritage has been compromised by these so call “high level” speaking people.

  19. Christopher says:

    By raising the barrier of entry, and only permitting “real” people (ie, “English” based ones), Apple ensures that the quality of people will remain at its current lofty levels. “Natural Selection” will then weed out those people who are too lazy or too stupid to learn a proper language. In fact, I think Apple has not gone far enough here and should dabble in a bit of “Intelligent Design” by requiring that all people who wish to procreate hold at least a 4 year degree in computer science. Just imagine a world where any kid can work out of his garage and build an application with an original language, or bit of hardware, that snubs its nose at the establishment (Like Bill Gates and Paul Allen)– anarchy would ensue. Therefore, it is important that the responsible companies out there vet such potentially disruptive ideas before they can cause too much damage.

  20. adam says:

    I was confused and then so relieved. This article is funny, but I’m afraid a lot of newcomers like myself might take you seriously.

  21. Games says:

    It also surprises me how many peeps took this article seriously. It was clear sarcasm, guys!

    Hope someone will return slap to apple’s face soon

  22. somenick says:

    LOL nice article.

    However, Flash and Actionscript are highly capable platform, andthere are plenty of great programmers there. Many great games such as GemCraft, Athalina RPG, Fancy Pants, and many other games DO actually require a lot of programming in order to be what they are.

  23. Bruno says:

    Thats why I will never buy anything from Apple… Their capability of not going further is very high.

    Is this article sarcastic? I hope so..

    Anyway I know C++ very well, more than I know AS3, but I must confess, using AS3 for doing games is much more easier and fun! And yes, you need to be smart enough to learn it, or you can pay and use Flash CSX…

  24. Me says:

    Awesome article!!! Soooooooooo funny, I love it. This needs to be sent to Apple right away. Maybe you should consult for them, I don’t think they have thought of the “Watchdog” application yet. Oh man, this is so funny, great job!

  25. Pingback: Geert – Adobe vs Apple

  26. John says:

    You forgot Basic… nsbasic wrote a compiler that makes apps for the iPhone, but can’t release it because of that agreement…

  27. Dani says:

    Every company is evil , they dont share or give anything for free they also have the right to sell what they want and how they want but at the end we have the power to not to buy and make them change. So dont consume dont support when you dont like what some company is doing.
    we are forced to consume publicity everyday and sometimes we forget that we dont need to buy everything we see.

  28. Pingback: Second Thoughts on the iPad « Rantings of an angry geek

  29. I am very serious developer and doing beautiful code. Will never let somebody screw it up! I am smart enough and spent last 2 decades learning and learning and learning still the same technology. You should try too. Just go back in time!

    Btw, what is a sarcasm? Did miss something in my life?

  30. Pingback: A few useful links regarding the Apple/Adobe feud · Skiller

  31. There is a bunch of Apple Supporters with torches and forks banging on my door…

    On the main village square there are already 3 flash developers hung. Apple Fanatics burned down their homes and raped their families…

    Please help me… An I-Pad in flames just smashed in my window.

    They have Steve Jobs portraits, and leather boots with apple logos on them.

    My neighbor is a Microsoft reseller. They chopped his head off and put it on a spike.

    The local Apple Shop owner took control of the crowd. They scream “LONG LIVE TO STEVE! LONG LIVE TO STEVE!”.

    There are roadblocks where people with their I-Arian application on I-Phone scan your fingerprints to check if you have molecules of PC keyboards. If so they chop off your head with a 3G I-Pad on the spot, and stick a plastic white apple leaf in your temple.

    People are terrified. I am hiding in my cellar a family of Android cellphone owners. They are number 1 on the wanted list because they tried the I-Phone in the Apple shop and said “This sucks! I cant watch vimeo” and moved to HTC.

    This started the pogrom violence… I have no hope anymore. If someone should find this e-mail in a bottle please take advice for future generations…

    I refused to have a barcode tattoed on my arm which is my Itunes and AppStore id, and they know I love ActionScript. Thats why they want me.

    The door is not holding anymore… I can hear their OSX system-startup sounds through the cracks.

    The Apple Goblins are rushing in. They all sing in chorus the Apple Anthem bough special price on itunes, “We are just, we are Apple. We are safe, we are clean! No politics, just revenues. We are free, free with Steve”

    I am typing with just one hand, a 24″ cinema display broke my left whrist. Please, please tell future generations that a lunatic with glasses screaming to the international press started all this.

    Cough… smoke is burning my lungs… I will not resist much longer…

    ……

    Written on a blood stained MacBookPro 2.8

  32. Matthew says:

    I will learn many languages in my journey to programming greatness, but the two that I will never ever touch are Objective-C and any Basic Dialect. They are the worst non assembly languages around. But I do like the idea about getting a 4 year CS degree first.

  33. garage boy says:

    objective-c is a motherf*er! i hate ALL people that have an iphone or itunes or ipad or ipod or macbook just because of a stupid logo.

  34. Paulis Svilans says:

    Hey!

    I found this article, and it would really be awesome to use haxe for iPhone development!
    Does this change anything? http://www.itbusinessedge.com/cm/blogs/bentley/apple-relaxes-iphone-developer-agreement-releases-review-guide/?cs=43247

    If Flash CS5 is now allowed to export to iPhone, and so is Unity, I think that using haxe is now legal again?

    P.

  35. Huge says:

    Yep, we are good to go again.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>