April 02, 2010, 8:00 AM — Software is some pretty amazing stuff. Its very name tells you that it is flexible, changeable, and that it can be molded into all sorts of shapes and sizes. Everything electronic that exists today -- from computers to iPods, electronic ignition systems to jet airliners -- are told what to do by software. Every electronic device is essentially a blank slate that awaits someone to write software for it to tell it what to do. The iPhone has this really cool interface that has changed how mobile devices are used -- but, the really cool interface is not hardware, it's software. Apple could just as easily have made the iPhone act like any other.
With this flexibility comes a lot of work, though. There is a big difference between real life and the world inside software. If you have a basketball and drop it onto a hard floor in real life, the ball will bounce in a very predictable way. The ball is subject to the laws of physics, and is always subject to the laws of physics, so that you can drop the ball one hundred times, and it will always bounce in the same way. The software world is different. If you create a basketball in the software world, you have to create the entire "universe" in which that ball exists. There are no rules, really, to what that universe can look like. If you want to make it realistic, you make it look like a regular gym. But, since there are no rules, the programmer could make the universe be like Mars. Or even just like Earth, only basketballs bounce three times higher than anything else.
In the real world, when you bounce a ball, the ball will always, always bounce in a predictable manner. The ball will never just show up one hundred feet in the air all of a sudden. It will always just bounce. This is not true in Software. There is nothing that prevents a programmer from having a ball bounce along normally, and then all of a sudden have it appear one hundred feet in the sky.
When the movie Spider Man was created, the makers created a very realistic duplicate of New York for the movie. They photographed blocks and blocks, ensuring that buildings that exist in real life were also in the movie version of New York. There was a problem, however. In order for Peter Parker to actually be able to swing from building to building using his wrist-webbing, they had to push the buildings together so that Peter wouldn't smack into the ground when he swung across the street. It looks real, but it's not. You can do this in software, but not in real life.