Gary MarsdenSlide 1University of Cape Town A brief history of programming languages Gary Marsden Semester 2 – 2000.

Slides:



Advertisements
Similar presentations
Agenda Definitions Evolution of Programming Languages and Personal Computers The C Language.
Advertisements

1 Scheme and Functional Programming Aaron Bloomfield CS 415 Fall 2005.
Programming Languages and Paradigms
Chapter 8 High-Level Programming Languages. 8-2 Chapter Goals Describe the translation process and distinguish between assembly, compilation, interpretation,
Programming Languages Marjan Sirjani 2 2. Language Design Issues Design to Run efficiently : early languages Easy to write correctly : new languages.
CS ExCo Advanced in Topics Object-Oriented Programming.
Gary MarsdenSlide 1University of Cape Town Statements & Expressions Gary Marsden Semester 2 – 2000.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is.
1 ) Definition 2) Note on structured and modular programming, and information hiding 3) Example imperative languages 4) Features of imperative languages.
High-Level Programming Languages
Reasons to study concepts of PL
Programming Languages Structure
ISBN Lecture 01 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Lecture 01 Topics Motivation Programming.
6/27/2015G. Levine1 PROGRAMMING LANGUAGES Text: Programming Languages, Design and Implementation Pratt and Zelkowitz 4 th ed. Prentice-Hall.
Programming Language Concepts
CS 415: Programming Languages Chapter 1 Aaron Bloomfield Fall 2005.
BIT Presentation 6. Contents GENERATIONS OF LANGUAGES COMPILERS AND INTERPRETERS VIRTUAL MACHINES OBJECT-ORIENTED PROGRAMMING SCRIPTING LANGUAGES.
Introduction to Computer Programming itc-314
1 Programming Language Concepts Ethics Why study concepts of programming languages (PLs)? PL categories Influences on PL design Problem areas & needs that.
Programming Languages CPS120: Introduction to Computer Science Lecture 5.
CSE 425: Intro to Programming Languages and their Design A Few Key Ideas No particular language is a prerequisite for this course –However you should be.
Gary MarsdenSlide 1University of Cape Town Functional programming in Clean Gary Marsden Semester 2 – 2000.
Chapter 8 High-Level Programming Languages (modified by Erin Chambers)
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
CS 363 Comparative Programming Languages
COMPUTER PROGRAMS AND LANGUAGES Chapter 4. Developing a computer program Programs are a set (series) of instructions Programmers determine The instructions.
Gary MarsdenSlide 1University of Cape Town Principles of programming language design Gary Marsden Semester 2 – 2001.
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
1 Programming Language History and Evolution In Text: Chapter 2.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 Reasons for Studying Concepts of Programming Languages Increased ability to express ideas Improved.
Chapter 6 Programming Languages (1) Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Fortran Fortran – Formula Translation –Developed by John Backus (IBM) in the mid 1950s. –It was a team effort and the design goal was to produce a translation.
Programming Language 1. Programming language A programming language is a machine-readable artificial language designed to express computations that can.
The Evolution of Programming Languages Day 2 Lecturer: Xiao Jia The Evolution of PLs1.
Theory of Programming Languages Introduction. What is a Programming Language? John von Neumann (1940’s) –Stored program concept –CPU actions determined.
How Are Computers Programmed? CPS120: Introduction to Computer Science Lecture 5.
FORTRAN History. FORTRAN - Interesting Facts n FORTRAN is the oldest Language actively in use today. n FORTRAN is still used for new software development.
Programming Languages
int k = Integer.MAX_VALUE; k++; int k = Integer.MAX_VALUE; k++; What happens when the following code executes? byte b = someFile.readByte(); b = (byte)(b.
UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering CSCE 190 Programming Language Paradigms Fall 2014
Introduction to Computer Programming itc-314 Lecture 04.
Programming Language Theory 2014, 1 Chapter 1 :: Introduction Origin : Michael L. Scott School of Computer & Information Engineering,
C++ Programming Chapter 1 Programming & Programs.
a medium allowing humans and computers to communicate an abstraction of the real world a notation for expressing algorithms the set of all syntactically.
History. Development Driven by Function Functions of a Programming Language –To describe computation for use by computers –To describe computation and.
Language Paradigms CS655.
Programming Language History and Evolution
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Zuse’s Plankalkül – 1945 Never implemented Problems Zuse Solved
Concepts of Programming Languages
Why study programming languages?
PROGRAMMING LANGUAGES
CSCI-235 Micro-Computer Applications
Programming Languages and Translators
Programming Language History and Evolution
CSC128 FUNDAMENTALS OF COMPUTER PROBLEM SOLVING
Ada – 1983 History’s largest design effort
Programming Languages
Programming Language Design
Programming Languages 2nd edition Tucker and Noonan
Von Neumann Architecture
Principles of Programming Languages
Overview of Programming Paradigms
Lecture 8 Programming Paradigm & Languages. Programming Languages The process of telling the computer what to do Also known as coding.
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Programming Languages, Preliminaries, History & Evolution
Presentation transcript:

Gary MarsdenSlide 1University of Cape Town A brief history of programming languages Gary Marsden Semester 2 – 2000

Gary MarsdenSlide 2University of Cape Town What is a programming language?  Originally, computers were hard-wired to perform one task only  Von Neumann realised that instructions could be stored with data, making computers general purpose  “Machine language” was therefore the first programming language

Gary MarsdenSlide 3University of Cape Town Low level  Originally, languages were bit patterns (1 st generation) –  Eventually, mnemonics were used to produce a human readable version of the above –LDA (2), #45  At least this is now readable by humans as well as machines

Gary MarsdenSlide 4University of Cape Town Moving from low level  As humans programmed in low level languages, it became apparent to them that they were expressing the same ideas over and over; e.g. iteration  Low level languages could not express such concepts  Furthermore conceptually identical programs looked radically different as LLL are closely tied to individual machine architectures

Gary MarsdenSlide 5University of Cape Town Becoming abstract  It became clear that programming languages would need to express the types of abstractions humans dealt with  This required languages to be come more human readable, hence the term –high level language  These HLLs need to be translated into a LLL to be executed – more later.

Gary MarsdenSlide 6University of Cape Town What abstractions  What are the abstractions which people want?  There are two basic types –Control Abstractions –Data Abstractions  We can examine these abstractions in terms of –Basic abstractions –Structure abstractions –Unit abstractions

Gary MarsdenSlide 7University of Cape Town Basic Data abstractions  The most basic data abstraction is the variable  Variables have a type (e.g. integer, real)  Variables are allocated a name during declaration –var x: integer ; (Pascal/Modula-X) –int x; (C/C++/Java) –Dim x as Integer (Visual Basic)

Gary MarsdenSlide 8University of Cape Town Structure Data Abstractions  Data structures allow related data types to be collected together and dealt with as a unit  Common to most languages is the array –a: array [1..10] of integer; (Pascal) –INTEGER a(10) (Fortran) –int a[10]; (C/C++/Java)

Gary MarsdenSlide 9University of Cape Town Unit Data Abstractions  Especially useful for programming in the large, unit abstractions allow grouping (and abstraction) of everything which deals with one data type  These were originally called abstract data types (Clean, Modula-2) but you would know them as objects –Package (Ada)

Gary MarsdenSlide 10University of Cape Town Basic Control Abstractions  Basic abstractions are those that combine a few machine instructions into a HLL equivalent –GOTO statement (BASIC, FORTRAN) replacing “Jump” instructions –Assignment statement (all imperative languages) replacing memory->register->memory statements := (Pascal derivatives) = (C derivatives) put the value of field “x” into field “y” (HyperTalk)

Gary MarsdenSlide 11University of Cape Town Structured control abstractions - branching  At a higher level than GOTO is the notion of a conditional branch  This can be an “ if..then..else ” or a “ switch ” statement  When should one be used in preference to the other?  What about dangling elses?

Gary MarsdenSlide 12University of Cape Town Structured control abstractions – iteration  Within imperative programming there is the idea of repeating code a number of times  This may be a fixed number of times –for loops  Or may depend on a condition –while loops –until loops  Or may be infinite –LOOP..EXIT..END (Modula-2)

Gary MarsdenSlide 13University of Cape Town Structured control abstractions – packages  Originally, there were labelled subroutines – execution jumped to these code blocks  The idea evolved to functions and procedures (and event handlers) which can have –declarations with optional parameters –calls or invocations, where they can be passed –arguments, or actual parameters

Gary MarsdenSlide 14University of Cape Town Unit Control Abstractions  Really, a unit control abstraction suggests different chunks of program which can run independently  Java has threads, but other languages have co-routines –Process (Modula-2) –Task (Ada)  Of course, Clean doesn’t require explicit specification of this

Gary MarsdenSlide 15University of Cape Town History  Now that we have looked at the key abstractions of programming languages, it is worth looking at where they came from and how they developed

Gary MarsdenSlide 16University of Cape Town FORTRAN  The first high level language was developed at IBM by John Backus (important chap) in 1957  Name stands for FORmula TRANslation  Is still around as FORTRAN90 because –compilers are very efficient –only language engineers learn  Introduced –arrays –for loops –branching if statements

Gary MarsdenSlide 17University of Cape Town COBOL  COmmon Business Oriented Language, developed by the DoD in 1960 by Grace Hopper  Designed to keep track of lots of data (network database model)  Verbose language which could not specify complex calculation, but did provide –record structure –separation of data specs from code –advanced formatting

Gary MarsdenSlide 18University of Cape Town Algol 60  ALGOrithmic Language was designed by committee in 1960  Aimed at allowing algorithms to be expressed  Influence felt in every language  Introduced blocks first structured statements type declarations call-by-value stack based run time implementation

Gary MarsdenSlide 19University of Cape Town Lisp  LISt Processing language was written by John McCarthy in late 50’s  McCarthy was a big figure at MIT  Aimed at list processing as a tool for AI  Based on lambda calculus – not Von Neumann  Introduced run time environment garbage collection

Gary MarsdenSlide 20University of Cape Town The sixties  The 4 languages we looked at have had tremendous impact on subsequent language development  In the sixties it became popular to design your own language and there followed hundreds of (thankfully) defunct languages  We shall briefly look at the exceptions

Gary MarsdenSlide 21University of Cape Town PL/1  IBM decided to create the definitive programming language – one language for all purposes  Consequently they created a language with many advanced concepts, such as concurrency and exceptions.  As these concepts were not well understood, implementations were slow and unreliable  Through market domination, IBM made PL/1 a ‘success’ and still support it

Gary MarsdenSlide 22University of Cape Town BASIC  Beginners All Purpose Symbolic Language started life as a teaching alternative to FORTRAN  Designed at Dartmouth college for an interactive time sharing system  Hence it became the de-facto standard on interactive terminals  Still hugely popular thanks to Microsoft  Dijkstra has some thoughts on the language

Gary MarsdenSlide 23University of Cape Town Dijkstra on Basic “It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of recognition.”

Gary MarsdenSlide 24University of Cape Town Other oddities  Although SNOBOL is no longer with us, its children are –It was the first language to process strings, giving us the joys of awk and perl.  Simula67 was created as a superset of Algol60 in Norway –Built for programming simulations, it was the first language to group data and functions together in a “class” –It is widely credited as the first object-oriented language

Gary MarsdenSlide 25University of Cape Town The seventies  The seventies was really a reaction to the confusion of the sixties  Languages designers sought to re-think language design  This led to ‘lean’ languages like –Pascal – derived from Algol-W as a concise powerful teaching language –C – again, an Algol derivative, this time aimed at being a small clean system implementation language (greatly helped by the success of Unix)

Gary MarsdenSlide 26University of Cape Town The eighties  As large programming tasks became common, language design was driven to manage complexity  The eighties also saw a renewed interest in alternative programming paradigms, resulting in languages like –Prolog –Scheme –SQL

Gary MarsdenSlide 27University of Cape Town ADA  Ada was commissioned by the US DoD. All DoD projects now need to be written in Ada.  Compilers need to be accredited – an expensive process involving men in dark suits with libraries of test programs  Implemented abstract data type mechanism, called a ‘package’  Had exception handling and concurrent execution

Gary MarsdenSlide 28University of Cape Town Object orientation  ADT languages eventually gave way to object-oriented languages  The first of these was really SmallTalk, designed by Alan Kay at XEROX PARC  These ideas were developed in two ways –Shoehorned into existing languages – C++, Objective-C –Developed into elegant but incredibly inefficient languages – Eiffel

Gary MarsdenSlide 29University of Cape Town Generations  You will hear languages referred to as being from a particular “generation”  This is an inexact classification, but is roughly as follows –First generation languages are assembly langauges –Second generation are really COBOL and FORTRAN1, which have no high level abstraction –Third generation are languages like C, Pascal, C++ etc. –Fifth generation languages are very high level, basically Prolog –I doubt there will be a widely accepted 6 th generation

Gary MarsdenSlide 30University of Cape Town Fourth generation  Missing from the last slide is the fourth generation of languages  This group includes all high level application languages. Examples include –macro languages –SQL  There has been almost no academic study of this generation, as the language design people see them as a subset of 3GL’s  They are worth studying from a usability aspect

Gary MarsdenSlide 31University of Cape Town