· Define new terms
· Explain the history of computer hardware in chronological order
· Identify significant developments in the history of software and programming languages
· Describe the primary parts of a personal computer
Man has been trying to develop machines to help with mathematical computations for hundreds of years. The earliest tools for calculation were as simple as using sticks or stones as counters. In China, these counting stones developed into the abacus that is still used today. From these hand-operated devices came mechanical devices that gave way to electro-mechanical devices that led to the electronic computers of today.
In the 1640s, Blaise Pascal, a French mathematician and religious philosopher, developed a mechanical device he called the Pascaline. Pascal was trying to help his father who was a tax collector. The principle he used in this early machine was used in for the next several hundred years.
Gottfried Leibniz, a German mathematician, expanded on Pascal’s invention. One big improvement was the addition of a crank that made repeating operations faster and easier.
In England an inventor and mathematician by the name of Charles Babbage started work in 1834 on a machine he called the Analytical Engine. His machine was never completed because the manufacturing technology of the day was not capable of the accuracy required. Had the machine been completed it would have used punched cards to enter information. Punch cards would become an important feature of computers that would later be created.
One of Babbage’s assistants was a brilliant young mathematician named Ada Augusta, Lady Lovelace. Lady Lovelace explained many of Babbage’s ideas to others. She also developed instructions for the Analytical Engine. For her contributions she is often considered the first computer programmer.
The United States Constitution requires that every person in the country be counted every ten years. By 1880, the population had grown so much that it took over seven years to tabulate the results of the count. There was much concern that by the time the 1890 census was tabulated it would be time to start the 1900 census. This was an obvious concern. Fortunately, someone had an idea that would help.
Herman Hollerith, and employee at the Census Bureau, was working through the 1880s on a machine that used punched cards. Cards similar to these were used to store the patterns used by weaving machines. Hollerith finished a machine that used these cards just in time for the 1890 census. Using this machine, the 1890 census had a simple count ready in only six weeks. More complete statistical information was ready in two and a half years.
Hollerith left the Census Bureau and started a company called the Tabulating Machine Company. This company, which sold his card machines, eventually grew into the International Business Machine company (IBM). IBM is still the largest computer company in the world.
In the 1940’s, World War II created a real need for fast calculations. The military was developing many large guns for ships and for land. Aiming these large guns required long and complicated mathematics to calculate aiming angles. The military had to consider a gun’s use of direction, distance, size of the ammunition and even wind direction and speed when calculating angles. There were no small, fast computers to do this, so these calculations were computed manually. From these calculations, the military created charts and tables that gunners could refer to quickly.
The word calculator meant a person who was doing mathematics by hand. Even with rooms of human calculators, charts were not being created fast enough. The government and a number of research universities began creating powerful calculators to do this work.
These early calculators and computers used instructions that were set-up by connecting wires to make connections. At that time, it took a lot of time to change a set of instructions because the wire connections had to be taken apart and reconnected in a new way. Today, programmers still refer to instructions or other information that is part of a program but that is hard to change, as “hard wired” into the program.
The early hard-wired computers were large and expensive. Computers were too expensive for all the people who wanted to own one. People knew that computers would be more available if different groups with different problems could share a big computer. Unfortunately these computers also took a lot of time to change and to work on new problems. Re-wiring was very costly and time consuming. Today, that same practice is called reprogramming. Computers were committed to specific tasks. When a computer was needed for a new project that computer was designed specifically for that new project.
A man by the name of John Von Neumann had a good idea. Computers had memory that was used to store information. Why not use that memory to store programs? Von Neumann’s theory was to house the computer instructions in memory rather than in the wiring. Being able to store instructions in memory would make it easier to make programming changes.
Von Neumann’s idea completely changed the way computers were used and opened the door to today’s general-purpose computers. General-purpose computers can handle many different tasks unlike other computers that could only do one task. Computer programming took a giant leap towards the way computers work today.
These first stored-program computers were given their instructions in machine language. Machine language is made up of binary numbers, ones and zeros. Each code is a different instruction to the computer or piece of information for the computer to use. Sometimes programmers write out machine language codes in octal (numbers in base 8) or hexadecimal (numbers in base 16). Computers can best understand binary (base 2) numbers. Either the octal or hexadecimal code will translate easily into the binary (base 2) numbers.
Programming in machine language can get confusing and it is easy to mix up numbers made up only of ones and zeros. The need to simplify machine language programming led to the next big improvement in programming computers. Machine language number codes were replaced with letter codes called mnemonics. Mnemonic codes are easier to remember than the binary codes they represent. These letter codes make up assembly language instructions. A program called an assembler converts the letter codes into machine language.
The following assembly language code (from a PDP-11 computer) is a loop that counts from zero to 10.
LOOP: MOV #0, R0
INC R0
CMP R0, #10
BNE LOOP
The mnemonic codes used in an assembly language generally sound like the instruction they represent. For example ADD for addition and MUL for multiplication. MOV is used to move or copy a value into a location. INC, the increment command, adds one to a number. Some are less clear, for example, CMP to compare two numbers or BNE for Branch or move to a different part of the program if the last two items compared were not equal.
Every type of computer has its own machine language and its own assembly language. Assembly languages may have very few, very simple instructions. The assembly language for large mainframe computers may have hundreds of instruction codes. Converting an assembly language program to run from one type of computer to another is often as complicated as writing it over completely.
As more and more computers came into regular use, two important needs developed. One was to simplify programming even more than assembly language. The second was the need to be able to convert programs to run on new computers that had different machine languages. This led to the invention of higher-level languages.
Higher-level languages are computer languages that are more like human or natural languages than assembly languages. A program called a compiler reads in source code, the codes the programmer writes. The compiler checks the source to make sure it follows the language rules, called syntax, and converts it to object code. Object code is converted into executable instructions that the computer can understand.
The first important higher-level language was FORTRAN. FORTRAN is short for FORmula TRANslator. A team of programmers at International Business Machines lead by John Backus invented FORTRAN in 1956. It was designed for mathematical and scientific programming. FORTRAN has been changed and improved over the years and is still used for various mathematical and scientific projects.
The following lines of FORTRAN code show a simple loop that writes the numbers 1 through 10 on the computer’s monitor.
DO 100 I=1, 10
WRITE (5,10) I
10 FORMAT (I2)
100 CONTINUE
A computer language that is good for scientific projects is not necessarily the type of language that will handle business transactions well. A programming language called FLOWMATIC was used for a while as a business-programming tool. FLOWMATIC had some limitations so a project to create a new business language was started. Commander Grace Murray Hopper of the US Navy was one of the primary leaders of that project.
This project resulted in a Common Business Oriented Language or COBOL in 1959. COBOL was rapidly adopted by businesses around the world. One problem, not unique to COBOL, was that each computer company made their own modifications to the language. This meant that programs designed for one computer company’s COBOL might not work on another company’s COBOL computer. This defeated some of the purpose behind higher-level languages.
Commander Hopper saw that this was a serious problem for the Navy and for the US government. She convinced the Navy to set up a test laboratory to test COBOL compilers. She and her team created a standard set of tests that all COBOL compilers had to pass before they could be sold to the US government. The US government was, and still is, the largest customer of computers in the world. No company could afford to lose the government’s business so they all worked hard to create compilers that met the new standard. This was the start of customers and the computer industry seeing the value of common standards.
Since then many other languages have been created. Some have been created as teaching languages. PASCAL, developed in 1971 by a Swiss computer scientist named Niklaus Wirth, was one teaching language that was also adopted by companies of business programming.
The C programming language was developed at Bell Laboratories in 1978 as part of the UNIX operating system project. C was originally used as both an operating system language and to control telephone-switching equipment.
The C++ language, an extension of the C language, was developed at Bell Laboratories in the 1980’s. C++ has become very popular in recent years for operating system creation and for developing complicated applications such as game programs.
Other higher level languages include LISP and OPS/5, used for artificial intelligence projects, CORAL, a British Department of Defense language, FOCAL and LOGO, teaching languages, PL/1 and DIBOL, business languages, and of course BASIC.
The C programming language was originally developed by Dennis Ritchie as a systems language for the development of the UNIX operating system. It has been closely tied to the UNIX system from its very beginning. Most versions of UNIX still come with a C compiler for creating programs.
In the 1980s a researcher at Bell Laboratories named Bjarne Stroustrup started extending the C language so that it could be used for object-oriented programming. Originally C++ code was converted to C programs before being compiled by a C compiler. Today many C++ compilers will also compile C programs but there is no longer a need to convert one language into the other.
C# was developed at Microsoft as part of the .NET (pronounced “dot net”) framework. It has been designed to take the C family of languages to the next step. It is more intrinsically object oriented then C++. It is designed to allow a programming to create components with properties, methods and events. Because it includes type safety, structured exception handling and garbage collection it eliminates many of the errors that were common to C++ programs.
There is a fourth generation of languages being developed today. These are software tools that accept natural language instructions. These languages are still being developed and have not come close to taking the place of third generation languages. Higher-level languages are being used to write this new generation of languages, just as assembly languages were used to write higher-level languages for the third generation.
Today’s computers come in various sizes and shapes. At the top end are the super computers and mainframe computers used by governments and large companies. Smaller then the mainframe are mid-range systems, formerly called mini-computers, that act as servers for small companies, parts of large companies or for Internet hosting. The personal computer, or PC, is the size computer that most people use on a daily basis. These computers are typically used by just one person and fit on or under a desk. The smallest computers are called microcomputers and are often built into other machinery. Microcomputers are built into cars, airplanes, and many other things to control specific activities.
These computers consist of several primary components: To computer, human interface devices, and storage devices.
The computer includes the Central Processor Unit or CPU and the principal electronics for the system. The CPU performs the calculations and decision making that makes a computer different from a simple calculator. The various components of the computer are attached to a primary board called a motherboard. The CPU is attached to a motherboard that supplies it with power and information from the rest of the system. The motherboard also holds other boards, called daughter boards, which serve other functions of the system including connections to modems, monitors, speakers, and mice.
There are actually several levels of computer memory. The fast memory that the CPU uses to hold its instructions and data is called main memory. It is also often referred to as the system’s RAM. RAM stands for Random Access Memory. The amount of main memory is what is usually referred to as the systems memory in advertisements.
The RAM on modern computers is stored on small thin computer boards called SIMMs or DIMMS. SIMM stands for single inline memory module. DIMM stands for Double Inline memory module. The difference is that DIMMs have memory chips on both sides while SIMMs only have memory chips on one side. These DIMMs and SIMMs hold a lot of fast memory in a very small location.
There is also a smaller, faster set of memory on a computer. This memory is called cache (pronounced cash) and is used by the CPU to hold the most important and most often used instructions and data. This memory is less commonly discussed but can make a big difference in system performance.
Cache and main memory are short-term memory. This means they only member things for a short time. The information in RAM and cache is forgotten when they lose power. Each time the computer is started this memory is refreshed or refilled so that the system will function.
The third type of memory is long-term memory. This memory does not lose its information when it loses power. Long-term memory is kept on storage devices such as hard drives, floppy disks, and CD-ROMs.
Modern computers use a variety of long-term storage devices. These devices include hard drives and several types of removable storage. Removable storage includes CD ROM drives, floppy drives and larger removable disks such as Zip drives and Super drives.
Most of these devices are magnetic storage devices. These media use electricity to set the magnetic state of small parts of the disk to a one or a zero. As technology has improved the ones and zeros have been moved closer together. This has allowed disks to become smaller and faster.
Hard drives are permanently mounted disk drives that make up the primary long-term storage for most computers. These drives are sealed in airtight containers to protect them from dust and other things that could interfere with their operation.
Floppy drives and Zip drives are removable magnetic media. These devices are often used to transfer information from one computer to another computer. They are also used to make copies of data for save keeping.
Compact Disks – Read Only Memory, called CD-ROMs, use optical recording techniques to store information. These disks are read using lasers and are very similar to the audio CDs that are used for music. Many computer CD-ROM drives can also play audio CDs. CD-ROMs were originally very expensive but in recent years they have become inexpensive enough for many home computers. CD-ROMs are often used to back up data that is important and that does not change frequently.
All the computer power and data storage in the world is not very useful if there is no way to communicate the information to a user. Devices that allow the user to enter information into and receive information from the computer are called human interface devices.
The most commonly used human interface devices on personal computers are keyboards, mice and monitors or display screens. Keyboards are used to enter textual and numeric information. The number and arrangement of keyboards depend on the language of the user. Different countries use different alphabets and require different keyboards.
Besides letter and numbers, most keyboards include keys for control functions. Arrow keys are used to move a cursor around the screen.
The monitor or screen is used to display information. These monitors come in various sizes and shapes.
The mouse is used to move a cursor around a screen. The mouse uses a ball or an optical method to sense movement around a surface. The cursor follows the movement of the mouse. Mice have one or more buttons, with most personal computers having two buttons. These buttons are used to signal different things to the computer.
Trackballs are somewhat like a mouse turned upside down. A trackball’s ball is moved directly by the user’s finger or thumb while the device does not move. Trackball’s are useful in smaller workspaces where there is no room to move a mouse.
Laptop computers often use touch pads in place of mice. A touch pad responds to finger movement across their surface. Other laptops use a small object, similar in size and shape to a pencil eraser, in the middle of the keyboard that responds to small movement.
Printers are the primary devices for creating printed output. Early printers were what are called impact printers. These printers physically press against an ink-covered tape that makes a mark on paper. Most printers today are non-impact. They either spray ink, ink jet printers, against paper or have the ink attracted to the paper using a charge applied to the paper using a laser, laser printers. While early printers could only generate characters, modern printers can easily generate complex graphics. Many printers are able to print in color.
Other devices include speakers that generate sounds, scanners that bring images into a computer, and microphones that accept sounds from the user. With special software, computers with microphone can even respond to voice commands.
In the early days of computers most input and output of information was done using devices that are seldom used except on large computers. Paper punch cards and magnetic tapes were used to store information. These devices were slow and expensive because they require many mechanical, rather then electronic, pieces.
The history of programming languages has been described as going through a number of generations. The first generation was machine language and corresponds with the first and simplest of computers. The second generation was assembly language, which made programming of general-purpose computers possible. The third generation of programming languages is the higher-level languages such as C, C++, C#, COBOL, FORTRAN, and BASIC.
Fourth generation languages may one day make computers easily programmed by almost everyone.
As the different generations of languages have been developed the need for the previous generation decreases. So far the need for earlier languages, even machine language and assembly language has never completely gone away.
The human interface devices have grown in number and flexibility. At one time directly entering information into a computer using a keyboard was rare, now it is the may most information is entered. Many older devices such as card readers are seldom used today while microphones and mice have been added. Options for printing have expanded to include medium speed ink jet printers an high speed laser printers.
1. Who is often called the world’s first computer programmer?
2. What hand-operated device was created in China to make mathematics easier?
3. Why did the idea of stored programs dramatically change the way computers were used?
4. What kinds of numbers are used in machine language programming?
5. What was the first important scientific programming language?
6. What language was the ancestor of COBOL?
7. Why are standards important for computer languages?
8. Where was BASIC invented? What was it invented for?
9. What is a graphical user interface?
10. What member of the C programming language family did Microsoft develop?
Assembler A program that converts assembly language codes into machine language codes.
Assembly Language Symbols that represent machine codes. A program called an assembler translates these symbols into the ones and zeros that the computer understands as machine language.
BASIC BASIC is an acronym for Beginners All-purpose Symbolic Instruction Code. BASIC was the name for the teaching language that was the forerunner of Visual Basic.
C A system programming language that became a widely used language in the computer industry.
C++ An extension of the C language that allowed C programmers to write object-oriented programs.
C# A powerful and efficient member of the C family of programming languages that includes many features that help programmer write more reliable and manageable programs.
Compiler A program that takes the source code of a higher-level language and creates instructions the computer can understand.
FORTRAN FORTRAN is short for FORmula TRANslator and was one of the first programming languages to become widely used.
General-purpose computers General-purpose computers can be used for many different purposes if they are reprogrammed.
GUI Pronounced gooey, GUI stands for graphical user interface. A GUI uses pictures and other objects to make computer programs easier for people to use.
Hard-wired Information that is part of a computer program but that is hard to change. This often refers to a number that is used as a literal constant when a symbolic constant would make the program easier to change.
Higher Level Languages Computer languages that are more like human languages than computer languages. Higher-level languages are converted or compiled into machine language in several steps.
Machine language The language that computer hardware understands. Machine language is made up of ones and zeros that stand for computer instructions.
Mnemonics Mnemonics are memory aides. Mnemonics are words or symbols that help someone to remember what function is to be performed by a command.
Natural language Natural languages are the languages that people use to talk to each other. English, German, Japanese, and Spanish are all examples of natural languages. The reason programmers use programming languages is that computers do not understand natural languages.
Reprogramming Reprogramming is changing the instructions that control what problems a computer can solve and what work it can accomplish.
Re-wiring Wires that connected different parts of the computer controlled early computers. Re-wiring involved changing the wiring inside the computer so that it could perform a different task.
Stored Programs Programs that are kept in the computer’s memory so that the computer can switch between tasks easily.
Syntax Syntax is the way that commands are written and organized so that a computer program can convert them to instructions for computer hardware.
Visual Basic Visual Basic is a powerful but easy to use language that allows programmers to create computer applications that are easy for people to use.