First, let me say that I learned to program (1958) before there was anything called CS, OOP, compilers, interpreters, etc. (That's before Fortran, CoBOL, BASIC, and, yes, Flash).
Over the years I've made some effort to stay current, but programming is not my major activity... I do it for my own amazement, more than anything else.
I am not a programmer, but I know how to program (I've probably thrown away more [bad] code than a lot of you have written
Let's consider one aspect of the topic D'Jour:
A crucial element of multitasking is efficient use of RAM, whether RAM is dirty (needs to be saved and refreshed or refreshed only), and what resources the OS must expend to determine which memory is no longer needed. Also important is that RAM is organized in blocks (based on usage) that can be easily manipulated when necessary.
One thing that is apparent is that memory management in the iPhone OS is different than many other systems.
In iPhone OS XCode the programmer is responsible for acquiring memory when needed and releasing it when no longer needed.
Other languages and most interpreters remove this burden from the programmer. The "system" goes through a process called "'garbage collection" to detect memory that is no longer needed and release it to the system.
Garbage collection takes precious CPU cycles and seconds... and, likely, will result in poorer performance and poorer memory usage than a knowledgeable programmer performing manual memory management.
I haven't looked at Java or Flash for quite a while. But, AIR, they use garbage collection.
How does someone write an app that depends on system-supplied garbage collection and then deploy it on a system (iPhone OS) that doesn't provide this service?
Have Flash and Java been enhanced to support manual memory management?
Do apps written in other languages (than those supported by iPhone OS) get translated to:
1) use a kludgey, heavy-handed manual memory management?
2) get packaged with a run-time that provides garbage collection within the app?
3) use some other device to efficiently integrate with the iPhone OS multitasking (and memory management) capabilities.
It seems to me that the best way to assure the quality of the user experience is require that the providers of iPhone programs use the tools and procedures specified by the manufacturer...
Am I wrong?
Doesn't [even] Mr. GoodWrench require only GM authorized Parts and Procedures?