2-1 Hardware CPU Memory - 2 kinds Network Graphics Input and Output Devices
Everything is Binary Eniac 1950 Eniac contained 17,468 vacuum tubes, 7,200 crystal diodes, 1,500 relays, 70,000 resistors, 10,000 capacitors and around 5 million hand- soldered joints. It weighed more than 30 short tons (27 t), was roughly 8 by 3 by 100 feet (2.4 m × 0.9 m × 30 m), took up 1800 square feet (167 m2), and consumed 150 kW of power 2-2
Bits and Bytes KB MB GB TB PB HB? 1-3
Numbers and Letters Numbers are represented in base Keystrokes are represented with ASCII ‘A’ = 65 = ‘B’ = 66 ‘C’ = 67 ‘a’ = 97 ‘b’ =
1-5 Gates AND gateOR gateNOT gate
1-6 Example: XOR Circuit A AND (NOT B) OR (NOT A) AND B
2-7 Software Instructions to CPU / Hardware Binary Assembly Language High Level Languages
2-8
2-9 Programming Languages Machine code Assembly languages Fortran Basic Pascal Scheme CC++ Java LISP Smalltalk Smalltalk-80 C# Logo Python
2-10 Software Development Emphasis on efficiency fast algorithms small program size limited memory use Often cryptic code Not user-friendly Emphasis on programmer’s productivity team development reusability of code easier maintenance portability Better documented User-friendly 's:Now:
2-11 Software Development Tools Editor programmer writes source code Compiler translates the source into object code (instructions specific to a particular CPU) Linker converts one or several object modules into an executable program Debugger steps through the program “in slow motion” and helps find logical mistakes (“bugs”)
2-12 The First “Bug” “(moth) in relay” Mark II Aiken Relay Calculator (Harvard University, 1945)
2-13 Compiled Languages: Edit-Compile-Link-Run Editor Source code Compiler Object code Linker Executable program Editor Source code Compiler Object code Editor Source code Compiler Object code
2-14 Interpreted Languages: Edit-Run Editor Source code Interpreter
2-15 Compiler vs. Interpreter Compiler: checks syntax generates machine-code instructions not needed to run the executable program the executable runs faster Interpreter: checks syntax executes appropriate instructions while interpreting the program statements must remain installed while the program is interpreted the interpreted program is slower
2-16 Java’s Hybrid Approach: Compiler + Interpreter A Java compiler converts Java source code into instructions for the Java Virtual Machine. These instructions, called bytecodes, are the same for any computer / operating system. A CPU-specific Java interpreter interprets bytecodes on a particular computer.
2-17 Java’s Compiler + Interpreter Editor Hello.java Compiler Hello.class Interpreter Hello, World ! Interpreter
2-18 Why Bytecodes? Platform-independent Load from the Internet faster than source code Interpreter is faster and smaller than it would be for Java source Source code is not revealed to end users Interpreter performs additional security checks, screens out malicious code
2-19 // Mike Bollhorst // Aug 19, 2013 // Hello: my first program - prints hello world on screen public class Hello { public static void main (String[] args) { System.out.println(“Hello world!”); }