Review of Hardware and Software Concepts
These are concepts that you may already be familiar with, but keeping them in mind can help you with learning to program.
These are the 4 basic functions of any computer system. This simple model provides an easy way to think about many aspects of information systems. |
Hardware. Any computer hardware component can be easily categorized into 1 of these four categories. Most advances in computer hardware are aimed at improving the speed, quality, flexibility, and ease of use of whatever function it addresses. For example, voice recognition is easier to use than a mouse, which is easier to use than a keyboard. You will remember that the CPU is the smallest, most powerful, and most expensive part of the computer system.
Memory is also called RAM, and also primary storage. It is faster than secondary storage (disks and CD's) but limited in capacity and works directly with the CPU. Memory is a key aspect of understanding programming. Programmers use names, called variables, that refer to specific memory locations that are used to manipulate data when a program is running.
Software. Any programming language will have commands or instructions that permit the programmer to accomplish input, output, processing, and storage. Designing and writing programs is sometimes easier if you keep in mind that any one program will need to get input, do some processing, and deliver some output, and optionally, store the output. Software is a set of programs.
Programming is part of the process of building software. A computer program is a self-contained set of instructions used to operate a computer to produce a specific result. An application is a set of software programs.
Why are there so many languages? Why do they keep changing? The first generation of language was simply that of the computer itself: binary (1 and 0, on and off). As you can imagine, this was a very cumbersome way to program a computer.
Machine language
11000000 00000001 00000010
11110000 00000010 00000011
ADD 1,2 MUL 2,3
The second generation was assembler, which meant the programmers had a slightly more English-like way to create instructions. It required an assembler program to translate the programmers instructions into machine language. Each type of hardware has its own assembly language, so a programmer had to learn a new language for each machine. |
3rd Generation. The big breakthrough was 3rd generation languages, which were portable across types of hardware. However, different languages were developed for different purposes: scientific, business, education, etc. New developments in languages are attempting to make programmers more productive, software more reliable and maintainable, and to better meet the needs of clients. Those are the benefits of object-oriented languages.
Fourth generation languages are those that are intended for trained end-users to solve their own problems without having to be programmers.
All these high-level languages must still be translated into machine language, either through compilers or interpreters.
Compilers Source file is translated into a machine language file (the EXE) The EXE file can then be executed |
Interpreters One statement at a time is translated and then executed No separate EXE is produced |