Welcome to the CIS Seminar Fall, 2006. Taking this for Credit You’ll do a ½ hour presentation (or you and a friend will do a 1 hour presentation). This.

Post on 21-Dec-2015

214 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

Welcome to the CIS Seminar

Fall, 2006

Taking this for Credit

You’ll do a ½ hour presentation (or you and a friend will do a 1 hour presentation).

This presentation includes background and discussion in the wiki.

You need to participate

You need to attend every week.

Grading

Presentation: 50%

Participation & Attendance: 50%

About Your Presentation

We will pick topics today if possible.You need to do background research (hint: Google

doesn’t yet cover all information in the universe! Try the library …)

You need to make a good wiki page, including discussion prompts or problems.

You need to make good slidesYou need to practice! I will ask for a trial run at

least 3 days before. If you’re not ready I’ll ask for more trial runs.

Scheduling• History of programming languages (Prof Peterson) • Haskell (Prof Peterson) • Mathematica as a programming language (Prof Keck) • Hindley-Milner Type systems (Daniel) • Computer camp wrapup (Prof Peterson) • Ruby on Rails (Tim) • Internship report (Kate) • Running CMT (Randy Spydell)• Alex Chiang (HP) • Tim Chamilard (UCCS) • Gareth Eaton (DU) • Eric Friedman (CNet)• Kate's Dad (???)• Amanda Tarr (Some crazy game company)Possible Student talks: C++ and templates , Prolog, Snobol / Icon,

This Term’s Theme

Programming Languages!

A Brief History of Programming Languages

Computer Science is unique in that no one language of expression has emerged to supplant all others.

Most other disciplines have one "official" language:

* standard music notation* standard math notation* standards for blueprints & technical

descriptions

Why So Many Languages?

What keeps computing from having one standard language that absorbs all others??

In The Beginning

Computers were really expensive!

Few programs.

Just write everything in the native language of the machine.

LDQ X FMP X CALCULATE X * XSTO SUMLDQ YFMP Y CALCULATE Y * YFAD SUM X * X + Y * YSTO SUM STORE SUM

Old IBM Assembly

The First Real PL: Fortran

It soon became obvious that assembly was hard to write andhard to understand. Mathematicians wanted to use more familiar notation.

A Fortran II example written byJohn Backus

1954

Fortran Innovations

* Math notations (infix expressions)

* Basic control structures: IF, DO loops, subroutines / functions

* No real linker – "Common Blocks" were a substitute

* Column oriented syntax (punched cards)

Lambda Calculus Strikes!

Lisp was a language WAY ahead of it's time!

John McCarthy proposed a language based on lambda-calculus and S-expressions (pairs).

1958

Lisp Innovations

* Automatic Storage Management

* Purely functional subset

* Defined by a meta-interpreter

* Syntactic simplicity

* Single recursive structure type

Lisp is still alive and well – nowadays it's called "Python"

Algol

Algol = "Algorithmic Language"

Algol was a language for both programming and formal description of algorithms.

1958

Contributions of Algol

* First language with "Modern" syntax

* A language of scholarly publication

* Better "function call" mechanism – more descriptive

* Led to Pascal and eventually Java

* Adopted as the "machine language" by Burroughs

COBOL

Cobol was a language designed

to fill the needs of the business

community (mathematicians and other shady academics were responsible for the other languages!)

It was influenced by Grace Hopper's ideas in Flow-Matic.

1959

Pity the Cobol Programmer

MULTIPLY B BY B GIVING B-SQUARED. MULTIPLY 4 BY A GIVING FOUR-A. MULTIPLY FOUR-A BY C GIVING FOUR-A-C. SUBTRACT FOUR-A-C FROM B-SQUARED GIVING

RESULT-1. COMPUTE RESULT-2 = RESULT-1 ** .5. SUBTRACT B FROM RESULT-2 GIVING NUMERATOR. MULTIPLY 2 BY A GIVING DENOMINATOR. DIVIDE NUMERATOR BY DENOMINATOR GIVING X.

Cobol Innovations

* Extensive I/O capabilities

* Natural language (why?)

* Abandoned native numeric representation

* Emphasized data layout (nested naming)

This is the language that will not die. You could earn big $$$ becoming a Cobol programmer.

APL

Ken Iverson was probably the first "mad genius" to design a programming that was completely unprecedented and unique.

Good luck figuring this one out:

1962

APL Contributions

* An amazing economy of expression

* Extreme functional programming – many APL operators made it into Haskell

* Explored the difficulty of introducing new symbols into the PL

* Everyone knew about APL but nobody actually used it except crazy math dudes

* Still alive as the "J" programming language

Simula

Simula expanded on Algol to add objects, classes, methods, GC. It is the ancestor of object oriented programming.

1962

Ole-Johan Dahl and Kristen Nygaard

External Class Geometry;Geometry Begin ! Subclasses declared in the prefixed block: ; Point Class Color_Point(C); Character C; Begin ... End; Rectangle Class Square; Begin ... End;

! Variables declared in the prefixed block: ; Ref(Color_Point) A1; Ref(Point) C, D; Ref(Circle) K; Ref(Line) E, F; Ref(Rectangle) R1; Ref(Square) S1;

! Block body: ; C :- New Point(5,6); D :- New Point(20,30); A1 :- New Color_Point(3, 4, 'G'); K :- New Circle(10, C); E :- New Line(C, D); F :- X; K.Shift (1,1); R1 :- New Rectangle("Rec_R1", 5, 4); S1 :- New Square("Square_S1", 4, 6); S1.Show;End of prefixed block;

Simula

* Simula was designed for discrete event based simulation – something that O-O does very well!

* It took a long time for O-O ideas to hit the mainstream (C++)

top related