There has been a lot of hate around Apple's change to section 3.3.1 over the past few days. The essence of the change is that apps for the iPhone/iPad must be developed in Objective-C, C, C++ or JavaScript. Looking at the change through a narrow lens it appears that Apple is boxing out Flash, .Net, Java, etc. developers. Understandably those developers complain about hindering creativity, monopolistic control, etc. John Gruber's reasoning is a sound reply to all the banter.
Let me add one more thought... Apple is NOT a hardware company. They're not a software company. They're an EXPERIENCE company (read "The Experience Economy"). Just like Disney people love their products because of how they make them FEEL. Using an iPhone, or an iPad is magical. Doing boring stuff like reading email, surfing the web, etc. has become fun again. Plus you get amazing stuff like "playing scrabble" with an iPhone as your tile rack (flick the tile off your iPhone and it appears on the board) or driving games played with the accelerometer, or games that use the GPS, and on and on. Apple builds hardware and writes software to make magic and provide an experience for their users and clearly it's working as the demand for their products is incredibly high (86million iPhone OS products sold?!?) To that end Apple should exert as much control over the platform as they can so that they can keep the experience magical. If whiny developers don't want to work within those constraints and can't be bothered to (re)write their application on the platform Apple is providing, I have no problem with that; they're probably not writing an application that's magical anyhow.