CS 403 Programming Language Theory Class 3 - August 31, 2000.

Slides:



Advertisements
Similar presentations
Reasons to study concepts of PL
Advertisements

A Quick Overview of Languages. FORTRAN Designed in 1955 First release of the compiler in 1957 Algebraic in nature Scientific (numeric not string oriented)
ISBN Chapter 2 Evolution of the Major Programming Languages.
1 Copyright © 1995 by Addison-Wesley Publishing Co. 1. Plankalkül Never implemented - Advanced data structures - floating point, arrays, records.
ISBN Chapter 2 Evolution of the Major Programming Languages.
1 Organization of Programming Languages-Cheng (Fall 2004) Evolution of Programming Languages (CSE452) Instructor: Dr. B. Cheng Fall 2004.
ISBN Chapter 2 Evolution of the Major Programming Languages.
ISBN Chapter 2 Evolution of the Major Programming Languages.
Programming Language Concepts
Evolution of the Major Programming Languages
Principles of Programming Chapter 1: Introduction  In this chapter you will learn about:  Overview of Computer Component  Overview of Programming 
CS 355 – PROGRAMMING LANGUAGES Dr. X. Copyright © 2012 Addison-Wesley. All rights reserved.1-2 Topics Zuse’s Plankalkül Minimal Hardware Programming:
Evolution of the Major Programming Languages
ISBN Chapter 2 Evolution of the Major Programming Languages.
ISBN Chapter 2 Evolution of the Major Programming Languages.
ISBN Chapter 2 Evolution of the Major Programming Languages.
ISBN Chapter 2 Evolution of the Major Programming Languages.
CS 403 Programming Language Theory Class 2 - August 29, 2000.
ISBN Chapter 2 Evolution of the Major Programming Languages.
1 Evolution of Programming Languages - Fortran and Beyond Software evolved with hardware Computer patent wars! First higher-level languages –Fortran –Lisp.
ISBN Chapter 2 Evolution of the Major Programming Languages.
1 Programming Language History and Evolution In Text: Chapter 2.
ISBN Chapter 2 Evolution of the Major Programming Languages.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
ISBN Chapter 2 Evolution of the Major Programming Languages.
CS 363 Comparative Programming Languages Evolution of Programming Languages.
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 Chapter 2: Evolution of the Major Programming Languages The IBM 704 and Fortran Functional Programming:
C Language: Introduction
The Evolution of Programming Languages Day 2 Lecturer: Xiao Jia The Evolution of PLs1.
1 Chapter 2 © 1998 by Addison Wesley Longman, Inc. 2.1 Plankalkül Never implemented - Advanced data structures - floating point, arrays, records.
1 CS Programming Languages Class 04 September 5, 2000.
Evolution of the Major Programming Languages Chapter 2: Evolution of the Major Programming Languages Lectures # 5.
Evolution of the Major Programming Languages SANGJI University Kwangman Ko
History. Development Driven by Function Functions of a Programming Language –To describe computation for use by computers –To describe computation and.
Programming Language History and Evolution
Chapter von Neumann Architecture + Evolution of the Major Programming Languages.
A BRIEF HISTORY OF PROGRAMMING LANGUAGES
Zuse’s Plankalkül – 1945 Never implemented Problems Zuse Solved
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Programming Language History and Evolution
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Chapter 2 Plankalkül – Never implemented
Evolution of the Major Programming Languages
Ada – 1983 History’s largest design effort
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Cobol Design goals: Problems
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
Evolution of the Major Programming Languages
2.1 Plankalkül Pseudocodes Never implemented
Programming Languages
Presentation transcript:

CS 403 Programming Language Theory Class 3 - August 31, 2000

Homework Assignment #2 (1) Consider this program (on web page): #include main() { int i; printf(“Value of i: %d, %o, %x, %u, \n %c, %f, %ld\n", i,i,i,i,i,i,i); i = 42; printf(“Value of i: %d, %o, %x, %u, \n %c, %f, %ld\n", i,i,i,i,i,i,i); }

Homework Assignment #2 (2) Compile and run (on 4 C compilers, including cc and gcc on UNIX)… Print your program and the executions, identified by compiler. Explain the output (about 1-2 pages) What does ‘printf’ do, and what do the ‘%’ commands do? Why the different but consistent output values for the same variable? What differences do you note across compilers? Turn in Tuesday, Sept 5 th

UNIX Seebeck web site has UNIX help Software on Bama… (important page!) Learning Links… Changing the type of your account: “Web helpers”  “Changing your Bama shell” to “ksh” Editors: “vi” and “emacs”

Using UNIX Make sure you have an interactive shell, not the ‘remote’ or ‘ftp-only’ (see web page to change it). Get a ‘telnet’ software package (Seebeck Software page…). Install it. Connect to Bama using telnet. Edit your file on the PC, then ‘ftp’ it to Bama. Compile it using ‘cc’ and ‘gcc’. Run each, & save the output screen.

Chapter 2 History of the Evolution of Programming Languages For each language: Notice the environment/ background that motivated the new language. Note the major advances, and keep them in rough chronological sequence.

Why Review Ancient History? All knowledge has a past, a present, and a future. What we ‘knew’ last year has changed. What we ‘know’ now will change… What we learn tomorrow will not be permanent. If you don’t know the past, you can’t understand the present.

COBOL Environment of development: UNIVAC was beginning to use FLOW- MATIC USAF was beginning to use AIMACO IBM was developing COMTRAN

COBOL (2) Based on FLOW-MATIC FLOW-MATIC features: Names up to 12 characters, with embedded hyphens English names for arithmetic operators Data and code were completely separate Verbs were first word in every statement

COBOL (3) First Design Meeting - May 1959 Design goals:  Must look like simple English  Must be easy to use, even if that means it will be less powerful  Must broaden the base of computer users  Must not be biased by current compiler problems

COBOL (4) Design committee were all from computer manufacturers and DoD branches Design Problems: arithmetic expressions? subscripts? Fights among manufacturers

COBOL (5) Contributions: First macro facility in a high-level language Hierarchical data structures (records) Nested selection statements Long names (up to 30 characters), with hyphens Data Division

COBOL (6) Comments: First language required by DoD; would have failed without DoD Still the most widely used business applications language

BASIC Designed by Kemeny & Kurtz at Dartmouth Design Goals: Easy to learn and use for non-science students Must be ”pleasant and friendly" Fast turnaround for homework Free and private access User time is more important than computer time

PL/I Designed by IBM and SHARE Computing situation in 1964 (from IBM's point of view) 1. Scientific computing IBM 1620 and 7090 computers FORTRAN SHARE user group 2. Business computing IBM 1401, 7080 computers COBOL GUIDE user group

PL/I Rationale: By 1963, however, Scientific users began to need more elaborate I/O, like COBOL had; Business users began to need floating point and arrays (MIS) It looked like many shops would begin to need two kinds of computers, languages, and support staff --> too costly!

PL/I Rationale The obvious solution:  Build a new computer to do both kinds of applications  Design a new language to do both kinds of applications

PL/I Contributions  First unit-level concurrency  First exception handling  Switch-selectable recursion  First pointer data type  First array cross sections

PL/I Comments Many new features were poorly designed Too large and too complex Was (and still is) actually used for both scientific and business applications

Early Dynamic Languages Characterized by dynamic typing and dynamic storage allocation APL (A Programming Language) 1962 Designed as a hardware description language (at IBM by Ken Iverson) Highly expressive (many operators, for both scalars and arrays of various dimensions) Programs are very difficult to read SNOBOL(1964) Designed as a string manipulation language Powerful operators for string pattern matching

SIMULA Designed primarily for system simulation (by Nygaard and Dahl in Norway) Based on ALGOL 60 and SIMULA I Primary Contribution: Coroutines - a kind of subprogram Implemented in a structure called a class Classes are the basis for data abstraction Classes are structures that include both local data and functionality

ALGOL From the continued development of ALGOL 60, but it is not a superset of that language Design is based on the concept of orthogonality Contributions:  User-defined data structures  Reference types  Dynamic arrays (called flex arrays)

ALGOL 68 - Comments Had even less usage than ALGOL 60 Had strong influence on later languages: Pascal, C, & Ada

Pascal Designed by Wirth, who quit the ALGOL 68 committee (didn't like the direction of that work) Designed for teaching structured programming Small, simple, nothing really new Still the most widely used language for teaching programming in colleges (but use is shrinking)

C Designed for systems programming (at Bell Labs by Dennis Richie) Evolved primarily from B, but also ALGOL 68 Powerful set of operators, but poor type checking Initially spread through UNIX

Other descendants of ALGOL Modula-2 & Modula-3 (by Wirth) Oberon (by Wirth in late 1980s) Delphi (Borland)

Prolog Developed at the University of Aix- Marseille, by Comerauer and Roussel, with some help... Based on formal logic Non-procedural Can be summarized as being an intelligent database system that uses an inferencing process to infer the truth of given queries

Ada Huge design effort, involving hundreds of people, much money, and about eight years (began in mid-1970s)

Ada (2) Contributions:  Packages - support for data abstraction  Exception handling - elaborate  Generic program units  Concurrency - through the tasking model

Ada - Comments Competitive design Included all that was then known about software engineering and language design First compilers were very difficult; the first really usable compiler came nearly five years after the language design was completed

Ada 95 (began in 88) Support for OOP through type derivation Better control mechanisms for shared data (new concurrency features) More flexible libraries

Smalltalk Developed at Xerox PARC, initially by Alan Kay, later by Adele Goldberg First full implementation of an object- oriented language (data abstraction, inheritance, and dynamic type binding) Pioneered the graphical user interface everyone now uses

C Developed at Bell Labs by Stroustrup Evolved from C and SIMULA 67 Facilities for object-oriented programming, taken partially from SIMULA 67, were added to C Also has exception handling

C++ (2) A large and complex language, in part because it supports both procedural and OO programming Rapidly grew in popularity, along with OOP ANSI standard approved in November, 1997

Java Developed at Sun in the early 1990s Based on C++ Significantly simplified Supports only OOP Has references, but not pointers Includes support for applets and a form of concurrency