ENIAC |
Evolution occurs when the traits of a genetic population change over successive generations, generally a very long period of time relative to the life of an individual in the species. Changes are introduced through mutation and then inherited through reproduction. Natural selection chooses traits that aid the survivability and reproduction of the species.
Are changes in the computing world a result of evolution?
At first glance, we observe some of the qualities of evolution in both hardware software. Moore's Law describes a long-term trend in computing that the number of transistors that can be placed on a computer chip doubles about every two years.
The consequence of this trend is that the speed, capacity, size, or resolution of our electronic devices doubles or halves every two years. We speak of a new "generation" of processors, with better models succeeding the older ones. However, this is pretty clearly not an example of evolution, but of innovation -- electrical engineers work very hard to overcome the limitations of technology and provide improvements with each new version of a processor.
The comparison gets a little fuzzier with software. Consider the open-source SourceForge web site. This is a place where people can collaborate to build new software, with free hosting for their project. There are currently 240,000 projects on SourceForge, such as Audacity and BitTorrent, and 2.6 million registered users. If you glance through a page, such as the one for the Communications category, sorted by the number of downloads, you'll see that there is some element of survival of the fittest -- the best programs get downloaded more, some reaching a million times per week. One project on this list, PortableApps.com, is even a mutation of sorts -- it creates a system that allows you to run your favorite applications off a USB drive that you can take with you. (A great way to use Skype on a library computer, perhaps?) These programs even have successive generations -- Skype Portable is now on version
5.0.
The analogy is somewhat strained, however. Mutations in computer programs are not random, but are the result of design, and traits can be changed very rapidly. Competing programs do not breed with each other to produce offspring, and winners are not chosen by how well they survive but by a myriad of factors -- popularity, the willingness of developers to write code for the project, and sometimes even commercial funding.
While the open source world certainly has a great deal of competition, innovation rather than evolution is the driving force for change. Economic models are perhaps more useful for understanding trends in computing that biology.