Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 415: Programming Languages Algol Aaron Bloomfield Fall 2005.

Similar presentations


Presentation on theme: "CS 415: Programming Languages Algol Aaron Bloomfield Fall 2005."— Presentation transcript:

1 CS 415: Programming Languages Algol Aaron Bloomfield Fall 2005

2 Historical perspective By mid/late 50’s a lot of PLs were out there Interest in universal language European and American groups got together in Zurich Result was Algol 58 Result was Algol 58 8 people spent 8 days working on the language 8 people spent 8 days working on the language

3 Algol goals To be as close as possible to standard math notation Also very readable without much more explanation Also very readable without much more explanation Should be possible to use it to describe algorithms in publications A form of it is still used today A form of it is still used today Should be mechanically translatable into machine language programs

4 3 language versions Reference language Used by the committee, described in the report, and used in official Algol publications Used by the committee, described in the report, and used in official Algol publications Publication language Allowed for differences in the character set for different languages Allowed for differences in the character set for different languages Europeans and Americans couldn’t decide on which character to use for the decimal point! Europeans and Americans couldn’t decide on which character to use for the decimal point! Hardware representations Condensed languages for machine input Condensed languages for machine input

5 More history Was first to use BNF (Backus-Naur Form) Same Backus that created Fortran Same Backus that created Fortran He also was one of the main creators of Algol And he created functional programming And won the Turing award in ’77 Right. Back to BNF Right. Back to BNF BNF example: BNF example: := | | := | | := | := | := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Language was designed by committee Report is a “paradigm of brevity and clarity” Most languages today require 1000’s of pages Most languages today require 1000’s of pages Brevity and clarity contributed to reputation as simple, elegant language Brevity and clarity contributed to reputation as simple, elegant language

6 Algol language features Block structure And scope of variables within those blocks Explicit type declaration for variables Scope rules for local variables Dynamic lifetimes for variables Nested if-then-else expressions and statements Call by value and call by name Recursive subroutines Arrays with dynamic bounds User defined data types

7 Gotos Algol did include them But with (recursive) procedures and blocks, they weren’t needed as much Gotos were going out of vogue People were realizing that it was a poor way to program People were realizing that it was a poor way to program Dijkstra’s 1968 letter to the ACM on the subjetct

8 Syntax and style Free format Indentation style Indentation style Algol defined the style of most successors Hierarchical structure Hierarchical structure Nesting of environments and control structures Nesting of environments and control structures Identifiers could be more than 6 characters

9 Variables and types Data types: integer, real, boolean No implicit declarations No double precision types No complex number types Arrays could have more than three dimensions Could have dynamic bounds Could have dynamic bounds Can start at something other than 0/1 Can start at something other than 0/1

10 Binding Binding of names to locations is done on entry to a block Not at compile time, as in Fortran Not at compile time, as in Fortran Stack is central run-time data structure

11 Blocks Can use a block of statements anywhere a single statement is needed begin declarations; declarations; statements; statements;end

12 Blocks support structured programming Algol 60 if x = 3 then begin begin y := 9; y := 9; k := 10; k := 10; end; end;Fortran IF (X.NEQ. 3) GOTO 100 IF (X.NEQ. 3) GOTO 100 Y = 9 Y = 9 K = 10 K = 10 100...

13 Blocks allow nested scopes begin integer x; integer x; procedure squid; procedure squid; begin begin integer x; integer x;...... end; end;

14 Blocks for efficient storage management begin...... begin begin real array x[1:1000]; real array x[1:1000];...... end; end;...... begin begin real array y[1:2000]; real array y[1:2000];...... end; end;end;

15 Control structures GotoIf-then-else For loop Switch

16 Call by name vs. by value Call by name is default Call by name: re-evaluate the actual parameter on every use For actual parameters that are simple variables, it’s the same as call by reference For actual parameters that are simple variables, it’s the same as call by reference For actual parameters that are expressions, the expression is re-evaluated on each access For actual parameters that are expressions, the expression is re-evaluated on each access No other language ever used call by name…

17 Call by name begin integer n; integer n; procedure p (k: integer) procedure p (k: integer) begin begin print (k); print (k); n := n+1; n := n+1; print (k); print (k); end; end; n := 0; n := 0; p (n+10); p (n+10);end; n is set to 0 parameter is n+10 (not just 10) prints n+10, which is 10 n is still 0; thus, n becomes 1 prints n+10, which is 11 parameter is n+10 (not just 10)

18 Problems with Algol Didn’t include a I/O library Thus, each implementation had a different means for I/O Thus, each implementation had a different means for I/O This caused compatibility problems This caused compatibility problems And no standard way to write a Hello World program And no standard way to write a Hello World program

19 Algol 68 Successor to Algol 60 Included may new features Unions Unions Operator overloading Operator overloading Casting Casting Standardized input and output Standardized input and output Parallel processing Parallel processing Rarely implemented by the compilers, though

20 Life of Algol 60 Didn’t achieve widespread use Extremely important in the history of PLs Successors: Pascal, Modula, Ada, others Produced important work on: Lexical analysis Lexical analysis Parsing Parsing Compilation techniques for block-structured languages Compilation techniques for block-structured languages


Download ppt "CS 415: Programming Languages Algol Aaron Bloomfield Fall 2005."

Similar presentations


Ads by Google