0% found this document useful (0 votes)
17 views28 pages

History of Programming

The document provides an overview of programming languages, their evolution, and the various paradigms such as procedural, object-oriented, and generic programming. It discusses the significance of early languages like Fortran, COBOL, and Lisp, and highlights the contributions of key figures in the field, including Bjarne Stroustrup and Dennis Ritchie. Additionally, it emphasizes the importance of designing languages to meet diverse application needs and the trade-offs involved in language features.

Uploaded by

wb4kb8jbwb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views28 pages

History of Programming

The document provides an overview of programming languages, their evolution, and the various paradigms such as procedural, object-oriented, and generic programming. It discusses the significance of early languages like Fortran, COBOL, and Lisp, and highlights the contributions of key figures in the field, including Bjarne Stroustrup and Dennis Ritchie. Additionally, it emphasizes the importance of designing languages to meet diverse application needs and the trade-offs involved in language features.

Uploaded by

wb4kb8jbwb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 28

Overview

 Ideals
 Aims, heroes, techniques
 Languages and language designers
 Early languages to C++

(There is so much more than


what we can cover)

Stroustrup/Programming 2
What is a programming language?
 A tool for instructing machines
 A notation for algorithms
 A means for communication among programmers
 A tool for experimentation
 A means for controlling computer-controlled gadgets
 A means for controlling computerized devices
 A way of expressing relationships among concepts
 A means for expressing high-level designs

 All of the above!


 And more

Stroustrup/Programming 3
Styles/paradigms
 Procedural programming
 Data abstraction
 Object-oriented programming
 Generic programming

 Functional programming, logic programming, rule-


based programming, constraints-based programming,
aspect-oriented programming, …

Stroustrup/Programming 4
Styles/paradigms
template<class Iter> void draw_all(Iter b, Iter e)
{
for_each(b,e,mem_fun(&Shape::draw)); // draw all shapes in [b:e)
}

Point p(100,100);
Shape* a[] = { new Circle(p,50), new Rectangle(p, 250, 250) };
draw_all(a,a+2);

 Which programming styles/paradigms did we use here?


 Procedural, data abstractions, OOP, and GP

Stroustrup/Programming 5
Styles/paradigms
template<class Cont> void draw_all(Cont& c) // C++11
{
for_each(Shape* p : c) p->draw(); // draw all shapes in c
}

void draw_all(Container& c) // C++14


{
for_each(Shape* p : c) p->draw(); // draw all shapes in c
}

 It’s all just programming!

Stroustrup/Programming 6
Some fundamentals
 Portability is good
 Type safety is good
 High performance is good
 Anything that eases debugging is good
 Access to system resources is good
 Stability over decades is good
 Ease of learning is good
 Small is good
 Whatever helps analysis is good
 Having lots of facilities is good
 You can’t have all at the same time: engineering tradeoffs

Stroustrup/Programming 7
Programming languages
 Machine code
 Bits, octal, or at most decimal numbers
 Assembler
 Registers, load, store, integer add, floating point add, …
 Each new machine had its own assembler
 Higher level languages
 First: Fortran and COBOL
 Rate of language invention
 At least 2000 a decade
 Major languages today
 Really solid statistics are hard to come by
 IDS: about 9 million professional programmers
 COBOL, Fortran, C, C++, Visual Basic, PERL, Java, Javascript
 Ada, C#, PHP, …

Stroustrup/Programming 8
Early programming languages
1950s: 1960s: 1970s:
Simula
Lisp
Algol60 Algol68

Fortran Pascal

BCPL Classic C
COBOL

PL/I
Red==major commercial use
Yellow==will produce important “offspring”
Stroustrup/Programming 9
Modern programming languages
Lisp Python
Smalltalk PHP
Fortran77
Eiffel Java95 Java04
Simula67

C89 C++ C++98 C++11

Ada Ada98 C#

Pascal Object Pascal


COBOL04 Javascript
COBOL89
Visual Basic
Stroustrup/Programming
PERL 10
Why do we design and evolve languages?
 There are many diverse applications areas
 No one language can be the best for everything
 Programmers have diverse backgrounds and skills
 No one language can be best for everybody
 Problems change
 Over the years, computers are applied in new areas and to new problems
 Computers change
 Over the decades, hardware characteristics and tradeoffs change
 Progress happens
 Over the decades, we learn better ways to design and implement
languages

Stroustrup/Programming 11
First modern computer – first compiler

 David Wheeler (1927-2004)


 University of Cambridge
 Exceptional problem solver: hardware, software, algorithms, libraries
 First computer science Ph.D. (1951)
 First paper on how to write correct, reusable, and maintainable code (1951)
 (Thesis advisor for Bjarne Stroustrup )
Stroustrup/Programming 12
Early languages – 1952
 One language for each machine
 Special features for processor
 Special features for “operating system”
 Most had very assembler-like facilities
 It was easy to understand which instructions would be generated
 No portability of code

Stroustrup/Programming 13
Fortran

 John Backus (1924-2007)


 IBM
 FORTRAN, the first high level computer language to be developed.
 We did not know what we wanted and how to do it. It just sort of grew.
 The Backus-Naur Form (BNF), a standard notation to describe the
syntax of a high level programming language.
 A functional programming language called FP, which advocates a
mathematical approach to programming.
Stroustrup/Programming 14
Fortran – 1956
 Allowed programmers to write linear algebra much as they
found it in textbooks
 Arrays and loops
 Standard mathematical functions
 libraries
 Users’ own functions
 The notation was largely machine independent
 Fortran code could often be moved from computer to computer with
only minor modification
 This was a huge improvement
 Arguably the largest single improvement in the history of
programming languages
 Continuous evolution: II, IV, 77, 90, 95, 03, 08, [15]

Stroustrup/Programming 15
COBOL
 “Rear Admiral Dr. Grace Murray Hopper (US
Navy) was a remarkable woman who grandly
rose to the challenges of programming the first
computers. During her lifetime as a leader in
the field of software development concepts, she
contributed to the transition from primitive
programming techniques to the use of
sophisticated compilers. She believed that
‘we've always done it that way’ was not
necessarily a good reason to continue to do so.”

(1906-1992)

Stroustrup/Programming 16
Cobol – 1960
 Cobol was (and sometimes still is) for business programmers
what Fortran was (and sometimes still is) for scientific
programmers
 The emphasis was on data manipulation
 Copying
 Storing and retrieving (record keeping)
 Printing (reports)
 Calculation/computation was seen as a minor matter
 It was hoped/claimed that Cobol was so close to business
English that managers could program and programmers would
soon become redundant
 Continuous evolution: 60, 61, 65, 68, 74, 85, 02

Stroustrup/Programming 17
Lisp

 John McCarthy (1927-2011)


 Stanford University
 AI pioneer

Stroustrup/Programming 18
Lisp – 1960
 List/symbolic processing
 Initially (and often still) interpreted
 Dozens (most likely hundreds) of dialects
 “Lisp has an implied plural”
 Common Lisp
 Scheme
 This family of languages has been (and is) the
mainstay of artificial intelligence (AI) research
 though delivered products have often been in C or C++

Stroustrup/Programming 19
Algol

 Peter Naur (b. 1928)


 Danish Technical University and Regnecentralen
 BNF
 Edsger Dijkstra (1930-2002)
 Mathematisch Centrum, Amsterdam, Eindhoven University of
Technology, Burroughs Corporation , University of Texas (Austin)
 Mathematical logic in programming, algorithms
 THE operating system
Stroustrup/Programming 20
Algol – 1960

 The breakthrough of modern programming language concepts


 Language description
 BNF; separation of lexical, syntactic, and semantic concerns
 Scope
 Type
 The notion of “general purpose programming language”
 Before that languages were either scientific (e.g., Fortran), business (e.g.,
Cobol), string manipulation (e.g., Lisp), simulation, …
 Never reached major non-academic use

Simula67
Algol58 Algol60 Algol68

Stroustrup/Programming Pascal 21
Simula 67

 Kristen Nygaard (1926-2002) and Ole-Johan Dahl (1931-2002)


 Norwegian Computing Center
 Oslo University
 The start of object-oriented programming and object-oriented design
Stroustrup/Programming 22
Simula 1967
 Address all applications domains rather then a specific domain
 As Fortran, COBOL, etc. did
 Aims to become a true general-purpose programming language
 Model real-world phenomena in code
 represent ideas as classes and class objects
 represent hierarchical relations as class hierarchies
 Classes, inheritance, virtual functions, object-oriented design
 A program becomes a set of interacting objects rather than a
monolith
 Has major (positive) implications for error rates

Stroustrup/Programming 23
 Dennis Ritchie (1941-2011) C
 Bell Labs
 C and helped with Unix
 Ken Thompson (b. 1943)
 Bell Labs
 Unix

 Doug McIlroy (b. 1932)


 Bell Labs
 Everybody’s favorite critic,
discussion partner, and
ideas man (influenced C,
C++, Unix, and much
more)
Stroustrup/Programming 24
C – 1978
 (Relatively) high-level programming language for systems
programming
 Very widely used, weakly checked, systems programming language
 Associated with Unix and through that with Linux and the open source
movement
 Direct map to hardware
 Performance becomes somewhat portable
 Designed and implemented by Dennis Ritchie 1974-78
Bjarne Stroustrup, BTL, 1985
Dennis Ritchie, BTL, 1974
Ken Thompson, BTL, 1972
C++ C++98 C++11
CPL BCPL B Classic C
C89 C99 C11
Martin Richards, Cambridge, 1967
Christopher Strachey, Cambridge, mid-
1960s Stroustrup/Programming 25
C++

 Bjarne Stroustrup
 AT&T Bell labs
 Texas A&M University
 making abstraction techniques affordable and manageable
for mainstream projects
 pioneered the use of object-oriented and generic
programming techniques in application areas where
efficiency is a premium
Stroustrup/Programming 26
My ideals – in 1980 and more so in 2013

 “To make life easier for the serious programmer”


 i.e., primarily me and my friends/colleagues
 I love writing code
 I like reading code
 I hate debugging

 Elegant and efficient code


 I really dislike choosing between the two
 Elegance, efficiency, and correctness are closely related in
many application domains
 Inelegance/verbosity is a major source of bugs and inefficiencies

Stroustrup/Programming 27
C++ – 1985
C++14

 C++ is a general-purpose programming language


with a bias towards systems programming that
 is a better C
 supports data abstraction
 supports object-oriented programming C++11
 supports generic programming
C++98
1978-89
Classic C ARM C++
C with Classes C++
Simula 67 1979-84 1989
Stroustrup/Programming 28
More information
 More language designer links/photos
 http://www.angelfire.com/tx4/cus/people/
 A few examples of languages:
 http://dmoz.org/Computers/Programming/Languages/
 Textbooks
 Michael L. Scott, Programming Language Pragmatics, Morgan
Kaufmann, 2000, ISBN 1-55860-442-1
 Robert W. Sebesta, Concepts of programming languages,
Addison-Wesley, 2003, ISBN 0-321-19362-8
 History books
 Jean Sammet, Programming Languages: History and
Fundamentals, Prentice-Hall, 1969, ISBN 0-13-729988-5
 Richard L. Wexelblat, History of Programming Languages,
Academic Press, 1981, ISBN 0-12-745040-8
 T. J. Bergin and R. G. Gibson, History of Programming
Languages – II, Addison-Wesley, 1996, ISBN 0-201-89502-1
Stroustrup/Programming 29

You might also like