Prelude: Computing from Ancient Times to the Modern Era
The human need to compute probably originated in prehistory when humans began to accumulate physical possessions. It soon became desirable to keep track of how many specific possessions (e.g., cattle) were owned by a family or tribe. Once simple addition and subtraction became possible, a related need was to record the information so it could be kept for long time periods and could be shared with others. Early recording devices were pebbles or physical objects, but it was eventually found that these could be replaced with symbols.
As humans evolved and began to settle in communities, other calculating needs arose, such as measuring the dimensions of bricks or marking off fields. With leisure came curiosity and a need for more complex calculations of time, distance, and the positions of the stars.
Fairly soon, the labor involved with calculations was seen as burdensome and tedious, so mechanical devices that could speed up calculations (the abacus being among the first) were developed.
Tools for assisting with logical decisions were the last to be developed. The needs for rapid calculations, long-range data storage, and complex decision making were the critical factors that eventually came together to inspire the design of computers and software.
The Human Need to Compute
A book on the history of software engineering and computers should not just start abruptly at a specific date such as 1930. It is true that digital computers and the beginnings of software were first articulated between 1930 and 1939, but many prior inventions over thousands of years had set the stage.
From ancient times through today, there was a human need for various kinds of calculations. There has also been a human need to keep the results of those calculations in some kind of a permanent format.
Another human need that is harder to articulate is the need for logical analysis of alternative choices. An example of such a choice is whether to take a long flat road or a short hilly road when moving products to a marketplace. Another choice is what kind of crop is most suited to a particular piece of land.
More important alternatives are whether or not a community should go to war with another community. In today’s world, some choices have life and death importance, such as what is the best therapy to treat a serious medical condition like antibiotic-resistant tuberculosis.
Other choices have economic importance. The Republicans and Democrats are examples of totally opposite views of what choices are best for the U.S. economy.
For choices with diametrically opposing alternatives, it is not possible for both sides to be right, but it is easily possible for both sides to be wrong. (It is also possible that some other choice and neither of the alternatives is the best.)
From analysis of what passes for arguments between the Democrats and Republicans, both sides seem to be wrong and the end results will probably damage the U.S. economy, no matter which path is taken.
From the point of view of someone who works with computers and software on a daily basis, it would not be extremely difficult to create mathematical models of the comparative impacts on the economy of raising taxes (the Democratic goal), reducing spending (the Republican goal), or some combination of both.
But instead of rational discussions augmented by realistic financial models, both sides have merely poured out rhetoric with hardly any factual information or proof of either side’s argument. It is astonishing to listen to the speeches of Republicans and Democrats. They both rail against each other, but neither side presents anything that looks like solid data.
The same kinds of problems occur at state and municipal levels. For example, before the 2012 elections, the General Assembly of Rhode Island passed unwise legislation that doubled the number of voters per voting station, which effectively reduced the places available for citizens to vote by half.
The inevitable results of this foolish decision were huge lines of annoyed voters, waits of up to four hours to vote, and having to keep some voting stations open almost until midnight to accommodate the voters waiting in line.
This was not a very complicated issue. The numbers of voters passing through voting stations per hour have been known for years. But the Rhode Island Assembly failed to perform even rudimentary calculations about what halving the number of voting stations would do to voter wait times.
As a result, in the 2012 elections, many Rhode Island citizens who could not afford to wait four hours or more simply left without voting. They were disfranchised by the folly of a foolish law passed by an inept general assembly. This law by the Rhode Island Assembly was incompetent and should never have been passed without mathematical modeling of the results of reducing polling places on voting wait times.
The point of carping about governments passing unwise laws and issuing foolish regulations is because in today’s world, computers and software could easily provide impact assessments and perhaps even eliminate thoughts of passing such foolish laws and regulations.
The fact that humans have used mathematics, made logical choices, and kept records from prehistory through today brings up questions that are relevant to the history of software and computers:
- What kinds of calculations do we use?
- What kinds of information or data do we need to save?
- What are the best storage methods for long-range retention of information?
- What methods of analysis can help in making complicated choices or decisions?
- What are the best methods of communicating data and knowledge?
It is interesting to consider these five questions from ancient times through the modern era and see how computers and software gradually emerged to help in dealing with them.