Tuesday, January 15, 2008

How software can catch up with hardware, and why it's so far behind

Over the past few years, advances in hardware started to dramatically outpace software performance. The focus of chip makers like Intel and AMD moved toward making multi core processors, and software got left in the dust. Traditional serial computing just can't leverage more than one core. This is because with serial programming, only one instruction may execute at a time.
So what can software developers do to catch up? Use parallel computing. This way, tasks are split into discrete parts that can be solved concurrently. Each part is further broken down to a series of instructions, then instructions from each part execute simultaneously on different CPUs.

So what tools do programmers have to do this? In the Microsoft world, it's F#. It's not as hard as it sounds; Developers with a C# background should be able to leverage their skills and hit the ground running. For example, Dustin Campbell has only been using it for 6 months, and he's already blogging about how to code advanced features. Scott Hanselman even did a podcast with him about it.
Let's hope more developers start to pick up functional programming with as much passion.


  1. F# looks pretty cool - I'm looking forward to trying it myself.

  2. Yeah, Moore's law can continue for years, but if programmers can't keep up, it doesn't really help. In fact, if you look at software like Vista, programmers are acutally getting worse at writing high-performance code. I've heard of a tool that strips 1/2 of Vista away just so it can be run on "regular" machines.