Osman Ahmed, Facebook asked:
Do we really need faster computing power, or are our programming methods just inefficient? What do we need to do to make sure we're programming our computers in the most efficient way possible?
We put this question to Professor Andy Hopper and Mike Muller...
Andy - There is a tension on the one hand by having more sophisticated programming languages and therefore programs using them. It is easier to write some kinds of software. It is possibly easier to address large problems. But on the other hand, that introduces inefficiency, sometimes very substantial inefficiency.
So, the challenge is to provide programming environments and programming languages which, on the one hand, provide the high level abstractions that make it easier to program and not make huge mistakes, so to speak, but, on the other hand, have a more direct connection to the processor itself and are more efficient in the use of resources, and in particular have energy proportional computing as their underpinning requirement.
Chris - Mike, did you want to point out anything about the processor manufacturer’s perspective on this in terms of how you design your chips around making it easier for people to write software that caters to that sort of thing?
Mike - Well we certainly try to address the new languages that are coming that make it more efficient. I think, to follow on, the example in servers is that the best way to save power in servers is perhaps to do half as much work, and that's a programming challenge where you could find those kinds of savings. If you type something like "Naked Scientists" into your favourite search engine...
Chris - Better still, Mike, you can now type "Mike Muller Naked" into your favourite search engine and...
Mike - Yeah, thank you for that. It’ll come back and say “so many results found in so many seconds.” What they're starting to do is, with popular searches, to look at the question: What happens if I just search half as hard? Did it actually change how many results people clicked on? So, you actually dynamically change how much searching you're doing because, again, you may be over-searching and providing results that are better than you need.