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. Nucking Futz says:

    Since Steve said to get rid of all the other intermediary platforms, that means that he thinks everyone should go back to ASM.

    I wish, the quality and security of programs would be much better, and people would actually understand the hardware they are programming for.

  2. ben says:

    your crack about delegates would hold more cache if Apple hadn’t finally implemented Blocks in iPhone OS 4.0.

    otherwise, yeah, spot on.

  3. Kiran says:

    Sarcasm or for real – I am not sure but Apple shouldn’t have done what they did with 3.3.1 clause. They sit tight till they hit a good number of apps and now they want to start cleaning the so called ‘mess’ thereby trashing all the hundreds of thousands of dollars invested in the other platforms/frameworks.

    I love Apple for their strict definition of beauty and I hate to see them referred to as A$$le.

    I agree with dumping flash btw. Flash is one of the main reasons all my memory is gulped when browsing many flash video intensive sites. Hope HTML5 is adopted by everyone except for Adobe!

  4. Honestly guys! Like in all aspects of life a bit of patience will serve you well. Think of your laptop, in a year or two it is outdated a you buy a new one. Think of your iPhone, in a year or two it is outdated, then you buy another brand that you may program freely. Think of your car, perhaps not a designer’s dream but you are the driver, it takes you where YOU want.

  5. Sarcasm Monitor says:

    @Tony Polinelli : Judging by some of the comments here, it does not seem to be a complete myth :(

  6. amul says:

    Funny shit man.

    Artists write software… HA don’t make me addeventlistener!

  7. Pingback: Bleeding Edge Technology News – Curated as of 04.12.10

  8. Meme says:

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

    Overly facetious tone detected.
    Running sarcasm detector…
    Probability of sarcasm: 80%

    Investigating address…
    gamehaxe.com found

    Revised probability of sarcasm: 100%

    Engaging fun-o-meter… done.

  9. ashok pai says:

    brilliant! i just hope the readers have their sarcasm detector on ;)

  10. Cris says:

    > firstly banning stupid languages (used by those people who are not smart enough to learn c++)

    Are you serious? As a very experienced developer (who is “smart enough” to know C++, templating and all, and also “smart enough” to know “stupid” languages like Lua, python, ruby and LISP) all I can say to you is:

    Go back to that undergrad degree you are studying n00b and when you actually have a couple of decades of real life programming job experience, come back and comment then. Until then, STFU! You are ignorant.

  11. Bobby says:

    Maybe you should add a “sarcasm” disclaimer at the end. Seems some people don’t get it. Oh well …

  12. Ain Tohvri says:

    Nice take on this intriguingly popular topic. Too bad there are loads of articles like this one around as written by Apple fanboys with zero sarcasm or any criticism at all. I’ve actually referenced them (and received comments from them) in the post entitled Creatives should remind Apple they exist, a take from a standpoint of a creative chap.

  13. Flexy says:

    Unless you’re writing 1s and 0s I’m not going to take any of you seriously. In addition, I’m not talking to anyone who doesn’t address me in ancient Greek… After all, it’s the basis upon which the dirty modern languages we speak today are based.

  14. RedRum says:

    hmm… maybe you have thought that some creative people do not have the desire nor the time to learn C++??

    Maybe you have considered that consumers do not really care on what language apps are written, they just want good ups?

    I think you, as programmer, are trying to get some jobs for yourself and your C++ literate buddies… If someone with a good ideas want to implement it, but is limited but only using C++, then he needs to hire a programmer…

  15. anon says:

    I dont know whats funnier, the article or the people not getting the sarcasm.

  16. Peter Briers says:

    Incredible how many people don’t see it’s IRONY.

  17. Gbk says:

    It’s funny how the _blatant sarcasm_ is missed even though this is a haxe blog. I have never heard of haXe before reading this but even I figured it out.

  18. RNR says:

    I just use Notepad for all my 3d models and textures. The last 20 years of 3d apps just produce crap!

    My models are so much more detailed, textures vibrant and the animations are just f’in awesome!

    It’s the Future!

  19. Jordan says:

    my understanding is that this is only Application related. To my knowledge, at least for web pages (so not for applications), Apple has signed an agreement with Microsoft that will allow Silverlight to be converted to a QuikTime MPEG-2 format via an HTML 5 video tag. Can anyone confirm this is true?

    I’m learning objective C but it’s a business requirement that I use my existing .NET skills and Silverlight 4 knowledge to build Business Intelligence dashboards – I think Apple’s decision was partially a block on Silverlight 4 becoming an integrated component (today is the official release date)

    Essentially, although browser capabilities may be extended, they are really alienating a group of talented developers (not to infer myself – I am still in the learning stages) – but Microsoft has a larger market share than Apple does of the Mobile PC market. Since I’m developing BI apps, I’m more likely to benefit from working with Silverlight and Microsoft, but I think this is nonsense. I’m a big supporter of open source, but I guess it will be interesting to see how well Mac does when Novell, Linux, Microsoft and maybe Adobe and several others join forces as a reaction to Apple’s new terms and conditions.

  20. david says:

    i cannot believe anyone would read this and not realise it is sarcastic!

  21. pollux says:

    Real programmers progam with 0 and 1 not in assembly and not in high level language like C ;)

  22. Paul says:

    Excellent piece. Wish I could turn on everyone’s sarcasm detectors.

    But I want to know what those who are so up in arms about 3.3.1 are going to do.

    Will you stop writing iPhone apps? Will you tell clients who want apps, sorry no can do?

    No? You won’t?

    Well then save your outrage for something else.

  23. T says:

    Get your head out of your ass.

  24. Leonardo Boiko says:

    The comments here make me depressed at humankind.

  25. Tephlon says:

    I heartily support your modest proposal.

  26. Mistergino says:

    Very nice!!

    but didn like the anachronism with the “reich” (3)

  27. James says:

    LOL. Only poor programmers think this move is bad. Thanks for outing yourself as a poor programmer. Why don’t you switch to “android” and spend the next 4 years working around bugs and trying to figure out why everything crashes randomly and why Google is stealing all your users information.

    God Bless Apple!

  28. Sometimes, I wonder what Apple is up to. Pissing off your own developers looks stupid to me. And you’re right about letting kids to be subversive or, else, how will innovation happen!?!

  29. Yuvi says:

    /me wonders how many of the comments here were sarcastic.

  30. Karell says:

    I completely agree, let me also add to the blog post that Haskell and Prolog are not real languages. And only a “real programmer” would be able to code up an airline maintenance planning scheduling application and it should be done in C. After all, why listen to University professors – they can’t get a job in the real world which is why they teach. Why learn from their discoveries? Those discoveries are made in labs, when was something discovered in a lab ever usefull?!?

    Why write 3 lines of code in a high-level language in 3 minutes when the way a real programmer would do it is by writing hundreds of thousands of lines of code over several months to demonstrate that simplicity can indeed be overcomplexified – AGAIN.

    I completely agree with the sarcasm of the post, it is well deserved.

  31. cookiesYEAH says:

    pff. GROW UP!

  32. cookiesYEAH says:

    QUOTE: observer.
    This is quite simply the most pathetic blog i’ve ever read. That’s not the way it works… at all. I think you are some inexperienced fresh grad who’s never worked on a big project and who’s constantly farting about some 2 liner cryptic code written (only possible in highly unorthogonal and ugly languages like c++). If you really hate _high_ level languages then why don’t you try assemblers? Infact oh-so-smart kid like you should be writing directly to machine code?
    Making a correspondence between foreign languages and _foreigners_ doesn’t make up a good argument. You’r inducing racism this way. Why? Are you running short of CS-native analogies? You are such a fanboy and you don’t even understand what does section 3.3.1 imply.
    Please do this world a favor and keep yourself away from blogging until you grow up a bit and gain some maturity.

    Completely agree.
    Especially hate the racism part, never seen a blog post as ignorant as this one. You’re a joke.

  33. imperil says:

    The majority of flash “programmers” are just script kiddies that copy and paste. Yes there are some actual good flash programmers and those are the ones who have had no problems porting their flash games to objective-C or C++ … it’s the ones that shouldn’t be developing in the first place that can’t do it.

  34. Good one, Hugh!

    You mention natural selection and I think that will play a big part in the iPhones demise (and the iPad by relation). Android machines will rule out, if not the [Enter next big thing here].

    Lee

  35. Pingback: Living Cosmos » Blog Archive » Apple, the Software Nazis

  36. Professor Opinion says:

    The number of idiots on here who don’t recognize the sarcasm is amazing, because it’s practically exploding in a mushroom cloud of sarcasm.

  37. WTF says:

    WTF “But like all foreigners (who are responsible for all the terrorism in the world)”

  38. flexer says:

    haha — great post. Yes the almighty Apple demands the highest of standards. Except when it comes to their phone carrier partner.

  39. Pingback: Liudas Sodonis - rašliavos · links – 002

  40. John says:

    Fantastic article!

    Even better are those people that don’t understand the sarcasm. And the usual Apple fanboy trolls. We don’t feed them!

  41. gronour says:

    Geeez some people need to learn how to read. How can someone read this whole post and still not see the obvious sarcasm ? This is a good post, and he holds a valid point. I personnaly dont perceive the ‘poster’ has a fan boy of either Adobe nor Apple. Wise up a little.

  42. tonto says:

    Sent to a camp — to concentrate — lol!

  43. It’s amazing how many readers of this post thought it was serious!

    You’re amazing and proves a lot about very naive developers! If they don’t understand your post, think of what their code looks like!

  44. Nicolas says:

    Even more scary, you can actually omit braces in lambda functions in haXe !

    addEventListener(KeyboardEvent.KEY_DOWN, function(event) trace(event));

    Now I finaly understand why Apple want to avoid this kind of mess at all cost ;)

  45. will says:

    Kind of sad how some people are missing the obvious satire in this post.

  46. Steven H. Jobs says:

    Portability is listed as a SOFTWARE QUALITY.

    I’m sorry but STEVE JOBS is not a SOFTWARE ENGINEER and he’s not right about SOFTWARE QUALITY.

    PORTABILITY is a quality.

    Just like FREEDOM.

  47. George says:

    Totally agree with you in many respects, I’ve not yet tried out Haxe – iPhone compilation but it seems this change of license shouldn’t be a big issue? Surely if the code is converted and Xcode compiles it then it what difference does it make if you’d hand written it or not?

    Has anyone tested it out who has access to the 4.0SDK beta? I have access although I’m waiting on Apple to bring out the new MBP so I can be done with my Hackintosh and finally run 10.6 =].

    From my (perhaps uneducated) perspective I’d say this is only an issue for products like Flash CS5 and unity which do their compiling themselves – something that Apple claims will hinder future feature development because other companies may choose to not take up the new features in their compilers. This seems some what a feeble excuse since if they were to release a new OS with features that did require such a significant change in software that other companies would have to rewrite their compilers it would mean that the phone would loose backward compatibility.

    Perhaps with the release of CS5 we will see more developers going underground and creating apps for jailbreaks?

    ^^ ASM, It’s the future! – with a few days to myself and a dark room I’ll be able to knock together a kick ass Hello World app!

  48. Adam Bloom says:

    In all seriousness, I would sincerely recommend a ban on app development for ANY platform by anyone who did not catch the sarcasm.

  49. Genius article! The only thing more hilarious than this article are the commenters flaming you because they missed the overtly obvious sarcasm. Such a funny read. Thanks!!

  50. Me says:

    You are retarded.

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>