Chapter 1.1 - Computer Basics
Savitch 1.1
Computer Basics: Outline
- Hardware and Memory
- Programs
- Programming Languages and Compilers
- Java Byte-Code
- Graphics Supplements
Hardware and Software
- Computer systems consist of hardware and software.
- Hardware includes the tangible parts of computer systems.
- Software includes the programs - sets of instructions of the computer to follow.
- Familitary with hardware basics helps us understand software.
Hardware and Memory
- Most modern computers have similar components including
- Input devices (keyboard, mouse, etc.)
- Output devices (display screen, printer, etc.)
- A processor
- Two kinds of memory (main memory and auxiliary memory)
The Processor
- The called the CPU (central processing unit) or the chip (e.g. Pentium processor)
- The processor processes a program’s instructions.
- It can process only very simple instructions.
- The power of computing comes form speed and program intricacy.
Memory
- Memory Holds
- programs
- data of the computer to process
- the results of intermediate processing.
- Two kinds of memory
- main memory
- auxiliary memory
Main memory
- Working memory used to store
- The current program
- The data the program is using
- The results of intermediate calculations
- Usually measured in megabytes (e.g. 8 gigabyte of RAM)
- RAM is short for random access memory
- A byte ****is a quantity of memory
Auxiliary Memory
- Also called secondary memory
- Disk drives, CDs, DVDs, flash drives, etc.
- More or less permanent (nonvolatile)
- Usually measured in gigabytes (e.g. 50 gigabyte hard drive)
Bites, Bytes, and Addresses
- A bit is a digit with a value of either 0 or 1.
- A byte consists of 8 bits.
- Each byte in main memory resides at a numbered location called its address.
Main Memory
![Figure 1.1](mainmemory.png)
Storing Data
- Data of all kinds (numbers, letters, strings of character, audio, video, even programs) are encoded and stored using 1s and 0s.
- When more than a single byte is needed, several adjacent bytes are used.
- The address of the first byte is the address of the unit of bytes.
Files
- Large groups of bytes in auxiliary memory are called files.
- Files have names.
- Files are organized into groups called directories or folders.
- Java programs are stored in files.
- Programs files are copied from auxiliary memory to main memory to main memory in order to be run.
0s and 1s
- Machines with only 2 stable states are easy to make, but programming using only 0s and 1s is difficult .
- Fortunately, the conversion of numbers, letters, string of characters, audio, video, and programs is done automatically.
Programs
- A program is a set of instructions for a computer to follow.
- We use programs almost daily (email, word processor, video games, bank ATMs, etc.).
- Following the instructions is called running or executing the program.
- Normally, a computer receives two kinds or input:
- The program
- The data needed by the program.
- The output is the result(s) produced by following the instructions in the program.
Running a Program
![Figure 1.2](runningaprogram.png)
- Sometimes the computer and the program are considered to be one unit.
- Programmers typically find this view to be more convenient.
The Operating System
- The operating system is a supervisory program that oversees the operation of the computer.
- The operating system retrieves and start program for you.
- Well-known operating systems including: Microsoft Windows, Apple’s Mac OS, Linux, and UNIX.
Programming Languages
-
High-level languages are relatively easy to use
- Java, C#, C++, Visual Basic, Python, Ruby.
- Unfortunately, computer hardware does not understand high-level languages.
- Therefore, a high-level program must be translated into a low-level language.
Compilers
- A compiler translates a program from a high-level language to a low-level language the computer can run.
- You compile a program by running the compiler on the high-level-language version of the program called the source program.
- Compilers produce machine- or assembly-language programs called object programs.
- Most high-level languages need a different compiler for each type of computer and for each operating system.
- Most compilers are very large programs that are expensive to produce.
Java Byte-Code
- The Java compiler does not translate a Java program into assembly language or machine language for a particular computer.
- Instead, it translates a Java program into byte-code.
- Byte-code is the machine language for a hypothetical computer (or interpreter) called the Java Virtual Machine.
- A byte-code program is easy to translate into machine language for any particular computer.
- A program called an interpreter translates each byte-code instruction, executing the resulting machine-language instructions on the particular computer before translating the next byte-code instruction.
- Most Java programs today are executed using a Just-In-Time or JIT compiler in which byte-code is compiled as needed and stored for later reuse without needing to be re-compiled.
Compiling, Interpreting, Running
- Use the compiler to translate the Java program into byte-code (done using the javac command).
- Use the Java virtual machine for your computer to translate each byte-code instruction into machine language and to run the resulting machine-language instruction (done using the java command).
Portability
- After compiling a Java program into byte-code, that byte-code can be used on any computer with a byte-code interpreter and without a need to recompile.
- Byte-code can be sent over the Internet and used anywhere in the world.
- This make Java suitable for Internet applications.
Class Loader
- A Java program typically consists of several pieces called classes.
- Each class may have a separate author and each is complied (translated into byte-code) separately.
- A class loader (called a linker in other programming languages) automatically connects the classes together.
Compiling and Running a Program
![Figure 1.3](compilingandrunningaprogram.png)
Powerpoint