History of computer science


The history of computer science began long before the modern discipline of computer science that emerged in the 20th century, and hinted at in the centuries prior. The progression, from mechanical inventions and mathematical theories towards the modern computer concepts and machines, formed a major academic field and the basis of a massive worldwide industry.[1]

The earliest known tool for use in computation was the abacus, developed in period 2700–2300 BCE in Sumer . The Sumerians' abacus consisted of a table of successive columns which delimited the successive orders of magnitude of their sexagesimal number system.[2] Its original style of usage was by lines drawn in sand with pebbles . Abaci of a more modern design are still used as calculation tools today.[3]

The Antikythera mechanism is believed to be the earliest known mechanical analog computer.[4] It was designed to calculate astronomical positions. It was discovered in 1901 in the Antikythera wreck off the Greek island of Antikythera, between Kythera and Crete, and has been dated to c. 100 BCE. Technological artifacts of similar complexity did not reappear until the 14th century, when mechanical astronomical clocks appeared in Europe.[5]

When John Napier discovered logarithms for computational purposes in the early 17th century, there followed a period of considerable progress by inventors and scientists in making calculating tools. In 1623 Wilhelm Schickard designed a calculating machine, but abandoned the project, when the prototype he had started building was destroyed by a fire in 1624 . Around 1640, Blaise Pascal, a leading French mathematician, constructed a mechanical adding device based on a design described by Greek mathematician Hero of Alexandria.[6] Then in 1672 Gottfried Wilhelm Leibnitz invented the Stepped Reckoner which he completed in 1694.[7]

In 1837 Charles Babbage first described his Analytical Engine which is accepted as the first design for a modern computer. The analytical engine had expandable memory, an arithmetic unit, and logic processing capabilities able to interpret a programming language with loops and conditional branching. Although never built, the design has been studied extensively and is understood to be Turing equivalent. The analytical engine would have had a memory capacity of less than 1 kilobyte of memory and a clock speed of less than 10 Hertz .

Considerable advancement in mathematics and electronics theory was required before the first modern computers could be designed .

Binary logic

In 1703, Gottfried Wilhelm Leibnitz developed logic in a formal, mathematical sense with his writings on the binary numeral system. In his system, the ones and zeros also represent true and false values or on and off states. But it took more than a century before George Boole published his Boolean algebra in 1854 with a complete system that allowed computational processes to be mathematically modeled .[8]

By this time, the first mechanical devices driven by a binary pattern had been invented. The industrial revolution had driven forward the mechanization of many tasks, and this included weaving. Punched cards controlled Joseph Marie Jacquard's loom in 1801, where a hole punched in the card indicated a binary one and an unpunched spot indicated a binary zero. Jacquard's loom was far from being a computer, but it did illustrate that machines could be driven by binary systems .[8]

Birth of computer

Before the 1920s, computers (sometimes computors) were human clerks that performed computations. They were usually under the lead of a physicist. Many thousands of computers were employed in commerce, government, and research establishments. Most of these computers were women. Some performed astronomical calculations for calendars, others ballistic tables for the military.

After the 1920s, the expression computing machine referred to any machine that performed the work of a human computer, especially those in accordance with effective methods of the Church-Turing thesis. The thesis states that a mathematical method is effective if it could be set out as a list of instructions able to be followed by a human clerk with paper and pencil, for as long as necessary, and without ingenuity or insight .

Machines that computed with continuous values became known as the analog kind. They used machinery that represented continuous numeric quantities, like the angle of a shaft rotation or difference in electrical potential .

Digital machinery, in contrast to analog, were able to render a state of a numeric value and store each individual digit. Digital machinery used difference engines or relays before the invention of faster memory devices .

The phrase computing machine gradually gave away, after the late 1940s, to just computer as the onset of electronic digital machinery became common. These computers were able to perform the calculations that were performed by the previous human clerks .

Since the values stored by digital machines were not bound to physical properties like analog devices, a logical computer, based on digital equipment, was able to do anything that could be described "purely mechanical." The theoretical Turing Machine, created by Alan Turing, is a hypothetical device theorized in order to study the properties of such hardware .

Emergence of a discipline

Charles Babbage and Ada Lovelace

Charles Babbage is often regarded as one of the first pioneers of computing. Beginning in the 1810s, Babbage had a vision of mechanically computing numbers and tables. Putting this into reality, Babbage designed a calculator to compute numbers up to 8 decimal points long. Continuing with the success of this idea, Babbage worked to develop a machine that could compute numbers with up to 20 decimal places. By the 1830s, Babbage had devised a plan to develop a machine that could use punched cards to perform arithmetical operations. The machine would store numbers in memory units, and there would be a form of sequential control. This means that one operation would be carried out before another in such a way that the machine would produce an answer and not fail. This machine was to be known as the “Analytical Engine”, which was the first true representation of what is the modern computer.[9]

Augusta Ada Byron Lovelace

Ada Lovelace (Augusta Ada Byron) was a Victorian Era mathematician credited as being the first conceptual programmer and is regarded as a mathematical genius. Lovelace was born in 1815 to mathematician Annabella Milbanke and her father, poet Lord Byron. Her father and mother were separated shortly thereafter, from which point on Lovelace was given almost exclusive tutoring in mathematics. Lovelace excelled in mathematics. Her passion was strongly supported by her husband, the first Earl of Lovelace, whom she married in 1835.[10]

At age 17, Lovelace began working with Charles Babbage as an assistant while Babbage was working on his “Analytical Engine”, the first mechanical computer. She recognized its value at once, labeling it as a “thinking machine” [10]). During her work with Babbage, Ada Lovelace became the designer of the first computer algorithm, which had the ability to compute Bernoulli numbers. Moreover, Lovelace’s work with Babbage resulted in her prediction of future computers to not only perform mathematical calculations, but also manipulate symbols, mathematical or not.

In 1843, Lovelace translated Babbage’s lecture on the Analytical Engine from French to English. Not only did she translate this lecture, but she also added copious notes of her own. Her supplemental tables and charts to Babbage’s work made her the first conceptual programmer for the Engine. Later, she developed the computing concepts of “loop” and “subroutine,” even over a century before electronic computers came into existence.[10]

Described as “strong-willed, creative, and intelligent,” Lovelace was highly regarded by the intellectuals of her time such as Michael Faraday, Charles Wheatstone, and William Herschel during a time when women in the sciences were rare.[10] Her lasting influence is found in the US Department of Defense’s highly sophisticated programming language, named Ada, in honor of her “contributions and pioneering spirit”.[10]

Alan Turing and the Turing Machine

The mathematical foundations of modern computer science began to be laid by Kurt Gödel with his incompleteness theorem (1931). In this theorem, he showed that there were limits to what could be proved and disproved within a formal system. This led to work by Gödel and others to define and describe these formal systems, including concepts such as mu-recursive functions and lambda-definable functions .

1936 was a key year for computer science. Alan Turing and Alonzo Church independently, and also together, introduced the formalization of an algorithm, with limits on what can be computed, and a "purely mechanical" model for computing .

These topics are covered by what is now called the Church–Turing thesis, a hypothesis about the nature of mechanical calculation devices, such as electronic computers. The thesis claims that any calculation that is possible can be performed by an algorithm running on a computer, provided that sufficient time and storage space are available .

In 1937, Alan Turing introduced his idea of what are now referred to as Turing Machines, and, anticipating the modern stored program computer, described what became known as the Universal Turing machine. These Turing machines were designed to formally determine, mathematically, what can be computed, taking into account limitations on computing ability. If a Turing machine can complete the task, it is considered Turing computable.[11]

Turing machines are not physical objects, but mathematical ones. They show if and how any given algorithm can be computed. Turing machines are state machines, where a state represents a position in a graph. State machines use various states, or graph positions, to determine the outcome of the algorithm. To accomplish this, a theoretical one-dimensional tape is said to be divided into an infinite number of cells. Each cell contains a binary digit, 1 or 0. As the read/write head of the machine scans in the subsequent value in the cell, it uses this value to determine what state to transition to next. To accomplish this, the machine follows an input of rules, usually in the form of tables, that contain logic similar to: if the machine is in state A and a 0 is read in, the machine is going to go to the next state, say, state B. The rules that the machines must follow are considered the program. These Turing machines helped define the logic behind modern computer science. Memory in modern computers is represented by the infinite tape, and the bus of the machine is represented by the read/write head.[11]

Turing focused heavily on designing a machine that could determine what can be computed. Turing concluded that as long as a Turing machine exists that could compute a precise approximation of the number, that value was computable. This does include constants such as pi. Furthermore, functions can be computable when determining TRUE or FALSE for any given parameters. One example of this would be a function “IsEven”. If this function were passed a number, the computation would produce TRUE if the number were even and FALSE if the number were odd. Using these specifications, Turing machines can determine if a function is computable and terminate if said function is computable. Furthermore, Turing machines can interpret logic operators, such as "AND, OR, XOR, NOT, and IF-THEN-ELSE"[11] to determine if a function is computable.

Turing is so important to computer science that his name is also featured on the Turing Award and the Turing test. He contributed greatly to British code-breaking successes in the Second World War, and continued to design computers and software through the 1940s until his untimely death in 1954 .

At a symposium on large-scale digital machinery in Cambridge, Turing said, "We are trying to build a machine to do all kinds of different things simply by programming rather than by the addition of extra apparatus" .

In 1941, Konrad Zuse developed the world's first functional program-controlled computer, the Z3; in 1998, it was shown to be Turing-complete in principle.[12][13] Zuse was also noted for the S2 computing machine, considered the first process-controlled computer. He founded one of the earliest computer businesses in 1941, producing the Z4, which became the world's first commercial computer. In 1946, he designed the first high-level programming language, Plankalkül.[14] In 1969, Zuse suggested the concept of a computation-based universe in his book Rechnender Raum (Calculating Space) .

In 1948, the first practical computer that could run stored programs, based on the Turing machine model, had been built - the Manchester Baby .

In 1950, Britain's National Physical Laboratory completed Pilot ACE, a small scale programmable computer, based on Turing's philosophy .[15]

Shannon and information theory

Up to and during the 1930s, electrical engineers were able to build electronic circuits to solve mathematical and logic problems, but most did so in an ad hoc manner, lacking any theoretical rigor. This changed with Claude Elwood Shannon's publication of his 1937 master's thesis, A Symbolic Analysis of Relay and Switching Circuits. While taking an undergraduate philosophy class, Shannon had been exposed to Boole's work, and recognized that it could be used to arrange electromechanical relays (then used in telephone routing switches) to solve logic problems. This concept, of utilizing the properties of electrical switches to do logic, is the basic concept that underlies all electronic digital computers, and his thesis became the foundation of practical digital circuit design when it became widely known among the electrical engineering community during and after World War II .

Shannon went on to found the field of information theory with his 1948 paper titled A Mathematical Theory of Communication, which applied probability theory to the problem of how to best encode the information a sender wants to transmit. This work is one of the theoretical foundations for many areas of study, including data compression and cryptography .

Women in Computer Science during WWII

Although the contributions of specific women in the beginnings of computer science were not well documented, the field was pioneered in the majority by women.[10][16] When the field of computer science was in its beginning stages of formation, women were often stereotyped as being good candidates for programming. This was justified with the idea that “programming requires lots of patience, persistence, and a capacity for detail and those are traits that many girls have”,[10] so most of the early programmers of the 1940s were women. As the production of computers became larger, the male hierarchical business model was absorbed and the female programmers began being treated less and less well.[10]

An example of the underrepresentation of the substantial influence of women programmers can be found in the development of the Electronic Numerical Integrator and Computer (ENIAC), America’s first electronic computer. Although designed principally by J. Presper Eckert and John Motley Morehead, a team of six women selected from a group of 100 women shouldered the brunt of the computational work with little of the credit (Light 455).[10][17] ENIAC’s first programmers include Kathleen McNulty, Frances Bilas, Elizabeth Jean Jennings, Frances Elizabeth Snyder, Ruth Lichterman, an Marilyn Wescoff.[10] As Kathleen McNulty stated regarding ENIAC, “The girls were told that only men could get professional ratings”.[10] Thus, women were not allowed the opportunity for their works to be published, which is crucial for personal recognition and career advancement.[10] Even though the women continued to perform very innovative and high-level mathematical work that required a tremendous about of skill, they were being oppressed by the men they were working under. This legacy of women being oppressed in the computer science field continues today [18] in that “the omission of women from the history of computer science perpetuates misconceptions of women as uninterested or incapable in the field”,[10] even though this perception is quite misguided.

Wiener and cybernetics

From experiments with anti-aircraft systems that interpreted radar images to detect enemy planes, Norbert Wiener coined the term cybernetics from the Greek word for "steersman." He published "Cybernetics" in 1948, which influenced artificial intelligence. Wiener also compared computation, computing machinery, memory devices, and other cognitive similarities with his analysis of brain waves .

The first actual computer bug was a moth. It was stuck in between the relays on the Harvard Mark II. While the invention of the term 'bug' is often but erroneously attributed to Grace Hopper, a future rear admiral in the U.S. Navy, who supposedly logged the "bug" on September 9, 1945, most other accounts conflict at least with these details. According to these accounts, the actual date was September 9, 1947 when operators filed this 'incident' along with the insect and the notation "First actual case of bug being found" (see software bug for details) .

Grace Murray Hopper

Grace Murray Hopper, a brilliant programmer and avid educator, made vast contributions to the field of computer science during her time serving for the US Navy. She foresaw the importance of high-level programming languages in the future of computing, and made significant contributions in the technological and educational domains.[10]

In 1944, a brilliant young computer scientist named Grace Murray Hopper joined the US Navy after receiving her BA in mathematics and physics from Vassar College and doctorate in mathematics from Yale University. Hopper was introduced to computer science when she was assigned a position at Harvard to work on the world’s first large-scale digital computer, Mark I. With this project she was tasked with designing and implementing a method to use computer technology to calculate ships’ positions (King and Avi 14).[19][20] At this she became in her words, “the third programmer on the world’s first large-scale digital computer”.[10]

In the early 1950s Hopper joined the startup Eckert-Motley Corporation where Binac and UNIVAC I, the first commercial electronic computers, were being developed.[10] While there, Hopper designed a new programming language, COBOL, and used it to build the first program that interprets English code to a binary form that a computer can understand.[20]

Grace Hopper was held in the highest regard by many, as she was “admired and respected not only for her technological achievements but also for her energy, enthusiasm, and willingness to serve as a mentor”,[10] which set her even further apart from other computer scientists of her time. She foresaw many applications of computing technology, including artificial intelligence. On this, Hopper is quoted as saying, “It is the current aim to replace, as far as possible, the human brain by an electronic digital computer”.[10] She was “one of the most requested speakers in computing”,[10] and her qualtitative explanation of the concept of a nanosecond is one that has been used by technology professors time and time again. Hopper’s lasting legacy is found in a series of international conferences in her namesake that began in 1994 and serve as a tribute to women in computing.[10]

John von Neumann and the von Neumann architecture

In 1946, a model for computer architecture was introduced and became known as Von Neumann architecture. Since 1950, the von Neumann model provided uniformity in subsequent computer designs. The von Neumann architecture was considered innovative as it introduced an idea of allowing machine instructions and data to share memory space. The von Neumann model is composed of three major parts, the arithmetic logic unit (ALU), the memory, and the instruction processing unit (IPU). In von Neumann machine design, the IPU passes addresses to memory, and memory, in turn, is routed either back to the IPU if an instruction is being fetched or to the ALU if data is being fetched.[21]

Von Neumann’s machine design uses a RISC (Reduced instruction set computing) architecture, which means the instruction set uses a total of 21 instructions to perform all tasks. (This is in contrast to CISC, complex instruction set computing, instruction sets which have more instructions from which to choose.) With von Neumann architecture, main memory along with the accumulator (the register that holds the result of logical operations)[22] are the two memories that are addressed. Operations can be carried out as simple arithmetic (these are performed by the ALU and include addition, subtraction, multiplication and division), conditional branches (these are more commonly seen now as if statements or while loops. The branches serve as go to statements), and logical moves between the different components of the machine, i.e., a move from the accumulator to memory or vice versa. Von Neumann architecture accepts fractions and instructions as data types. Finally, as the von Neumann architecture is a simple one, its register management is also simple. The architecture uses a set of seven registers to manipulate and interpret fetched data and instructions. These registers include the "IR" (instruction register), "IBR" (instruction buffer register), "MQ" (multiplier quotient register), "MAR" (memory address register), and "MDR" (memory data register)."[21] The architecture also uses a program counter ("PC") to keep track of where in the program the machine is.[21]

See also

References

  1. History of Computer Science
  2. Ifrah 2001:11
  3. Bellos, Alex (2012-10-25). "Abacus adds up to number joy in Japan". The Guardian (London). Retrieved 2013-06-25.
  4. The Antikythera Mechanism Research Project, The Antikythera Mechanism Research Project. Retrieved 2007-07-01
  5. In search of lost time, Jo Marchant, Nature 444, #7119 (November 30, 2006), pp. 534–538, doi:10.1038/444534a PMID 17136067.
  6. History of Computing Science: The First Mechanical Calculator
  7. Kidwell, Peggy Aldritch; Williams, Michael R. (1992). The Calculating Machines: Their history and development (PDF). USA: Massachusetts Institute of Technology and Tomash Publishers., p.38-42, translated and edited from Martin, Ernst (1925). Die Rechenmaschinen und ihre Entwicklungsgeschichte. Germany: Pappenheim.
  8. 8.0 8.1 Tedre, Matti (2014). The Science of Computing: Shaping a Discipline. CRC Press.
  9. "Charles Babbage". Encyclopedia Britannica Online Academic Edition. Encyclopedia Britannica In. Retrieved 2013-02-20.
  10. 10.0 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.11 10.12 10.13 10.14 10.15 10.16 10.17 10.18 10.19 content
  11. 11.0 11.1 11.2 Barker-Plummer, David. [<http://plato.stanford.edu/archives/win2012/entries/turing-machine/>. "Turing Machines"]. The Stanford Encyclopedia of Philosophy. Retrieved 2013-02-20.
  12. Rojas, R. (1998). "How to make Zuse's Z3 a universal computer". IEEE Annals of the History of Computing 20 (3): 51–54. doi:10.1109/85.707574.
  13. Rojas, Raúl. "How to Make Zuse's Z3 a Universal Computer".
  14. Talk given by Horst Zuse to the Computer Conservation Society at the Science Museum (London) on 18 November 2010
  15. "BBC News - How Alan Turing's Pilot ACE changed computing". BBC News. May 15, 2010.
  16. Gurer, Denise (1995). "Pioneering Women in Computer Science". Communications of the ACM 38 (1): 175–183.
  17. Light, Jennifer (1999). "When Computers Were Women". Technology & Culture 40 (3): 455–483.
  18. McPherson, Tara. "Why are the Digital Humanities so White? or Thinking the Histories of Race and Computation". Debates in the Digital Humanities. The City University of New York. Retrieved 7 April 2015.
  19. King, Alyson; Hyman, Avi (1999). "Women's Studies and the Internet: A Future with a History". Resources for Feminist Research 27 (1/2): 13–23.
  20. 20.0 20.1 content
  21. 21.0 21.1 21.2 Cragon, Harvey G. (2000). Computer Architecture and Implementation. Cambridge: Cambridge University Press. pp. 1–13. ISBN 0521651689.
  22. "Accumlator" Def. 3. Oxford Dictionaries.
  23. Isaacson, Betsy (2012-12-10). "Ada Lovelace, World's First Computer Programmer, Celebrated With Google Doodle". The Huffington Post (http://www.huffingtonpost.com/2012/12/10/google-doodle-ada-lovelace_n_2270668.html). Retrieved 2013-02-20.

[1]

Sources

Further reading

External links

  1. Gurer, Denise (1995). "Pioneering Women in Computer Science". Communications of the ACM 38 (1): 175–183.