Computer viruses have evolved from an annoyance to a national security threat. Recently the Department of Homeland Security told Americans to disable Java on our home computers (a thing that few of us knew how to do) because of flaws that left it vulnerable to viruses. And by most accounts, the US has used viral programs like Stuxnet and Flame in cyberwar against Iran.
Why do we call these programs viruses? Maneesh Agrawala is a computer scientist, MacArthur "genius" fellow, and an advisor to Studio 360's Science & Creativity series. "DNA is in some sense a program that describes how to manufacture proteins," he explains; a viruses consists of little other than DNA, programmed to hijack the host's cellular machinery to replicate itself. "A computer virus is a computer program that describes a sequence of operations that need to be performed." Both biological and computer viruses are defined by their ability to self-replicate.
Computer viruses were not always malicious. Agrawala explains that self-replicating code was theorized by John von Neumann, a mathematician and pioneer of computer science. Such programs were built by computer scientists in the 1980s and hackers soon got into the act. In 1988, a particularly aggressive virus was unleashed onto computer networks. Affected computers spent all their processing power replicating the code; nobody knew yet how to stop such a virus, and machines were freezing up all over the country.
Agrawala cautions that we shouldn't take this analogy between DNA and code too far. Viruses survive by evolution – they mutate faster than the host's responses to them (which is why we never stop getting the common cold). Computer code never mutates. But developers of viruses learn from their experiences to alter their programs. "It's more similar to intelligent design," explains Agrawala, "than to natural selection."