Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Announcements & Review Last Time Discussion Sections: • Acquiring & creating language PAI 5.70 until further notice • Noam Chomsky • Catherine Snow Pair in same discussion Announcements Email: 305j in subject Lecture 3: Scaffolding and Output Today Compilation and Execution – What’s “javac” do? – What happens next? Basics – Scaffolding - what every program needs – Making the computer talk to you! Lecture 3: Scaffolding and Output Static Compilation & Execution Easier case: The C programming language “static” ahead-of-time compilation model: Tool: “cc” the C compiler Your file: Circle.c “cc Circle.c” -> (Circle.a) -> a.out Executable: a.out “a.out” Lecture 3: Scaffolding and Output Dynamic Compilation & Execution Java “dynamic” compilation model: 2 Tools “javac” the Java bytecode compiler “java” the Java virtual machine Your file: Circle.java What do you do in Bluej? “javac Circle.java” -> Circle.class Executing Bytecode: low-level virtual machine form machine independent, portable What do you do in Bluej? “java Circle.class” Lecture 3: Scaffolding and Output Java Dynamic Compilation Executing Bytecode: “java Circle.class” What happens? Interpretation vs Dynamic Compilation Lecture 3: Scaffolding and Output Dynamic Compilation & Execution Java “dynamic” compilation model: Executing Bytecode: “java Circle.class” - What happens? Interpreting 1. map each bytecode to a machine code sequence, 2. for each bytecode, execute the sequence Translation to machine code 1. map all the bytecodes to machine code (or a higher level intermediate representation), 2. massage them (e.g., get rid of redundancies between instructions), 3. execute the machine code Lecture 3: Scaffolding and Output Dynamic Compilation & Execution “Hotspot” compilation, a hybrid 1. Initially interpret 2. Find the “hot” (frequently executed code) methods, and translate only these hot methods to machine code Lecture 3: Scaffolding and Output Basics What you write – Scaffolding - what every program needs – Making the computer talk to you! Comments - tell the compiler to ignore text // the compiler ignores this text on the same line /* For multi-line comments, you can use * this form and it will ignore all this text * too until it sees */ Lecture 3: Scaffolding and Output Scaffolding: Magic or Logical? /* Kathryn S McKinley * January 10, 2005 * file: Song.java * My program does nothing right now! */ public class Song { // code can go here } public static void main (String [] args) { // code here too } Lecture 3: Scaffolding and Output Printing System.out.print(“I love CS305j.”); System.out.println(“I love CS305j.”); [More examples in Bluej…] Lecture 3: Scaffolding and Output Questions? Lecture 3: Scaffolding and Output