SlideShare a Scribd company logo
Evolution of the Major
Programming Languages
Activity
• The class will play snakes and ladders.
• Students will form teams.
• In between discussions, there will be questions given and each team
will give out their answer.
• For every correct answer, the team can roll the dice to advance in the
snakes and ladders game.
• The first team to reach the top of the game wins first place, followed
by other groups.
Amid the strife of war
• 1936 - 1945
• Konrad Zuse
• Built a series of complex computers from
electromechanical relays.
• Developed a language called Plankalkul for
expressing computations
• It was unpublished until 1972
• A programming language designed for
engineering purposes.
ShortCode
A step toward readability/writability
• 1949
• John Mauchly
• The language is for the BINAC.
• It consists of coded version of mathematical expressions.
• The machine implementation was pure interpretation, which was
termed automatic programming.
• More readable and writable than machine code, but cost running 50
times slower.
1950s
Compiling Systems
Relocatable Code
Assembly Language
Fortran 0, I, II
AI – FLPL; IPI-I, LISP
Business – Flowmatic & Cobol
ALGOL
Keep in mind in the initial context
• At the beginning of the 50s
• Primary use of computers were for numerical calculations.
• Computer memories were small.
• Hardware did not directly support floating point operations or indexing.
• Hardware was unreliable.
• Hardware was more costly than programmers.
• 1950-1953
• Grace Hopper and her team for UNIVAC
• Programs were written in a type of code called pseudocode which
was expanded into machine code subprograms.
A-0, A-1, A-2
A first compiling system
Progress in Generality
• 1950
• David J. Wheeler
• Developed a method of using blocks of relocatable addresses.
• 1951
• Maurice Wilkes
• Extended this idea to design an assembly program that could combine chosen
subroutines and allocate storage.
Speedcode System
Support for floating point operations
• Early 1950s
• John Backus
• For IBM 701 – extended machine code to include floating-point
operations.
• Includes…
• four arithmetic operations for floating points (sqrt, sine, arc, tangent,
exponent and logarithms)
• Conditional and unconditional branching
• I/O conversions
• Pure interpretation
First real compiler
• 1952
• Alick E. Glennie
• Autocode compiler for Manchester Mark I computer.
• Low-level and machine oriented
OR
• 1953
• Laning and Zierler
• Algebraic translation system (compiler)
• Implemented on the MIT Whirlwind computer.
• Generated subroutine call to each formula and expression
Fortran
First important high-level language
• 1954
• IBM 704
• Provided hardware indexing and floating point instructions.
• John Backus and group at IBM.
• Provided efficiency of hand-coded programs.
• The language was widely adopted by scientists for writing numerically
intensive programs.
• Implementation began in 1955.
Fortran 1
• 1957
• Types and storage for all variables fixed before run time.
• Included I/O formatting
• Variables of up to six characters
• User-defined subprograms
• If and Do statements
• Implicit data types
Artificial Intelligence
An influence on programming languages
• Mid 50s – interest in AI emerged
• Natural language processing
• Modeling human information storage and retrieval and other brain
processes.
• Mechanizing certain intelligent processes such as theorem proving
FLPL (Fortran List Processing Language)
• Mid 50s
• IBM
• Extension to the Fortran compiler.
• A compiled computer language for the manipulation of symbolic
expression.
• For simulation of a geometry theorem-proving machine on the IBM
704.
IPL – Information Processing Language
First AI programming language
• 1056
• Allan Newell, J.C. Shaw, Herbert Simon
• An assembly language for manipulating lists.
• Intended to help with programs that perform simple problem solving
actions such as lists, dynamic memory allocation, data types, etc.
• Invented the concept of list processing.
In the business domain…
• FLOW-MATIC
• 1957
• Business oriented language for the UNIVAC
• first English-like data processing language.
• “mathematical programs should be written in mathematical notation, data
processing programs should be written in English statements” - Grace Hopper
In the business domain…
• COBOL 60 (Common Business Oriented Language)
• 1959
• Design goals
• Use English as much as possible
• Easy to use, even at the expense of being less powerful…
• Should not be overly restricted by the problems of its implementation
• Characteristics
• DEFINE verb for macros
• Records
• 30 character names with hyphens
• Data division and procedure division
• Mandated by the DOD
Fortran Progresses…
• Fortran II compiler
• 1958
• But fixes
• Independent compilation of subprograms
• Made lengthier programs possible
ALGOL - Algorithmic Language
• 1958
• GAMM (Society for Applied Mechanics) and ACM (Assoc. for
Computing Machinery)
• ALGOL 58 – A Universal Standard Language
• Developed jointly by a committee of European and American
computer scientists in a meeting in 1958 at ETH Zurich.
• Heavily influenced many other languages and was the standard
method for algorithm description used by the Association for
Computing Machinery (ACM) in textbooks and academic sources for
more than thirty years.
• Introduced the fundamental notion of the compound statement, but
it was restricted to control flow only
LISP
• 1959
• John McCarthy and Marvin Minsky
• Produced a system for list processing
• A functional language – originally interpreted
• Dominated for a decade
• Descendants:
• Scheme
• COMMON LISP
Progress in AI
• 1960
• Newell and Tonge
• IPL-V
• Demonstrated that list processing was feasible and useful.
• Actually as assembly language implemented in an interpreter with list
processing instructions for Johnniac machine.
ALGOL 60
• 1960
• Formally described using Backus-Naur Form
• The first language implementing nested function definitions
with lexical scope
• Parent: Fortran
• Descendants: PL/I, SIMULA 67, C, Pascal, Ada, C++, and Java
APL and SNOBOL
• 1960
• APL
• Kenneth Iverson at IBM
• Designed for describing computer architecture.
• SNOBOL
• D. J. Farber, R. E. Griswold, and I. P. Polonsky at Bell Labs
• Designed for text processing.
• Collection of powerful operations for string pattern matching
Common Features:
• Not based on a previous language nor a basis for any languages
• Dynamic typing and hence storage allocation.
Fortran IV
• 1962
• One of the most widely used PLs
• Explicit type declarations for variables.
• Capability of passing subprograms as parameters.
• 1966
• Fortran 66 – its Standard version
BASIC
Let’s make it easy..
• 1963
• John Kemeny and Thomas Kurtz
• Design BASIC
• Beginner’s All-purpose Symbolic Instruction Code
• Goals
1. Must be an easy for non-science students to learn and use
2. Must be pleasant and friendly
3. Must provide fast turnaround for homework
4. Must allow free and private access
5. Must consider user time more important than computer time!’
• Characteristics
1. Small, non-iteractive
2. Used through terminals
3. Single data type – fp – numbers
4. Resurgence with Visual BASIC in 90s.
PL/I
A Single Universal Language
• 1964
• IBM
• Developed PL/I
• Goal
• Capable of both floating point and decimal arithmetic to support both scientific and business apps, as
well as, support for list processing and systems programming!
• Replace Fortran, LISP, COBOL and assembly languages.
• Contributions
• ALGOL 60’s recursion and block structure
• Fortran IV’s separate compilation with communication via global data
• COBOL 50’s data structures, I/O and report generating facilities
• A collection of new constructs
• Concurrently executing subprograms
• Exception handling for 23 different types of exceptions
• Allowed the disabling of recursion for more efficient linkage
• Pointers as data types
• References to cross sections of Arrays
Simula 67
• 1967
• Kristen Nygaard and Ole-Johan Dahl
• First developed SIMULA I in the early 60s
• Designed for system simulation, implemented in mid-60s
• Generalized into Simula 67
• Features
• Extension of ALGOL 60 taking block structure and control statements
• Support for co-routines via the class construct thus beginning the concept of data abstraction
• Encapsulation of data and processes that manipulate the data
• Class definition as a template
• Constructors
ALGOL 68
Dramatically Different
• 1968
• ALGOL 68
• Design Criteria – Orthogonality
• Never achieved widespread use, but contributed several important ideas.
• User defined data types
• Flex arrays – Implicit heap-dynamic arrays
• Orthogonality – a few primitive concepts and unrestricted use of a few combining
mechanisms
• Descendents – ALGOL-W
• Value-result method of passing parameters as an alternative to pass-by-name
• Case statement for multiple selection
1970s
Pascal
C
Prolog
Scheme
Fortran 77
Ada
Pascal
• 1971
• Niklaus Wirth
• Developed Pascal based on ALGOL 60
• Primarily used as a teaching language
• Simple but expressive
• Lacked essential features for many apps
which led to non-standard dialects such
as Turbo Pascal
C
• 1972
• Dennis Ritchie
• Developed the C language
• Heritage was
• CPL - Cambridge early 60s
• BCPL – Martin Richards 1967
• B – Ken Thompson 1970 First HLL under Unix
• C
• and ALGOL 68
Originally designed for systems programming.
C has adequate control statements and data-structuring facilities to
allow its use in many application areas. It also has a rich set of operators
that provide a high degree of expressiveness.
PROLOG - Programming Logic
• 1975
• Alain Colmerauer and Philippe Roussel
• in the Artificial Intelligence Group at the University of Aix-Marseill
• Described Prolog
• One common use of Prolog is as a kind of intelligent database.
• This application provides a simple framework for discussing the Prolog
language.
• The database of a Prolog program consists of two kinds of statements:
facts and rules.
Scheme
A Functional Programming Language
• 1975
• MIT
• Scheme
• Small size
• Exclusive use of static scoping
• Functions are first-class entities – can be values of expressions and elements of lists; assigned
to variables; passed as parameters and returned as values of function applications.
• Simple syntax and semantics
Fortran 77
Continues to Dominate
• 1978
• Fortran 77
• Character string handling
• Logical loop control statements
• If else
• “Fortran is the “lingua franca” of the computing world..” Alan Perlis
1980s
Smalltalk
ADA
ML
Common LISP
Miranda
C++
Smalltalk
• 1980
• Alan Kay who predicted computer “desktop”
windowing environment
• Developed the first language that fully supported OOP as a
part of the Xerox Palo Alto Research Center (PARC) group
• Charged with task of designing a lanuage to support Kay’s vision.
• Objects and message passing
• Example on pages 93-94
MetaLanguage
Functional Language Interest Continues
• 1980s
• Robin Milner at the University of Edinburgh as a metalanguage for a
program verification system named Logic for Computable Function
• ML (MetaLanguage)
• Functional but supports imperative
• The syntax of ML resembles that of the imperative languages, such as Java and C++.
ADA
• 1983
• DOD
• Most extensive and expensive language design effort.
• Over half of the applications of computers in DoD were embedded
systems.
• An embedded system is one in which the computer hardware
is embedded in the device it controls or for which it provides
services.
• More than 450 different programming languages were in use for
DoD projects, and none of them was standardized by DoD.
Features
Packages
Exception handling
Generics
Concurrency support
COMMON LISP
• 1984
• Designed to combine features of a number of different dialects of LISP
that were developed during the 70s and 80s.
• Large and complex
• Allows both dynamic and static scoping
• Basis is pure lisp - its syntax, primitive functions, and fundamental nature come
from that language.
Miranda
• 1984
• David Turner
• Based on ML, SASL, and KRC
• Functional, no variables, no assignment statement
• Haskell is based on Miranda
• But has the unique feature of lazy evaluation - No expression is evaluated until its value is
required
C++
• Bjarne Stroustrup at Bell Labs
• Made the first step from C to C++ with C with Classes language int 1983
• Progression
1980
Addition of function parameter type checking
and conversion
Classes like those of SIMULA 67 and Smalltalk
Derived classes, public/private access,
constructors/destructors, friends.
1981
Inline functions, default parameters, overloading
1984
Named C++ - virtual methods, dynamic binding of
method calls to method definitions, reference types
1985
First available implementation named Cfront which
translates C++ programs into C programs
Continued to evolve
multiple inheritance, abstract classes
Templates which provide parameterized types and
exception handling
2002 - .NET
The primary goal was to provide a language in which programs
could be organized as they could be organized in SIMULA 67—
that is, with classes and inheritance.
Fortran 90
Fortran 95
ADA 95
Java
1990s
Fortran 90
• 1990
• Fortran 90
• Dynamic arrays
• Records
• Pointers
• Multiple selection statement
• Modules
• Recursion
• Obsolescent-features list
• Dropped fixed format of code
requirement
• Fortran vs. FORTRAN
• Convention – keywords & identifiers in
uppercase
Fortran 95
• 1995
• Fortran 95
• For all added for parallelizing..
Java
• 1990
• Sun Microsystems
• Determined there was a need for a programming
language for embedded consumer electronic
devices.
• Java’s designers started with C++, removed
some constructs, changed some, and added a
few others.
• Reliability – characteristic of the software in
consumer electronic products.
ADA 95
• Features
• Adding new components to those inherited from a base class -
inheritance
• Dynamic binding of subprogram classes to subprogram
definitions (polymorphism)
• Protected objects
• Success hindered by C++; the widespread acceptance of C++ for
object-oriented programming, which occurred before Ada 95
was released.
Scripting Languages
• Sh (shell) – a small collection of commands interpreted as calls to system
subprograms to perform utility functions with added varaibels, control
flow statements, functions and etc
• Ksh (korn shell programming)– David Korn ’95
• Awk – Al Aho, Brian Kernighan, Peter Weinberger (’88) began as a report
generation language
• Tcl – John Ousterhout ’94
• Perl – Larry Wall – designed as a UNIX tool for processing text files.
Common Gateway Interface language as well.
Scripting Languages
• Perl – Larry Wall
• Combination of sh and awk
• Statically typed variables - $ scalar; @ arrays; % hash names
• Arrays can be dynamic and sparse
• Some dangers
• If a string is used in a numeric context and the string cannot be converted to a number, zero
is used without warning
• Array indexing cannot be checked since there is no set subscript range. References to non-
existent elements return undef, which is interpreted as 0 in numeric context.
2000s
Fortran 2003
C#
…
Fortran 2003
• 2003
• Fortran 2003
• Parameterized derived types
• OOP support
• Procedure pointers
• C interoperability
C#
• Based on C++ and Java but includes some
ideas from Delphi and Visual Basic.
• lead designer, Anders Hejlsberg,
• Also designed Turbo Pascal and Delphi, which
explains the Delphi parts of the heritage of C#.
• The purpose of C# is to provide a language
for component-based software
development, specifically for such
development in the .NET Framework.
End of Presentation

More Related Content

Similar to 2. Evolution of the Major Programming Languages.pdf

2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge
Prof. Wim Van Criekinge
 
2 evolution of the major
2 evolution of the major2 evolution of the major
2 evolution of the major
Munawar Ahmed
 
P1 2018 python
P1 2018 pythonP1 2018 python
P1 2018 python
Prof. Wim Van Criekinge
 
2 evolution of the major programming languages
2 evolution of the major programming languages2 evolution of the major programming languages
2 evolution of the major programming languagesjigeno
 
Introduction to course
Introduction to courseIntroduction to course
Introduction to course
nikit meshram
 
COMP6411.1.history.ppt
COMP6411.1.history.pptCOMP6411.1.history.ppt
COMP6411.1.history.ppt
Jadna Almeida
 
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
Prof. Wim Van Criekinge
 
Imperative programming
Imperative programmingImperative programming
Imperative programming
Edward Blurock
 
Paradigms
ParadigmsParadigms
Paradigms
Edward Blurock
 
A history of (Nordic) compilers and autocodes
A history of (Nordic) compilers and autocodesA history of (Nordic) compilers and autocodes
A history of (Nordic) compilers and autocodes
InfinIT - Innovationsnetværket for it
 
CDA4411: Chapter 10 - Application Development
CDA4411: Chapter 10 - Application DevelopmentCDA4411: Chapter 10 - Application Development
CDA4411: Chapter 10 - Application Development
Freddy San
 
Ppl 13 july2019
Ppl 13 july2019Ppl 13 july2019
Ppl 13 july2019
Khurram Tehseen
 
Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...
InfinIT - Innovationsnetværket for it
 
Relation between Languages, Machines and Computations
Relation between Languages, Machines and ComputationsRelation between Languages, Machines and Computations
Relation between Languages, Machines and Computations
BHARATH KUMAR
 
pl10ch2.ppt
pl10ch2.pptpl10ch2.ppt
pl10ch2.ppt
nazimsattar
 
Compilers.pptx
Compilers.pptxCompilers.pptx
Compilers.pptx
MohammedMohammed578197
 
Evolution of Computer
Evolution of ComputerEvolution of Computer

Similar to 2. Evolution of the Major Programming Languages.pdf (20)

2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge
 
2 evolution of the major
2 evolution of the major2 evolution of the major
2 evolution of the major
 
P1 2018 python
P1 2018 pythonP1 2018 python
P1 2018 python
 
2 evolution of the major programming languages
2 evolution of the major programming languages2 evolution of the major programming languages
2 evolution of the major programming languages
 
P1 2017 python
P1 2017 pythonP1 2017 python
P1 2017 python
 
Introduction to course
Introduction to courseIntroduction to course
Introduction to course
 
COMP6411.1.history.ppt
COMP6411.1.history.pptCOMP6411.1.history.ppt
COMP6411.1.history.ppt
 
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
 
Imperative programming
Imperative programmingImperative programming
Imperative programming
 
Paradigms
ParadigmsParadigms
Paradigms
 
A history of (Nordic) compilers and autocodes
A history of (Nordic) compilers and autocodesA history of (Nordic) compilers and autocodes
A history of (Nordic) compilers and autocodes
 
CDA4411: Chapter 10 - Application Development
CDA4411: Chapter 10 - Application DevelopmentCDA4411: Chapter 10 - Application Development
CDA4411: Chapter 10 - Application Development
 
Ppl 13 july2019
Ppl 13 july2019Ppl 13 july2019
Ppl 13 july2019
 
Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...
 
Relation between Languages, Machines and Computations
Relation between Languages, Machines and ComputationsRelation between Languages, Machines and Computations
Relation between Languages, Machines and Computations
 
Unit1
Unit1Unit1
Unit1
 
Unit1
Unit1Unit1
Unit1
 
pl10ch2.ppt
pl10ch2.pptpl10ch2.ppt
pl10ch2.ppt
 
Compilers.pptx
Compilers.pptxCompilers.pptx
Compilers.pptx
 
Evolution of Computer
Evolution of ComputerEvolution of Computer
Evolution of Computer
 

Recently uploaded

Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 

Recently uploaded (20)

Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 

2. Evolution of the Major Programming Languages.pdf

  • 1. Evolution of the Major Programming Languages
  • 2. Activity • The class will play snakes and ladders. • Students will form teams. • In between discussions, there will be questions given and each team will give out their answer. • For every correct answer, the team can roll the dice to advance in the snakes and ladders game. • The first team to reach the top of the game wins first place, followed by other groups.
  • 3. Amid the strife of war • 1936 - 1945 • Konrad Zuse • Built a series of complex computers from electromechanical relays. • Developed a language called Plankalkul for expressing computations • It was unpublished until 1972 • A programming language designed for engineering purposes.
  • 4. ShortCode A step toward readability/writability • 1949 • John Mauchly • The language is for the BINAC. • It consists of coded version of mathematical expressions. • The machine implementation was pure interpretation, which was termed automatic programming. • More readable and writable than machine code, but cost running 50 times slower.
  • 5. 1950s Compiling Systems Relocatable Code Assembly Language Fortran 0, I, II AI – FLPL; IPI-I, LISP Business – Flowmatic & Cobol ALGOL
  • 6. Keep in mind in the initial context • At the beginning of the 50s • Primary use of computers were for numerical calculations. • Computer memories were small. • Hardware did not directly support floating point operations or indexing. • Hardware was unreliable. • Hardware was more costly than programmers.
  • 7. • 1950-1953 • Grace Hopper and her team for UNIVAC • Programs were written in a type of code called pseudocode which was expanded into machine code subprograms. A-0, A-1, A-2 A first compiling system
  • 8. Progress in Generality • 1950 • David J. Wheeler • Developed a method of using blocks of relocatable addresses. • 1951 • Maurice Wilkes • Extended this idea to design an assembly program that could combine chosen subroutines and allocate storage.
  • 9. Speedcode System Support for floating point operations • Early 1950s • John Backus • For IBM 701 – extended machine code to include floating-point operations. • Includes… • four arithmetic operations for floating points (sqrt, sine, arc, tangent, exponent and logarithms) • Conditional and unconditional branching • I/O conversions • Pure interpretation
  • 10. First real compiler • 1952 • Alick E. Glennie • Autocode compiler for Manchester Mark I computer. • Low-level and machine oriented OR • 1953 • Laning and Zierler • Algebraic translation system (compiler) • Implemented on the MIT Whirlwind computer. • Generated subroutine call to each formula and expression
  • 11. Fortran First important high-level language • 1954 • IBM 704 • Provided hardware indexing and floating point instructions. • John Backus and group at IBM. • Provided efficiency of hand-coded programs. • The language was widely adopted by scientists for writing numerically intensive programs. • Implementation began in 1955.
  • 12. Fortran 1 • 1957 • Types and storage for all variables fixed before run time. • Included I/O formatting • Variables of up to six characters • User-defined subprograms • If and Do statements • Implicit data types
  • 13. Artificial Intelligence An influence on programming languages • Mid 50s – interest in AI emerged • Natural language processing • Modeling human information storage and retrieval and other brain processes. • Mechanizing certain intelligent processes such as theorem proving
  • 14. FLPL (Fortran List Processing Language) • Mid 50s • IBM • Extension to the Fortran compiler. • A compiled computer language for the manipulation of symbolic expression. • For simulation of a geometry theorem-proving machine on the IBM 704.
  • 15. IPL – Information Processing Language First AI programming language • 1056 • Allan Newell, J.C. Shaw, Herbert Simon • An assembly language for manipulating lists. • Intended to help with programs that perform simple problem solving actions such as lists, dynamic memory allocation, data types, etc. • Invented the concept of list processing.
  • 16. In the business domain… • FLOW-MATIC • 1957 • Business oriented language for the UNIVAC • first English-like data processing language. • “mathematical programs should be written in mathematical notation, data processing programs should be written in English statements” - Grace Hopper
  • 17. In the business domain… • COBOL 60 (Common Business Oriented Language) • 1959 • Design goals • Use English as much as possible • Easy to use, even at the expense of being less powerful… • Should not be overly restricted by the problems of its implementation • Characteristics • DEFINE verb for macros • Records • 30 character names with hyphens • Data division and procedure division • Mandated by the DOD
  • 18. Fortran Progresses… • Fortran II compiler • 1958 • But fixes • Independent compilation of subprograms • Made lengthier programs possible
  • 19. ALGOL - Algorithmic Language • 1958 • GAMM (Society for Applied Mechanics) and ACM (Assoc. for Computing Machinery) • ALGOL 58 – A Universal Standard Language • Developed jointly by a committee of European and American computer scientists in a meeting in 1958 at ETH Zurich. • Heavily influenced many other languages and was the standard method for algorithm description used by the Association for Computing Machinery (ACM) in textbooks and academic sources for more than thirty years. • Introduced the fundamental notion of the compound statement, but it was restricted to control flow only
  • 20. LISP • 1959 • John McCarthy and Marvin Minsky • Produced a system for list processing • A functional language – originally interpreted • Dominated for a decade • Descendants: • Scheme • COMMON LISP
  • 21. Progress in AI • 1960 • Newell and Tonge • IPL-V • Demonstrated that list processing was feasible and useful. • Actually as assembly language implemented in an interpreter with list processing instructions for Johnniac machine.
  • 22. ALGOL 60 • 1960 • Formally described using Backus-Naur Form • The first language implementing nested function definitions with lexical scope • Parent: Fortran • Descendants: PL/I, SIMULA 67, C, Pascal, Ada, C++, and Java
  • 23. APL and SNOBOL • 1960 • APL • Kenneth Iverson at IBM • Designed for describing computer architecture. • SNOBOL • D. J. Farber, R. E. Griswold, and I. P. Polonsky at Bell Labs • Designed for text processing. • Collection of powerful operations for string pattern matching Common Features: • Not based on a previous language nor a basis for any languages • Dynamic typing and hence storage allocation.
  • 24. Fortran IV • 1962 • One of the most widely used PLs • Explicit type declarations for variables. • Capability of passing subprograms as parameters. • 1966 • Fortran 66 – its Standard version
  • 25. BASIC Let’s make it easy.. • 1963 • John Kemeny and Thomas Kurtz • Design BASIC • Beginner’s All-purpose Symbolic Instruction Code • Goals 1. Must be an easy for non-science students to learn and use 2. Must be pleasant and friendly 3. Must provide fast turnaround for homework 4. Must allow free and private access 5. Must consider user time more important than computer time!’ • Characteristics 1. Small, non-iteractive 2. Used through terminals 3. Single data type – fp – numbers 4. Resurgence with Visual BASIC in 90s.
  • 26. PL/I A Single Universal Language • 1964 • IBM • Developed PL/I • Goal • Capable of both floating point and decimal arithmetic to support both scientific and business apps, as well as, support for list processing and systems programming! • Replace Fortran, LISP, COBOL and assembly languages. • Contributions • ALGOL 60’s recursion and block structure • Fortran IV’s separate compilation with communication via global data • COBOL 50’s data structures, I/O and report generating facilities • A collection of new constructs • Concurrently executing subprograms • Exception handling for 23 different types of exceptions • Allowed the disabling of recursion for more efficient linkage • Pointers as data types • References to cross sections of Arrays
  • 27. Simula 67 • 1967 • Kristen Nygaard and Ole-Johan Dahl • First developed SIMULA I in the early 60s • Designed for system simulation, implemented in mid-60s • Generalized into Simula 67 • Features • Extension of ALGOL 60 taking block structure and control statements • Support for co-routines via the class construct thus beginning the concept of data abstraction • Encapsulation of data and processes that manipulate the data • Class definition as a template • Constructors
  • 28. ALGOL 68 Dramatically Different • 1968 • ALGOL 68 • Design Criteria – Orthogonality • Never achieved widespread use, but contributed several important ideas. • User defined data types • Flex arrays – Implicit heap-dynamic arrays • Orthogonality – a few primitive concepts and unrestricted use of a few combining mechanisms • Descendents – ALGOL-W • Value-result method of passing parameters as an alternative to pass-by-name • Case statement for multiple selection
  • 30. Pascal • 1971 • Niklaus Wirth • Developed Pascal based on ALGOL 60 • Primarily used as a teaching language • Simple but expressive • Lacked essential features for many apps which led to non-standard dialects such as Turbo Pascal
  • 31. C • 1972 • Dennis Ritchie • Developed the C language • Heritage was • CPL - Cambridge early 60s • BCPL – Martin Richards 1967 • B – Ken Thompson 1970 First HLL under Unix • C • and ALGOL 68 Originally designed for systems programming. C has adequate control statements and data-structuring facilities to allow its use in many application areas. It also has a rich set of operators that provide a high degree of expressiveness.
  • 32. PROLOG - Programming Logic • 1975 • Alain Colmerauer and Philippe Roussel • in the Artificial Intelligence Group at the University of Aix-Marseill • Described Prolog • One common use of Prolog is as a kind of intelligent database. • This application provides a simple framework for discussing the Prolog language. • The database of a Prolog program consists of two kinds of statements: facts and rules.
  • 33. Scheme A Functional Programming Language • 1975 • MIT • Scheme • Small size • Exclusive use of static scoping • Functions are first-class entities – can be values of expressions and elements of lists; assigned to variables; passed as parameters and returned as values of function applications. • Simple syntax and semantics
  • 34. Fortran 77 Continues to Dominate • 1978 • Fortran 77 • Character string handling • Logical loop control statements • If else • “Fortran is the “lingua franca” of the computing world..” Alan Perlis
  • 36. Smalltalk • 1980 • Alan Kay who predicted computer “desktop” windowing environment • Developed the first language that fully supported OOP as a part of the Xerox Palo Alto Research Center (PARC) group • Charged with task of designing a lanuage to support Kay’s vision. • Objects and message passing • Example on pages 93-94
  • 37. MetaLanguage Functional Language Interest Continues • 1980s • Robin Milner at the University of Edinburgh as a metalanguage for a program verification system named Logic for Computable Function • ML (MetaLanguage) • Functional but supports imperative • The syntax of ML resembles that of the imperative languages, such as Java and C++.
  • 38. ADA • 1983 • DOD • Most extensive and expensive language design effort. • Over half of the applications of computers in DoD were embedded systems. • An embedded system is one in which the computer hardware is embedded in the device it controls or for which it provides services. • More than 450 different programming languages were in use for DoD projects, and none of them was standardized by DoD. Features Packages Exception handling Generics Concurrency support
  • 39. COMMON LISP • 1984 • Designed to combine features of a number of different dialects of LISP that were developed during the 70s and 80s. • Large and complex • Allows both dynamic and static scoping • Basis is pure lisp - its syntax, primitive functions, and fundamental nature come from that language.
  • 40. Miranda • 1984 • David Turner • Based on ML, SASL, and KRC • Functional, no variables, no assignment statement • Haskell is based on Miranda • But has the unique feature of lazy evaluation - No expression is evaluated until its value is required
  • 41. C++ • Bjarne Stroustrup at Bell Labs • Made the first step from C to C++ with C with Classes language int 1983 • Progression 1980 Addition of function parameter type checking and conversion Classes like those of SIMULA 67 and Smalltalk Derived classes, public/private access, constructors/destructors, friends. 1981 Inline functions, default parameters, overloading 1984 Named C++ - virtual methods, dynamic binding of method calls to method definitions, reference types 1985 First available implementation named Cfront which translates C++ programs into C programs Continued to evolve multiple inheritance, abstract classes Templates which provide parameterized types and exception handling 2002 - .NET The primary goal was to provide a language in which programs could be organized as they could be organized in SIMULA 67— that is, with classes and inheritance.
  • 42.
  • 43. Fortran 90 Fortran 95 ADA 95 Java 1990s
  • 44. Fortran 90 • 1990 • Fortran 90 • Dynamic arrays • Records • Pointers • Multiple selection statement • Modules • Recursion • Obsolescent-features list • Dropped fixed format of code requirement • Fortran vs. FORTRAN • Convention – keywords & identifiers in uppercase Fortran 95 • 1995 • Fortran 95 • For all added for parallelizing..
  • 45. Java • 1990 • Sun Microsystems • Determined there was a need for a programming language for embedded consumer electronic devices. • Java’s designers started with C++, removed some constructs, changed some, and added a few others. • Reliability – characteristic of the software in consumer electronic products.
  • 46. ADA 95 • Features • Adding new components to those inherited from a base class - inheritance • Dynamic binding of subprogram classes to subprogram definitions (polymorphism) • Protected objects • Success hindered by C++; the widespread acceptance of C++ for object-oriented programming, which occurred before Ada 95 was released.
  • 47. Scripting Languages • Sh (shell) – a small collection of commands interpreted as calls to system subprograms to perform utility functions with added varaibels, control flow statements, functions and etc • Ksh (korn shell programming)– David Korn ’95 • Awk – Al Aho, Brian Kernighan, Peter Weinberger (’88) began as a report generation language • Tcl – John Ousterhout ’94 • Perl – Larry Wall – designed as a UNIX tool for processing text files. Common Gateway Interface language as well.
  • 48. Scripting Languages • Perl – Larry Wall • Combination of sh and awk • Statically typed variables - $ scalar; @ arrays; % hash names • Arrays can be dynamic and sparse • Some dangers • If a string is used in a numeric context and the string cannot be converted to a number, zero is used without warning • Array indexing cannot be checked since there is no set subscript range. References to non- existent elements return undef, which is interpreted as 0 in numeric context.
  • 50. Fortran 2003 • 2003 • Fortran 2003 • Parameterized derived types • OOP support • Procedure pointers • C interoperability
  • 51. C# • Based on C++ and Java but includes some ideas from Delphi and Visual Basic. • lead designer, Anders Hejlsberg, • Also designed Turbo Pascal and Delphi, which explains the Delphi parts of the heritage of C#. • The purpose of C# is to provide a language for component-based software development, specifically for such development in the .NET Framework.