It seems like a dependency graph should be able to do this. Function pointers might make it more difficult but unless they are mathematically calculated, it should still be possible.
A long-time iOS user, I decided that it was time to try out an Android device.
Apple recently released their new OS update on everything but the original iPad. I have loved my iPad, but with every update it has become more and more irritating to use because apps crash all the time. I believe the cause is that there is too little memory in it. The OS has a watchdog that kills programs that use too much memory, or too much memory too rapidly. It kills off Safari (the built-in web browser) a lot. While I'm in the middle of reading something. As they've upgraded the OS, it has been happening more and more. And now they've decided that it's the end of the line for iPad 1.
It's a huge bummer because it's still great device. I'd still be using it constantly if it didn't crash all the time. It's a great example of why it should be made straightforward for consumers to load an alternative OS on their devices. This great piece of hardware is effectively dead because its built-in software is too bloated to run on it.
I didn't expect to rant, but there you go.
The new hotness is the Google Nexus 7, a 7" (diag) tablet running the latest Android (Jellybean). It's basically the same as a Kindle Fire without any special Amazon stuff on it. Though made by Asus, it's administered by Google so there are no extra OS skins, special apps, or other stink that manufacturers feel the need to cram on their computers.
In short, I think it's great. It's the first non-Apple touch device I've used that feels as tight and responsive as the iPad/iPhone. The UI is different from the iOS UI, and in many ways I think it's better.
I love, for example, the cross-app back button. It works like the back button in a browser, except that it'll go to previously used applications. An example would be that you're in Twitter and click a link. It opens the link in Chrome. When you're done reading, you press the back button and it pops back to Twitter right where you left off. It's pretty slick...
Except when it doesn't work as expected. It's clearly up to the app writer to make sure it works consistently, and it's clear that not all app developers agree on what consistent means. This is a general problem with Android. They aren't as clear or as stringent with UI conventions as iOS. So there's quite a bit of variability in behavior.
The high DPI screen, of course, is awesome. Please, please, please come to my desktop monitor Mr. Resolution.
I use a lot of Google services already so all the built-in apps work great for me. On the whole, they aren't as polished as Apple's. But they update their apps fairly often, so that might not be true for very long. (Oh, and they automatically update apps (though this can be shut off) which is double-plus awesome. Why oh why doesn't iOS do so?)
On to some bad stuff. It has a single, rather crappy, front-facing camera. I guess the idea is to use it for video conferencing. It really needs a rear camera.
Weak and shifting Android style standards means that different programs don't look consistent or act the same way. For example, where does the options button go? Are buttons flat-shaded or drawn with a gradient? Should hitting the top left of the app go "home" or go "back"?
Every possible color, baseline, size, and style is used for the icons on the desktop. And this is just the Google icons! They really need to lead the way with a bunch of classy icons. iOS approaches this problem by boxing all icons, which makes the whole look feel unified even if the icons are all over the place.
I really, really miss being able to touch the top edge of the screen to scroll to the top of a document, such as a web page. I am shocked to find how much I use it on iOS. I haven't found an equivalent on Android yet, so I fear that there is none.
I have yet to find a good general use for widgets. Audio controls, perhaps. I can imagine a daily agenda being useful (if I had a daily agenda). Other than that, the widgets all seem universally pointless.
Finally, I have found that I miss the larger 10 inch screen of the iPad. That's a personal preference, not a knock on the device. I'd say 90% of the time I spend with the device is web-oriented and the real estate makes it more readable and navigable.
All in all, though, I love it. I am seriously considering an Android phone for my next phone. I would miss only two things from the iPhone: Runmeter and Reeder, neither of which have Android versions. I'd live without Reeder, but I've grown quite used to Runmeter. There are other GPS running apps out there, though, and Runmeter does let you export your data. Runmeter just *works right*, though.