Not since dinosaurs frolicked unimpeded upon the earth has something so dominated life on this planet. No, not the Supreme Court. Software. Its everywhere. Software controls our economic transactions and the machinery of production. It supports every imaginable industry, service, and vocation. Software expedites design and delivery, payroll and procurement, travel and trade. Most communication more complex than a birthday card relies on software. It can be found in cars, cameras, kitchen appliances, and, of course, computers. Software draws pictures and maps our genes; it beats chess masters and unravels the mysteries of protein-folding. Software decides who gets audited. Hardly a day goes by that my life is not somehow touched by unseen lines of code. Software is so ubiquitous that I wouldnt be at all surprised to hear that Aborigines have taken to carrying Palm Pilots.
We live in an age of miracles. Who could have imagined: A slice of mineral no bigger than your finger nail, coated with some chemicals, crammed with a bunch of stuff you cant see, that makes good things happen. Its the kind of magic that would have gotten you burned in the Middle Ages.
You know software has arrived when it receives the highest accolade known to Western civilization. No, not the Nobel Prize, nor a Pulitzer, nor even a coveted Level 5 ranking so grudgingly dispensed by the Software Engineering Institute. Such pedestrian recognition pales in the presence of the shiny Oscar. Yes, Im talking Academy Awards. Last month, for the first time, software was honored with an Oscar. The code that made the Titanic stand on end, ancient Rome materialize behind the Gladiator, and reality morph in The Matrix received an Award of Merit.
Manipulation of images has gotten so sophisticated that some courts will no longer accept photographic evidence, because pictures are so easily forged and forgeries are almost impossible to distinguish. With the right software, Forrest Gump can stand with presidents, and Jack Kennedy can be digitized to say things he never really said. You may never be able to fully trust your eyes and ears again; but, whether its altering present reality or creating a virtual one, software is forever changing your experience of the world. Beyond softwares pervasive use, I am awed by its complexity and by what humans entrust it to do. The next time you board a Boeing 777 to take a transatlantic flight, consider that the crew is there primarily as a backup system to the software. Computers monitor takeoff, control navigation, adjust altitude, regulate speed, locate the target airport, and, if necessary, three independent autopilot computers can plot the approach and bring the plane in for a landing. During testing, Boeing developed flight profiles that required no
human involvement whatsoever. The pilot was on board merely to ensure nothing untoward occurred that would require manual intervention.
I suspect it will be some time before the average passenger willingly boards a pilotless airliner, but there are situations in which eliminating the need for a pilot makes exemplary sense. Combat, for one. Boeing developed a small, lightweight, pilotless jet fighter called the Unmanned Combat Air Vehicle (UCAV), which is controlled by software. Piloted from the ground by a mission-control console somewhat resembling a video game, the UCAV can be preprogrammed or managed interactively by a controller far from hostile anti-aircraft fire. The Air Force anticipates initially using the UCAV for highly hazardous missions such as low-level reconnaissance and suppression of enemy air defenses. This may mark the beginning of the end of the Top Gun style, joystick wielding combat pilot. Aviators will protest, but mothers will not curse the software that keeps their sons safe and on the ground.
Nowhere is the image of the daring aviator more manifest than in the space program. All of the early astronauts were test pilots, and having the right stuff became the stuff of legends. Not to diminish the heroism of space exploration, but whether it was Neil Armstrong taking the giant leap for mankind or six present-day astronauts taking the space shuttle out for a spin, nobody gets off the ground without software.
Ponder the complexity of getting the space shuttle to fly. What you essentially have is a 171,000-pound glider (thats the weight of the space shuttle Atlantis before its loaded with the equipment it will transport), strapped to a 4,000,000-pound exploding cigar. The whole affair is bolted to the ground, and four on-board computers continuously query thousands of sensors that monitor the status of an equal number of components. No single computer is entrusted with the fate of the mission; they poll one another 250 times a second to agree on a course of action. A fifth computer, running a unique version of the software, stands by to take over in the unlikely event the other four systems fail. If everything is functioning properly, software gives the order to light the main engines, and software permits the solid rocket boosters to ignite. In the blink of an eye, the boosters crank up over 6,000,000 pounds of thrust, and, at that precise instant, the software issues the command to blow the bolts, and an awesome investment in human life and engineering lifts off into space.
With the International Space Station now under construction and the shuttle ferrying equipment and people to and fro with little fanfare, few appreciate the complexity of plotting a successful rendezvous with an orbiting building project. From the earth, the space station is little more than a tiny cluster of assorted parts hurtling through the vastness of space at 17,000 miles per hour, no more than a dot of light traversing the night sky. Among thousands of other improbable achievements, it was software that directed the first space-docking, an event of such intricacy it was described as being equivalent to having one person throw a tennis ball over the roof of a house and having a person on the other side hit the tennis ball in mid-flight with a rock. The importance of stable software was dramatically illustrated on the Russian space station Mir, where an unreliable docking system caused a collision that severely damaged the space station.
Some people will find it ironic that something as complex as software piloting the space shuttle works perfectly every time, but Windows doesnt. Perhaps the wonder is that software works as well as it does. W.A. Hosier, a pioneer in computing, cautioned that the [software] designer should not be saddled with the distracting burden of keeping subordinates profitably occupied.... Quantity is no subsitutute for quality, it will only make
matters worse. But Hosier need not have worried; software has steadily grown to match hardware capacity, and quality has kept pace. Indeed, as humans layer complexity atop complexity and translate more and more of our fantasies and aspirations into code, it is miraculous that software is as reliable as it is.
The demands placed on software are so lofty that whether the context is medicine, transportation, managing the power grid, or space travel, software is increasingly expected to ensure human safety and survival. But even desktop applications are becoming so
complex that many people master only a handful of the available functions. In the future, peoples well-being may not depend so much on the ability to write software as on the ability to learn it.
In 1988, an Air France Airbus crashed while performing touch-and-go maneuvers at a Paris Air Show. The plane had advanced software that allowed it to land virtually unassisted. When the plane dipped low to the runway with its landing gear extended, the software interpreted these conditions as we are about to land and reduced power to the engines. The pilot didnt understand the software well enough to foresee the complication of doing a touch-and-go with the software engaged. When he pushed the throttle to take the plane back up, there was an eight-second delay before thrust was delivered to the engines. The Airbus plowed into the trees at the edge of the airfield, killing three people.
Likewise, astronauts working on the International Space Station have complained that their schedule-obsessed management has not provided the astronauts enough time to learn all the workarounds for the hundreds of bugs discovered in the mission software. Once aloft, software will control communications, the physical environment of the station, power generation and distribution, the stations altitude control, and hundreds of other systems. Among the errors discovered was the corruption of two adjacent bits, which would have opened an air valve and potentially drained the station of its oxygen supply.
Like poorly-tested commercial software rushed to the marketplace in order to beat competitors, NASA apparently established unrealistic freeze dates for modifying its space station software. Some people have argued for delays in launch schedules, believing the software offers a significant threat to orbiting astronauts because the astronauts have had insufficient time to learn and debug it.
But mistakes will happen, if for no other reason than because software is constructed in our image. As such, software is clever, functional, and ambitious but also prone to hubris and oversight. Software may function seemingly without error for a long time, then suddenly fail you without warning. Just ask Al Gore, who recently lost an election you may have heard about, in part due to the limitations of ballot-counting software.
From DOS to mapping the genome and cavorting in space, software has indeed come far in a very short period of time. Those of you who produce the anonymous lines of code that regulate so much of the world should be justifiably proudand careful; you wield an enormous power that is expanding exponentially. Perhaps more than anyone, you empower other pioneers to explore fields as fresh as tomorrows headlines and domains as frightening as last evenings nightmares. As people increase their reliance on your skill and imagination, two thoughts, contradictory yet complementary, vie for notice. The first is from Proverbs: Pride goeth before destruction, and an haughty spirit before a fall. The second is from Muhammad Ali: Humble people, Ive found, dont get very far.
LATEST COMMENTS
MC Press Online