1 / 20

CS 415: Programming Languages

CS 415: Programming Languages. Algol Aaron Bloomfield Fall 2005. 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 8 people spent 8 days working on the language.

ursala
Download Presentation

CS 415: Programming Languages

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 • 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 • Should be possible to use it to describe algorithms in publications • 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 • Publication language • 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! • Hardware representations • Condensed languages for machine input

  5. More history • Was first to use BNF (Backus-Naur Form) • 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 • BNF example: • <value> := <number> | <variable> | <expression> • <number> := <integer> | <float> • <integer> := <integer><digit> | <digit> • <digit> := 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 • 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 • Dijkstra’s 1968 letter to the ACM on the subjetct

  8. Syntax and style • Free format • Indentation style • Algol defined the style of most successors • Hierarchical structure • 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 • 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 • Stack is central run-time data structure

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

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

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

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

  15. Control structures • Goto • If-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 expressions, the expression is re-evaluated on each access • No other language ever used call by name…

  17. begin integer n; procedure p (k: integer) begin print (k); n := n+1; print (k); end; n := 0; p (n+10); end; parameter is n+10 (not just 10) n is set to 0 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) Call by name

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

  19. Algol 68 • Successor to Algol 60 • Included may new features • Unions • Operator overloading • Casting • Standardized input and output • 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 • Parsing • Compilation techniques for block-structured languages

More Related