There usually is a gap between hardware and software. Especially between hardware computational power provided by chips, boards, and buses, and software computational power provided by OS, plug-ins, environments. Focusing on the gap between OS and hardware, the industry is pretty much in an awful situation.
On the OS side, providers are trying their best to make difference between different platforms unnoticeable. Like what Apple did for iPhone, moving Mac OS X platform on to daily smart phones, Microsoft is moving Win 7 to windows phone 7 as well. This is probably what most developers would like to see for hand held as all sorts of APIs, technologies used in daily creation of modern software may be ported to those devices to provide sometimes a better user experience.
On the other hand, hardware for desktop or laptop has changed dramatically but hand held stays the same.
Moving from one core CPU to multi-core system we have now creating a gap of which hardware is leading. Most our daily softwares are designed for single core system. Only a handful of few utilizes part of the multi-core capacity. As parallel computation is no longer for GPUs, servers and scientific computation only, it has been widely noticed. Universities start to make it available for undergraduates while it is still a graduate study topic. Differing from distributed system, professors tend to focus on parallel techniques on a single system. We have recognized the fact that software is behind hardware for these environments and it is necessary to seize the gap asap.
Looking at hand held devices, among which smart phones are like a relic, hardware has not changed much. Motorola put 1GHz CPU on top of the spec list for their new phone while this was the threshold for PCs in Pentium III era. Same for memory. A while after PCs proceed to GB, smart phones finally catch up and got GB size on board memory. Although most of the memory are actually used for storage, it is still a great progress. When this is coming true, PCs are at TB era already. Hand held devices are trying to keep their paces and catch up. This means the gap is reversed comparing to desktops and laptops. On hand held devices, it is software which is ahead of hardware development.
This awkward situation make the OS providers’ job even harder and more important. While making the porting for modern technology on PCs available for hand held systems, it is even more important to create an OS platform so the hardware problem is left outside of the developers’ scope of concern. On the mean time, new techniques are required to make both improvements possible for a smaller memory, smaller storage and a slower processing unit.
The combination of parallel computation and functional programming may have provided a solution. As most work are done at by compilers and immutable nature of variables, it is possible that this combination may provide a stable improvement for hand held systems to catch up. Of course, we still need a larger storage and a low heat multi-core CPU system for these devices.