If there is one person who should have an idea of where computers are going it is Andrew Herbert. As Managing Director of Microsoft Research he gets to spend a lot of time thinking about the future of this business. I was very pleased that I woke up from my impromptu nap just in time to go off and hear his talk to Imagine Cup students where he gave a brief exposition of the way he thinks things are headed.
Very interesting. He made the very good point that even though computer use has changed massively since he started in the field, with personal computers now commonplace, and everyone carrying around huge amounts of processing power in their phones, cameras and laptop pcs, the processors inside these devices work in fundamentally the same way as the first ever computer. The rise of increasingly clever and friendly systems has been on the back of the continuous improvement in processing power that has made more advanced software possible.
The bad news is that the way we build solutions in the future is going to have to change, for two reasons.
Firstly we are running out of scope to improve the speed of computers. The processors themselves, and the memory they use, cannot be made to work faster in the future. Instead we are going to have to build systems which get performance by providing extra throughput from multiple processors, rather than a single chip that goes more quickly.
Secondly it is becoming increasingly hard to create and deploy software with the level of complexity that is expected today. Many large developments end up being abandoned just because we cannot produce something which solves the problem, or can be made reliable enough to be useful.
All this points to massive change in the way that computers will be programmed in the future, with a need to mathematically prove that crucial software always works, and new programming languages being created to allow code to make better use of the new arrangements of hardware that will become commonplace.
Programmers of the future will have to use different ways to express their solutions, and develop new techniques of building, documenting and proving the correctness of what they write. The model of computer use itself is also changing, with distributed systems being used to access large centralised services via the network, leading to even more change.
The great news is that nobody in the room seemed particularly scared by these prospects. They didn't seem to regard them as things to worry about, but as a whole new set of challenges and opportunities to make their mark and do great things, which is just as it should be.
If you are looking for a field where what you do can have the greatest impact on the largest number of people and how they live their daily lives, I think you will be hard pushed to find one more interesting than computing just now.