Challenge the future
Delft
University of
Technology
Course IN4303, 2013/14
Compiler Construction
Guido Wachsmuth
Imperative and
Object-Oriented Languages
last lecture
Imperative and Object-Oriented Languages
Assessment
Explain the properties of language using the examples of English
and MiniJava.
• arbitrary
• symbolic
• systematic
• productive
• non-instinctive
• conventional
• modifiable
2
last lecture
Imperative and Object-Oriented Languages
Assessment
What is a software language?
• computer-processable artificial language used to engineer software
• piece of software
Why is MiniJava a software language?
• computer-processable artificial language
• programming language, can be used to engineer software
• MiniJava compiler = piece of software
Why is English not a software language?
• not computer-processable, not artificial
3
Imperative and Object-Oriented Languages
Recap: Compilers
4
compiler
software
language
machine
language
today’s lecture
Imperative and Object-Oriented Languages
Overview
5
I
imperative languages
II
object-oriented languages
Term Rewriting
imperative languages
I
6
Imperative and Object-Oriented Languages 7
machine code
registers
Imperative and Object-Oriented Languages
x86 family
general purpose registers
• accumulator AX - arithmetic operations
• counter CX - shift/rotate instructions, loops
• data DX - arithmetic operations, I/O
• base BX - pointer to data
• stack pointer SP, base pointer BP - top and base of stack
• source SI, destination DI - stream operations
special purpose registers
• segments SS, CS, DS, ES, FS, GS
• flags EFLAGS
8
read memorymov AX [1]
mov CX AX
L: dec CX
mul CX
cmp CX 1
ja L
mov [2] AX
basic concepts
Imperative and Object-Oriented Languages
Example: x86 Assembler
9
write memory
calculation
jump
.method static public m(I)I
iload 1
ifne else
iconst_1
ireturn
else: iload 1
dup
iconst_1
isub
invokestatic Math/m(I)I
imul
ireturn
basic concepts
Imperative and Object-Oriented Languages
Example: Java Bytecode
10
read memory
calculation
jump
states & statements
Imperative and Object-Oriented Languages
Example: C
	 int f = 1
	 int x = 5
	 int s = f + x
	 while (x > 1) {
	 	 f = x * f ;
	 	 x = x - 1
	 }
11
variable
expression
assignment
control flow
states & statements
Imperative and Object-Oriented Languages
Example: Tiger
/* factorial function */
let
	 var f := 1
	 var x := 5
	 var s := f + x
in
	 while x > 1 do (
	 	 f := x * f ;
	 	 x := x - 1
	 )
end
12
variable
expression
assignment
control flow
push 21
push 42
call _f
add SP 8
push BP
mov BP SP
mov AX [BP + 8]
mov DX [BP + 12]
add AX DX
pop BP
ret
pass parameter
Imperative and Object-Oriented Languages
Example: x86 Assembler
13
access parameter
new stack frame
modularity
old stack frame
free parameters
procedures
Imperative and Object-Oriented Languages
Example: C
#include <stio.h>
/* factorial function */
int fac( int num ) {
	 if (num < 1)
	 	 return 1;
	 else
	 	 return num * fac(num - 1) ;
}
int main() {
	 int x = 10 ;
	 int f = fac( x ) ;
	 int x printf(“%d! = %dn”, x, f);
	 return 0;
}
14
formal parameter
actual parameter
local variable
recursive call
procedures
Imperative and Object-Oriented Languages
Example: Tiger
/* factorial function */
let
	 function fac( n: int ) : int =
	 let
	 	 var f := 1
	 in
	 	 if n < 1 then
	 	 	 f := 1
	 	 else
	 	 	 f := (n * fac(n - 1) );
	 	 f
	 end
var f := 0
var x := 5
in
	 f := fac( x )
end
15
formal parameter
actual parameter
local variable
recursive call
call by value vs. call by reference
Imperative and Object-Oriented Languages
Example: Tiger
let
	 type vector = array of int
	 function init(v: vector) =
	 	 v := vector[5] of 0
	 	
	 function upto(v: vector, l: int) =
	 	 for i := 0 to l do
	 	 	 v[i] := i
	 	 	
	 var v : vector := vector[5] of 1
in
	 init(v) ;
	 upto(v, 5)
end
16
dynamic & static typing
Imperative and Object-Oriented Languages
Type Systems
machine code
• memory: no type information
• instructions: assume values of certain types
dynamically typed languages
• typed values
• run-time checking & run-time errors
statically typed languages
• typed expressions
• compile-time checking & compile-time errors
17
compatibility
Imperative and Object-Oriented Languages
Type Systems
type compatibility
• value/expression: actual type
• context: expected type
type equivalence
• structural type systems
• nominative type systems
subtyping
• relation between types
• value/expression: multiple types
18
type compatibility
Imperative and Object-Oriented Languages
Example: Tiger
let
	 type A = int
	 type B = int
	 type V = array of A
	 type W = V
	 type X = array of A
	 type Y = array of B
	
	 var a: A := 42
	 var b: B := a
	 var v: V := V[42] of b
	 var w: W := v
	 var x: X := w
	 var y: Y := x
in
	 y
end
19
record types
Imperative and Object-Oriented Languages
Type Systems
record
• consecutively stored values
• fields accessible via different offsets
record type
• fields by name, type, position in record
• structural subtyping: width vs. depth
20
type R1 = {f1 : int, f2 : int}
type R2 = {f1 : int, f2 : int, f3 : int}
type R3 = {f1 : byte, f2 : byte}
biology
Imperative and Object-Oriented Languages
Polymorphism
21
the occurrence of more than one form
biology
Imperative and Object-Oriented Languages
Polymorphism
22
biology
Imperative and Object-Oriented Languages
Polymorphism
23
programming languages
Imperative and Object-Oriented Languages
Polymorphism
21 + 21
21.0 + 21.0
"foo" + "bar"
24
programming languages
Imperative and Object-Oriented Languages
Polymorphism
print(42)
print(42.0)
print("foo")
25
programming languages
Imperative and Object-Oriented Languages
Polymorphism
21 + 21
21.0 + 21.0
21 + 21.0
21 + "bar"
26
polymorphism
Imperative and Object-Oriented Languages
Type Systems
ad-hoc polymorphism
overloading
• same name, different types, same operation
• same name, different types, different operations
type coercion
• implicit conversion
universal polymorphism
subtype polymorphism
• substitution principle
parametric polymorphism
27
21 + 21
21.0 + 21.0
print(42)
print(42.0)
"foo" + "bar"
21 + "bar"
Imperative and Object-Oriented Languages 28
coffee break
Term Rewriting
object-oriented languages
II
29
objects & messages
Imperative and Object-Oriented Languages
Modularity
objects
• generalisation of records
• identity
• state
• behaviour
messages
• objects send and receive messages
• trigger behaviour
• imperative realisation: method calls
30
classes
Imperative and Object-Oriented Languages
Modularity
classes
• generalisation of record types
• characteristics of objects: attributes, fields, properties
• behaviour of objects: methods, operations, features
encapsulation
• interface exposure
• hide attributes & methods
• hide implementation
31
public class C {
public int f1;
private int f2;
public void m1() { return; }
private C m2(C c) { return c; }
}
inheritance vs. interfaces
Imperative and Object-Oriented Languages
Modularity
inheritance
• inherit attributes & methods
• additional attributes & methods
• override behaviour
• nominative subtyping
interfaces
• avoid multiple inheritance
• interface: contract for attributes & methods
• class: provide attributes & methods
• nominative subtyping
32
public class C {
public int f1;
public void m1() {…}
public void m2() {…}
}
public class D extends C {
public int f2;
public void m2() {…}
public void m3() {…}
}
public interface I {
public int f;
public void m();
}
public class E implements I {
public int f;
public void m() {…}
public void m’() {…}
}
polymorphism
Imperative and Object-Oriented Languages
Type Systems
ad-hoc polymorphism
overloading
• same method name, independent classes
• same method name, same class, different parameter types
overriding
• same method name, subclass, compatible types
universal polymorphism
subtype polymorphism
• inheritance, interfaces
parametric polymorphism
33
static vs. dynamic dispatch
Imperative and Object-Oriented Languages
Type Systems
dispatch
• link method call to method
static dispatch
• type information at compile-time
dynamic dispatch
• type information at run-time
• single dispatch: one parameter
• multiple dispatch: more parameters
34
single dispatch
Imperative and Object-Oriented Languages
Example: Java
public class A {} public class B extends A {} public class C extends B {}
public class D {
public A m(A a) { System.out.println("D.m(A a)"); return a; }
public A m(B b) { System.out.println("D.m(B b)"); return b; }
}
public class E extends D {
public A m(A a) { System.out.println("E.m(A a)"); return a; }
public B m(B b) { System.out.println("E.m(B b)"); return b; }
}
35
A a = new A(); B b = new B(); C c = new C(); D d = new D(); E e = new E();
A ab = b; A ac = c; D de = e;
d. m(a); d. m(b); d. m(ab); d. m(c); d. m(ac);
e. m(a); e. m(b); e. m(ab); e. m(c); e. m(ac);
de.m(a); de.m(b); de.m(ab); de.m(c); de.m(ac);
variance
Imperative and Object-Oriented Languages
Type Systems
A <: B
C ? D
36
covariance
Imperative and Object-Oriented Languages
Type Systems
A <: B
C <: D
37
contravariance
Imperative and Object-Oriented Languages
Type Systems
A <: B
C :> D
38
invariance
Imperative and Object-Oriented Languages
Type Systems
A <: B
C = D
39
overriding
Imperative and Object-Oriented Languages
Type Systems
methods
• parameter types
• return type
covariance
• method in subclass
• return type: subtype of original return type
contravariance
• method in subclass
• parameter types: supertypes of original parameter types
40
overloading vs. overriding
Imperative and Object-Oriented Languages
Example: Java
public class F {
public A m(B b) { System.out.println("F.m(B b)"); return b; }
}
public class G extends F {
public A m(A a) { System.out.println("G.m(A a)"); return a; }
}
public class H extends F {
public B m(B b) { System.out.println("H.m(B b)"); return b; }
}
41
A a = new A(); B b = new B(); F f = new F(); G g = new G(); H h = new H();
A ab = b;
f.m(b);
g.m(a); g.m(b); g.m(ab);
h.m(a); h.m(b); h.m(ab);
invariance
Imperative and Object-Oriented Languages
Example: Java
public class X {
public A a;
public A getA() { return a ; }	
public void setA(A a) { this.a = a ; }
}
public class Y extends X {
public B a;
public B getA() { return a ; }	
public void setA(B a) { this.a = a ; }
}
42
A a = new A(); B b = new B(); X y = new Y();
y.getA(); y.setA(b); y.setA(a);
String[] s = new String[3] ; Object[] o = s ; o[1] = new A();
Term Rewriting
summary
III
43
lessons learned
Imperative and Object-Oriented Languages
Summary
imperative languages
• state & statements
• abstraction over machine code
• control flow & procedures
• types
object-oriented languages
• objects & messages
• classes
• inheritance
• types
44
learn more
Imperative and Object-Oriented Languages
Literature
Imperative Languages
Carl A. Gunter: Semantics of Programming Languages: Structures and
Techniques. MIT Press, 1992
Kenneth C. Louden: Programming Languages: Principles and Practice.
Course Technology, 2002
Object-Oriented Languages
Martin Abadi, Luca Cardelli: A Theory of Objects. Springer, 1996.
Kim B. Bruce: Foundations of Object-Oriented Programming Languages:
Types and Semantics. MIT Press, 2002.
Timothy Budd: An Introduction to Object-Oriented Programming.
Addison-Wesley, 2002.
45
coming next
Imperative and Object-Oriented Languages
Outlook
declarative language definition
• Lecture 1: Grammars and Trees
• Lecture 2: SDF and ATerms
• Lecture 3: Name Binding and Type Systems
• Lecture 4: Term Rewriting
• Lecture 5: Static Analysis and Error Checking
• Lecture 6: Code Generation
Lab Sep 12
• get used to Eclipse, Spoofax, and MiniJava
46
Imperative and Object-Oriented Languages 47
copyrights
Imperative and Object-Oriented Languages
Pictures
Slide 1: Popular C++ by Itkovian, some rights reserved
Slide 4: PICOL icons by Melih Bilgil, some rights reserved
Slides 7, 9, 13: Dual Processor Module by roobarb!, some rights reserved
Slides 11, 14: The C Programming Language by Bill Bradford, some rights reserved
Slides 12, 15, 16, 19: Tiger by Bernard Landgraf, some rights reserved
Slide 21: Adam and Eva by Albrecht Dürer, public domain
Slide 22: ABO blood type by InvictaHOG, public domain
Slide 23: Blood Compability and Plasma donation compatibility path by InvictaHOG, public domain
Slide 28: Delice de France by Dominica Williamson, some rights reserved
Slide 46: Nieuwe Kerk by Arne Kuilman, some rights reserved
48

Introduction - Imperative and Object-Oriented Languages

  • 1.
    Challenge the future Delft Universityof Technology Course IN4303, 2013/14 Compiler Construction Guido Wachsmuth Imperative and Object-Oriented Languages
  • 2.
    last lecture Imperative andObject-Oriented Languages Assessment Explain the properties of language using the examples of English and MiniJava. • arbitrary • symbolic • systematic • productive • non-instinctive • conventional • modifiable 2
  • 3.
    last lecture Imperative andObject-Oriented Languages Assessment What is a software language? • computer-processable artificial language used to engineer software • piece of software Why is MiniJava a software language? • computer-processable artificial language • programming language, can be used to engineer software • MiniJava compiler = piece of software Why is English not a software language? • not computer-processable, not artificial 3
  • 4.
    Imperative and Object-OrientedLanguages Recap: Compilers 4 compiler software language machine language
  • 5.
    today’s lecture Imperative andObject-Oriented Languages Overview 5 I imperative languages II object-oriented languages
  • 6.
  • 7.
    Imperative and Object-OrientedLanguages 7 machine code
  • 8.
    registers Imperative and Object-OrientedLanguages x86 family general purpose registers • accumulator AX - arithmetic operations • counter CX - shift/rotate instructions, loops • data DX - arithmetic operations, I/O • base BX - pointer to data • stack pointer SP, base pointer BP - top and base of stack • source SI, destination DI - stream operations special purpose registers • segments SS, CS, DS, ES, FS, GS • flags EFLAGS 8
  • 9.
    read memorymov AX[1] mov CX AX L: dec CX mul CX cmp CX 1 ja L mov [2] AX basic concepts Imperative and Object-Oriented Languages Example: x86 Assembler 9 write memory calculation jump
  • 10.
    .method static publicm(I)I iload 1 ifne else iconst_1 ireturn else: iload 1 dup iconst_1 isub invokestatic Math/m(I)I imul ireturn basic concepts Imperative and Object-Oriented Languages Example: Java Bytecode 10 read memory calculation jump
  • 11.
    states & statements Imperativeand Object-Oriented Languages Example: C int f = 1 int x = 5 int s = f + x while (x > 1) { f = x * f ; x = x - 1 } 11 variable expression assignment control flow
  • 12.
    states & statements Imperativeand Object-Oriented Languages Example: Tiger /* factorial function */ let var f := 1 var x := 5 var s := f + x in while x > 1 do ( f := x * f ; x := x - 1 ) end 12 variable expression assignment control flow
  • 13.
    push 21 push 42 call_f add SP 8 push BP mov BP SP mov AX [BP + 8] mov DX [BP + 12] add AX DX pop BP ret pass parameter Imperative and Object-Oriented Languages Example: x86 Assembler 13 access parameter new stack frame modularity old stack frame free parameters
  • 14.
    procedures Imperative and Object-OrientedLanguages Example: C #include <stio.h> /* factorial function */ int fac( int num ) { if (num < 1) return 1; else return num * fac(num - 1) ; } int main() { int x = 10 ; int f = fac( x ) ; int x printf(“%d! = %dn”, x, f); return 0; } 14 formal parameter actual parameter local variable recursive call
  • 15.
    procedures Imperative and Object-OrientedLanguages Example: Tiger /* factorial function */ let function fac( n: int ) : int = let var f := 1 in if n < 1 then f := 1 else f := (n * fac(n - 1) ); f end var f := 0 var x := 5 in f := fac( x ) end 15 formal parameter actual parameter local variable recursive call
  • 16.
    call by valuevs. call by reference Imperative and Object-Oriented Languages Example: Tiger let type vector = array of int function init(v: vector) = v := vector[5] of 0 function upto(v: vector, l: int) = for i := 0 to l do v[i] := i var v : vector := vector[5] of 1 in init(v) ; upto(v, 5) end 16
  • 17.
    dynamic & statictyping Imperative and Object-Oriented Languages Type Systems machine code • memory: no type information • instructions: assume values of certain types dynamically typed languages • typed values • run-time checking & run-time errors statically typed languages • typed expressions • compile-time checking & compile-time errors 17
  • 18.
    compatibility Imperative and Object-OrientedLanguages Type Systems type compatibility • value/expression: actual type • context: expected type type equivalence • structural type systems • nominative type systems subtyping • relation between types • value/expression: multiple types 18
  • 19.
    type compatibility Imperative andObject-Oriented Languages Example: Tiger let type A = int type B = int type V = array of A type W = V type X = array of A type Y = array of B var a: A := 42 var b: B := a var v: V := V[42] of b var w: W := v var x: X := w var y: Y := x in y end 19
  • 20.
    record types Imperative andObject-Oriented Languages Type Systems record • consecutively stored values • fields accessible via different offsets record type • fields by name, type, position in record • structural subtyping: width vs. depth 20 type R1 = {f1 : int, f2 : int} type R2 = {f1 : int, f2 : int, f3 : int} type R3 = {f1 : byte, f2 : byte}
  • 21.
    biology Imperative and Object-OrientedLanguages Polymorphism 21 the occurrence of more than one form
  • 22.
    biology Imperative and Object-OrientedLanguages Polymorphism 22
  • 23.
    biology Imperative and Object-OrientedLanguages Polymorphism 23
  • 24.
    programming languages Imperative andObject-Oriented Languages Polymorphism 21 + 21 21.0 + 21.0 "foo" + "bar" 24
  • 25.
    programming languages Imperative andObject-Oriented Languages Polymorphism print(42) print(42.0) print("foo") 25
  • 26.
    programming languages Imperative andObject-Oriented Languages Polymorphism 21 + 21 21.0 + 21.0 21 + 21.0 21 + "bar" 26
  • 27.
    polymorphism Imperative and Object-OrientedLanguages Type Systems ad-hoc polymorphism overloading • same name, different types, same operation • same name, different types, different operations type coercion • implicit conversion universal polymorphism subtype polymorphism • substitution principle parametric polymorphism 27 21 + 21 21.0 + 21.0 print(42) print(42.0) "foo" + "bar" 21 + "bar"
  • 28.
    Imperative and Object-OrientedLanguages 28 coffee break
  • 29.
  • 30.
    objects & messages Imperativeand Object-Oriented Languages Modularity objects • generalisation of records • identity • state • behaviour messages • objects send and receive messages • trigger behaviour • imperative realisation: method calls 30
  • 31.
    classes Imperative and Object-OrientedLanguages Modularity classes • generalisation of record types • characteristics of objects: attributes, fields, properties • behaviour of objects: methods, operations, features encapsulation • interface exposure • hide attributes & methods • hide implementation 31 public class C { public int f1; private int f2; public void m1() { return; } private C m2(C c) { return c; } }
  • 32.
    inheritance vs. interfaces Imperativeand Object-Oriented Languages Modularity inheritance • inherit attributes & methods • additional attributes & methods • override behaviour • nominative subtyping interfaces • avoid multiple inheritance • interface: contract for attributes & methods • class: provide attributes & methods • nominative subtyping 32 public class C { public int f1; public void m1() {…} public void m2() {…} } public class D extends C { public int f2; public void m2() {…} public void m3() {…} } public interface I { public int f; public void m(); } public class E implements I { public int f; public void m() {…} public void m’() {…} }
  • 33.
    polymorphism Imperative and Object-OrientedLanguages Type Systems ad-hoc polymorphism overloading • same method name, independent classes • same method name, same class, different parameter types overriding • same method name, subclass, compatible types universal polymorphism subtype polymorphism • inheritance, interfaces parametric polymorphism 33
  • 34.
    static vs. dynamicdispatch Imperative and Object-Oriented Languages Type Systems dispatch • link method call to method static dispatch • type information at compile-time dynamic dispatch • type information at run-time • single dispatch: one parameter • multiple dispatch: more parameters 34
  • 35.
    single dispatch Imperative andObject-Oriented Languages Example: Java public class A {} public class B extends A {} public class C extends B {} public class D { public A m(A a) { System.out.println("D.m(A a)"); return a; } public A m(B b) { System.out.println("D.m(B b)"); return b; } } public class E extends D { public A m(A a) { System.out.println("E.m(A a)"); return a; } public B m(B b) { System.out.println("E.m(B b)"); return b; } } 35 A a = new A(); B b = new B(); C c = new C(); D d = new D(); E e = new E(); A ab = b; A ac = c; D de = e; d. m(a); d. m(b); d. m(ab); d. m(c); d. m(ac); e. m(a); e. m(b); e. m(ab); e. m(c); e. m(ac); de.m(a); de.m(b); de.m(ab); de.m(c); de.m(ac);
  • 36.
    variance Imperative and Object-OrientedLanguages Type Systems A <: B C ? D 36
  • 37.
    covariance Imperative and Object-OrientedLanguages Type Systems A <: B C <: D 37
  • 38.
    contravariance Imperative and Object-OrientedLanguages Type Systems A <: B C :> D 38
  • 39.
    invariance Imperative and Object-OrientedLanguages Type Systems A <: B C = D 39
  • 40.
    overriding Imperative and Object-OrientedLanguages Type Systems methods • parameter types • return type covariance • method in subclass • return type: subtype of original return type contravariance • method in subclass • parameter types: supertypes of original parameter types 40
  • 41.
    overloading vs. overriding Imperativeand Object-Oriented Languages Example: Java public class F { public A m(B b) { System.out.println("F.m(B b)"); return b; } } public class G extends F { public A m(A a) { System.out.println("G.m(A a)"); return a; } } public class H extends F { public B m(B b) { System.out.println("H.m(B b)"); return b; } } 41 A a = new A(); B b = new B(); F f = new F(); G g = new G(); H h = new H(); A ab = b; f.m(b); g.m(a); g.m(b); g.m(ab); h.m(a); h.m(b); h.m(ab);
  • 42.
    invariance Imperative and Object-OrientedLanguages Example: Java public class X { public A a; public A getA() { return a ; } public void setA(A a) { this.a = a ; } } public class Y extends X { public B a; public B getA() { return a ; } public void setA(B a) { this.a = a ; } } 42 A a = new A(); B b = new B(); X y = new Y(); y.getA(); y.setA(b); y.setA(a); String[] s = new String[3] ; Object[] o = s ; o[1] = new A();
  • 43.
  • 44.
    lessons learned Imperative andObject-Oriented Languages Summary imperative languages • state & statements • abstraction over machine code • control flow & procedures • types object-oriented languages • objects & messages • classes • inheritance • types 44
  • 45.
    learn more Imperative andObject-Oriented Languages Literature Imperative Languages Carl A. Gunter: Semantics of Programming Languages: Structures and Techniques. MIT Press, 1992 Kenneth C. Louden: Programming Languages: Principles and Practice. Course Technology, 2002 Object-Oriented Languages Martin Abadi, Luca Cardelli: A Theory of Objects. Springer, 1996. Kim B. Bruce: Foundations of Object-Oriented Programming Languages: Types and Semantics. MIT Press, 2002. Timothy Budd: An Introduction to Object-Oriented Programming. Addison-Wesley, 2002. 45
  • 46.
    coming next Imperative andObject-Oriented Languages Outlook declarative language definition • Lecture 1: Grammars and Trees • Lecture 2: SDF and ATerms • Lecture 3: Name Binding and Type Systems • Lecture 4: Term Rewriting • Lecture 5: Static Analysis and Error Checking • Lecture 6: Code Generation Lab Sep 12 • get used to Eclipse, Spoofax, and MiniJava 46
  • 47.
  • 48.
    copyrights Imperative and Object-OrientedLanguages Pictures Slide 1: Popular C++ by Itkovian, some rights reserved Slide 4: PICOL icons by Melih Bilgil, some rights reserved Slides 7, 9, 13: Dual Processor Module by roobarb!, some rights reserved Slides 11, 14: The C Programming Language by Bill Bradford, some rights reserved Slides 12, 15, 16, 19: Tiger by Bernard Landgraf, some rights reserved Slide 21: Adam and Eva by Albrecht Dürer, public domain Slide 22: ABO blood type by InvictaHOG, public domain Slide 23: Blood Compability and Plasma donation compatibility path by InvictaHOG, public domain Slide 28: Delice de France by Dominica Williamson, some rights reserved Slide 46: Nieuwe Kerk by Arne Kuilman, some rights reserved 48

Editor's Notes

  • #2 \n
  • #3 no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
  • #4 no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
  • #5 no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
  • #6 no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
  • #7 no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
  • #8 no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
  • #9 no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
  • #10 no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
  • #11 \n
  • #12 \n
  • #13 \n
  • #14 \n
  • #15 \n
  • #16 \n
  • #17 \n
  • #18 \n
  • #19 \n
  • #20 replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
  • #21 replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
  • #22 replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
  • #23 replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
  • #24 replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
  • #25 replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
  • #26 \n
  • #27 \n
  • #28 \n
  • #29 \n
  • #30 \n
  • #31 memory\n\nread &amp; write memory, calculations, jumps\n
  • #32 memory\n\nread &amp; write memory, calculations, jumps\n
  • #33 memory\n\nread &amp; write memory, calculations, jumps\n
  • #34 memory\n\nread &amp; write memory, calculations, jumps\n
  • #35 \n
  • #36 \n
  • #37 \n
  • #38 variables: abstract over memory\n\nexpression: calculations over information in memory\n\nassignment: write memory, store result in memory\n\ncontrol flow statements: conditionals, loops, blocks - abstract over jumps\n
  • #39 variables: abstract over memory\n\nexpression: calculations over information in memory\n\nassignment: write memory, store result in memory\n\ncontrol flow statements: conditionals, loops, blocks - abstract over jumps\n
  • #40 variables: abstract over memory\n\nexpression: calculations over information in memory\n\nassignment: write memory, store result in memory\n\ncontrol flow statements: conditionals, loops, blocks - abstract over jumps\n
  • #41 variables: abstract over memory\n\nexpression: calculations over information in memory\n\nassignment: write memory, store result in memory\n\ncontrol flow statements: conditionals, loops, blocks - abstract over jumps\n
  • #42 jumps: call and return\ncall stack: return address, parameters, private data\nprocedure prologue and epilogue\n
  • #43 jumps: call and return\ncall stack: return address, parameters, private data\nprocedure prologue and epilogue\n
  • #44 jumps: call and return\ncall stack: return address, parameters, private data\nprocedure prologue and epilogue\n
  • #45 jumps: call and return\ncall stack: return address, parameters, private data\nprocedure prologue and epilogue\n
  • #46 jumps: call and return\ncall stack: return address, parameters, private data\nprocedure prologue and epilogue\n
  • #47 subroutines, routines, procedures, functions, methods \n\nscoping: local variables\ndeclarations with parameters (formal parameters)\ncalls with arguments (actual parameters)\n
  • #48 subroutines, routines, procedures, functions, methods \n\nscoping: local variables\ndeclarations with parameters (formal parameters)\ncalls with arguments (actual parameters)\n
  • #49 subroutines, routines, procedures, functions, methods \n\nscoping: local variables\ndeclarations with parameters (formal parameters)\ncalls with arguments (actual parameters)\n
  • #50 subroutines, routines, procedures, functions, methods \n\nscoping: local variables\ndeclarations with parameters (formal parameters)\ncalls with arguments (actual parameters)\n
  • #51 \n
  • #52 \n
  • #53 \n
  • #54 \n
  • #55 \n
  • #56 \n
  • #57 \n
  • #58 \n
  • #59 \n
  • #60 \n
  • #61 \n
  • #62 \n
  • #63 \n
  • #64 \n
  • #65 \n
  • #66 \n
  • #67 \n
  • #68 \n
  • #69 \n
  • #70 \n
  • #71 \n
  • #72 \n
  • #73 \n
  • #74 \n
  • #75 \n
  • #76 \n
  • #77 \n
  • #78 \n
  • #79 \n
  • #80 \n
  • #81 \n
  • #82 \n
  • #83 \n
  • #84 \n
  • #85 \n
  • #86 round-up on every lecture\n\nwhat to take with you\n\ncheck yourself, pre- and post-paration\n
  • #87 \n
  • #88 \n