What is Software?
Computers have the potential to do wondrous things. But actually doing them? That needs software.
Software transforms general-purpose machines into useful tools, providing instructions that tell them what to do and how to do it. These instructions might be simple or complex, long or short, depending on the task.
Programmers write software in various computer “languages,” which use different ways to tell the computer what to do.
Impact
Modeling the World
To perform practical tasks, software must often create a model of the world in which it operates.
Engineering software might simulate road conditions to test car designs. Music encoding embraces a model of our auditory system to determine what tones to include or discard. Medical, financial, artistic software—all simulate aspects of our world.
Technology
How Is Software Made?
One of the first decisions software developers face is how to best to organize the workflow of a project.
The two most popular ways to make software are called Waterfall and Agile. The first uses a fixed series of steps and delivers the product only at the end. The second encourages delivery of an early version, which is then repeatedly improved.
Waterfall model
The Waterfall model, formalized in the 1970s, is a linear approach to software development. Each phase is finished before the next one begins, often by different people. It is good for many high-reliability and mission-critical projects, but the cost of fixing problems found in later stages is high.
Imagination...and Precision
Writing software demands creativity, the vision to imagine new computer uses or to conceive new approaches for old uses.
But computers are literalists. They’ll do exactly what the software says—not what the programmer meant to say. So writing software also demands extraordinary attention to detail. One tiny typo amid thousands of lines of code can trigger an avalanche of unintended consequences.
US Navy Photo
Page from Harvard Mark II logbook, September 9, 1947
In 1947 a young programmer named Grace Hopper discovered a moth trapped inside the Harvard Mark II computer. She recorded the error and taped the bug into the computer’s logbook, shown here. Software errors have been called “bugs” ever since.
History
Pictures Worth 1,000 Words?
All software uses written code…but we seldom see it. Instead, we often drag images or click pictures. Visual programming tools build on that familiar interface to make programming easier both for beginners and professionals.
With such tools, people create software by manipulating graphics that represent blocks of code, letting them focus on developing the program’s logic and functionality.
Image made by emulation.
LOGO programming on Apple II, ca. 1980
LOGO is one of the earliest children's programming languages, developed at BBN by Seymour Papert and others in 1967. It uses simple commands to draw shapes by moving a small “turtle” (see lower-left point of star). Schools used LOGO to introduce kids around the world to computing.
How Much Code Do You Have to Write?
Want to boil an egg? The recipe is brief. Want to prepare Peking duck? The instructions are longer.
Creating software is similar. For simple tasks, programmers might only have to write brief instructions. But complex operations may require them to write vast amounts of intricate code.
Compiled by the Computer History Museum.
Lines of code visualization (numbers are approximate)
This graphic shows the complexity of several popular real-world software applications. Although it’s only a rough measure, generally the more lines of code a program has, the more complex it is. Texting, for example, appears small but, like most of these applications, it relies on a massive software, hardware, and networking infrastructure to work.