Evolution of programming languages
Upcoming SlideShare
Loading in...5
×
 

Evolution of programming languages

on

  • 2,425 views

Presentation of the evolution of Programming Languages

Presentation of the evolution of Programming Languages

Statistics

Views

Total Views
2,425
Views on SlideShare
2,425
Embed Views
0

Actions

Likes
2
Downloads
26
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • The most famous early imperative high-level languages are FORTRAN, COBOL and ALGOL 60. The first two are still in wide use today (albeit in vastly different forms). FORTRAN is an imperative language focussing on scientific applications. COBOL is imperative (and verbose) intended for business applications. ALGOL 60 strongly influenced many later languages.
  • Typical applications include connecting other applications together, text processing and Web page generation. All of these languages have an imperative core but also have features from other paradigms (most notably object-oriented).

Evolution of programming languages Evolution of programming languages Presentation Transcript

  • Evolution of programming languages: From Start to the Present By: Bryan Dadiz 1
  • Overview Prehistory of programming languages The story of the programmers of Babylon The story of Mohammed Al-Khorezmi The story of Augusta Ada, Countess of Lovelace Generation of programming languages Genesis of high-level languages Third Generation Fourth Generation Fifth Generation
  • Babylon Cuneiform writing was used in the Babylon, founded by Hammurabi around 1790 BC Many Babylonian clay tablets survive: poems and stories contracts and records astronomy math, base 60 3 A famous Babylonian math tablet (Plimpton 322) involving Pythagorean triples, a2 +b2 =c2 -- with a mistake! View slide
  • Babylonian Numbers The two Babylonian digits for “1” and “10”, written together, signify a number base 60 The exponent is not given; the reader must figure it out from the context 4 706010601 01 =×+× 6 110 16010601 =×+× − ii 6010601 1 ×+× + 1,10 = View slide
  • A Babylonian Program Written language to describe computational procedures: 5 A cistern. The length equals the height. A certain volume of dirt has been excavated. The cross-sectional area plus this volume comes to 1,10. The length is 30. What is the width? You should multiply the length, 30, by … Translation by Donald Knuth
  • Programming Language No variables Instead, numbers serve as a running example of the procedure being described “This is the procedure” Programming is among the earliest uses to which written language was put 6
  • Prehistory of programming languages The story of Mohammed Al-Khorezmi 7
  • Baghdad Near ancient Babylon Founded around 762 A great center of scholarship, art and poetry 780-850: Mohammed Al-Khorezmi, a court mathematician, lived and wrote Two little books… 8
  • Algebra Kitâ al-jabr wa'l-muqabâla Translated into Latin, spread throughout Europe Used as a mathematics text in Europe for eight hundred years 9
  • Algorithms The original is lost Latin translation: Algorthmi de numero Indorum Algorithms for computing with Hindu numerals: base-10 positional system with 0 A new technology (data structure and algorithms) Strongly influenced medieval European mathematics 10
  • Other Early Written Algorithms Euclid, 300 BC: an algorithm for computing the GCD of two numbers Alexander de Villa Dei, 1220 AD: Canto de Algorismo, algorithms in Latin verse Not programming languages: natural language (even poetry) plus mathematics 11
  • Prehistory of programming languages The story of Augusta Ada, Countess of Lovelace 12
  • Augusta Ada Daughter of George Gordon, Lord Byron Early 1800’s in England (as elsewhere) women were generally denied education, especially math and science Ada studied math with a private tutor (as an antidote to feared Byronic tendencies) Married at 19 (Lady Lovelace), 3 children 13
  • Charles Babbage English mathematician Inventor of mechanical computers: Difference Engine, construction started but not completed (until a 1991 reconstruction) Analytical Engine, never built 14 I wish to God these calculations had been executed by steam! Charles Babbage, 1821
  • Analytical Engine Processing unit (the Mill) Memory (the Store) Programmable (punched cards) Iteration, conditional branching, pipelining, many I/O devices 15
  • Sketch of the Analytical Engine A paper by Luigi Menabrea Published 1843 Translated, with explanatory notes, by A.A.L. Algorithms in a real programming language: the machine language of punched cards for the Analytical Engine 16
  • Not Just For Numbers 17 The bounds of arithmetic were however outstepped the moment the idea of applying the cards had occurred; and the Analytical Engine does not occupy common ground with mere "calculating machines." … In enabling mechanism to combine together general symbols in successions of unlimited variety and extent, a uniting link is established between the operations of matter and the abstract mental processes of the most abstract branch of mathematical science. A.A.L.
  • Why look at the history? • To understand PL evolution which adds to a persons understanding to PL. • we can see that most features are general and are available in many languages. • We say that many features of “modern” languages have actually been around for many years. 18
  • Genesis of high-level languages In the early days computers were programmed directly in hardwires. Sometimes the instructions were written directly as numbers (machine language). More conveniently, they were written in a human- readable version of machine code that was automatically translated by an assembler. Machine and assembly language are sometimes referred to as the first two generations of programming language. 19
  • The third generation In the 1950s and 1960s programmers began to realise that were very low level, tedious to write, and only usable on a specific type of computer. The third generation of languages is the beginning of the high-level languages. The main advance to become portable to more than one type of hardware. High-level languages require some form of compiler or interpreter to map the language down to the hardware. 20 Similar to everyday English and use mathematical notations
  • Forth & fifth generation Forth-generation languages Also uses English-like statements but is a nonprocedural language Used to access databases Used to build “fill-in-the-blank” input forms Fifth-generation languages - Provides a visual graphical interface for creating the source code 21
  • Early high-level languages The most famous early imperative high-level languages are FORTRAN, COBOL and ALGOL 60. FORTRAN COBOL ALGOL 60 22
  • A different view of the world • Other early languages pioneered non-imperative paradigms. • Lisp emerged in the 1960s as a pure functional language although it absorbed some imperative features as time went on. • APL is also functional in nature. Its strength is very high-level operations that use matrices. • SNOBOL was an early language designed for manipulating strings. 23
  • Advances in high-level languages • The 1970s brought many new languages, building on experiences with the early ones. • Pascal which is an ALGOL-like imperative language that gained a vast following primarily due to its utility for teaching programming. • Simula which is the first mainstream language to have object-oriented features (with an imperative core). 24
  • Non-imperative paradigms • Smalltalk is the most famous object-oriented language. It took some of the concepts of Simula. • Prolog pioneered the idea of logic programming where we can program with relations. Prolog is also one of the most popular declarative languages, so-called because they let you specify what you want to happen rather than how it should happen. 25
  • Modern languages • C is arguably the most widely used imperative language today. • Various languages have branched away from C by adding object-oriented features. The most obvious are C++, Java and C#. • Delphi is an object-oriented descendant of Pascal. • Modern functional languages like ML and Haskell have built on the concepts pioneered in Lisp. In many ways they are also declarative. 26
  • Scripting languages These languages are designed for rapid application development and deployment, but are not really suitable for large programs due to inefficiency and lack of safety features such as strong typing. Widely used scripting languages are Perl, Python and Tcl. 27
  • FORTRAN (1954-1957) IBM “FORmula TRANslating system” for IBM 704 computer Major emphasis on compiler producing efficient code Became the major scientific/engineering programming language Much evolution: FORTRAN II, FORTRAN IV, FORTRAN 66, FORTRAN77, FORTRAN90 28
  • Overview of FORTRAN IV Column 1 used to indicate comment lines Column 2-5 used for line numbers (optional) Data: integer, real, arrays (no chars, records or pointers!) Variable declararions are optional (variables starting with I..N are integer, others are real 29
  • Overview of FORTRAN IV… EQUIVALENCE declaration causes variables to be aliased (dangerous!) 30
  • COBOL (1959-1960) • Common Business-Oriented Language • Developed in 1959 by a group of computer professionals called the Conference on Data Systems Languages (CODASYL). • COBOL was the first programming language whose use was mandated by the US Department of Defense 31
  • COBOL… English – like verbose syntax (Goal: Human readability) Largely ignored by the academic community And if you thought COBOL was dead… Think again.. Object-oriented COBOL is a subset of COBOL 97, which is the fourth edition in the continuing evolution of ANSI/ISO standard COBOL 33
  • ALGOL 60 (1958-1960) • ALGOrithmic Language: general expressive language for describing algorithms • Used widely in Europe and academia in USA • Modern syntax: defined using BNF, structure statements, with begin/end pairs • Type declarations required for all variables 34
  • ALGOL60… Introduced recursion, call-by-name and call-by-value Required stack-based runtime environment Huge influence on later languages: Pascal, C, Module- 2, Ada etc 36
  • LISP (1956-1962) • The first functional language • The first language to include garbage collection • Syntax was radically different – lots of parentheses • Efficiency not a huge concern. Ideas more important • Still heavily used today for AI research and applications 37
  • 39 Reverse a list (Defun reverse (x) (cond ((null x) NIL) (T (append (reverse (rest start)) (list (first start))))))
  • Another Example
  • 1960’s PL/1 (1963-1966) Intended as an extension of FORTRAN “The language to end all languages” A huge language containing many features, with complex interactions and many special cases and exceptions Compilers were huge, slow and unreliable 41
  • 1960’s.. Simula (1963-1966) • The first object-oriented language • An extension of ALGOL60, intended for writing simulations • Introduced classes and inheritance ALGOL68 • A highly general, orthogonal language with no restrictions • Complex to implement 42
  • BASIC (1964) Intended as a simple language for interactive use Easy to implement, even on small machines Widely used on PC’s but many different versions The term “spaghetti code” commonly used to describe code written in BASIC Spaghetti code is a pejorative term for source code that has a complex and tangled control structure, especially one using many GOTOs, exceptions, threads, or other "unstructured" branching constructs. 43
  • Sample Spaghetti Code 10 i = 0 20 i = i + 1 30 PRINT i; " squared = "; i * i 40 IF i >= 10 THEN GOTO 60 50 GOTO 20 60 PRINT "Program Completed." 70 END
  • 1970’s: Humility and Thoughtfulness A new emphasis on simplicity and underlying theory “There are two ways to of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And another way is to make it so complicated that there are no obvious deficiencies” C.A. Hoare 45
  • 1970’s PASCAL (1972) • Small simple ALGOL-based language for teaching • Elegant data structuring: records, arrays, files, sets • Slogan: Algorithms + Data Structures = Programs • Became the most taught language in universities 46
  • 1970’s • C (1972) • Low-level language for writing an operating system • Very popular, but why? “Well you know, C isn’t hard: void (*(*f[])())() declares f as an array of unspecified size, of pointers to functions that return pointers to functions that return void…I think” “Lisp in action is like a finely choreographed ballet. Ada in action is like a waltz of drugged elephants. C in action is like a sword dance on a freshly waxed floor.” Chris Ross 47
  • 1970’s • Prolog (1972-1980) – The first logic language – Efficient compilers only available in late 1980s and 1990s • Smalltalk (1972-1980) – The first pure object-oriented language – Included a powerful interactive development, with windowing system, menus and mouse. 48
  • 1980’s Consolidation and Declarative Languages Several new functional languages Much research on variants of logic programming Implementation of functional/logic languages improves Renewed interest in object-orientation (esp. 1986 onwards 49
  • 1980’s… Ada (1980-1983) Large and complex Pascal-like language by US department of Defense Strengths include: machine-independent arithmetic, generic packages, concurrency and exceptions Ada95 adds object-orientation 50
  • 1980’s… Modula-2 An improved Pascal with good abstraction features Became a popular teaching language at universities 51
  • 1980’s… C++ (1980-1990) C extended with object-orientation A comprise language to enable C compatibility Currently, the most widely used object-oriented language 52
  • 1980’s… Eiffel A clean powerful object-oriented language, somewhat Ada-like Includes some powerful program correctness facilities (pre/post-conditions, class invariants) 53
  • 1990’s JAVA Object-oriented language that produces applets. Developed by Sun Microsystems. Runs on multiple (all?) platforms. Developed for use on the Internet. 54
  • 1990’s PERL (1990) Practical Extraction and Reporting Language Pathologically Eclectic Rubbish Lister Scripting language “Duct tape of the internet” 55
  • 1990’s.. PHP (1994-1995) Perl cgi program called “Personal Homepage Tools” Used to create dynamic web pages Nowadays also known as “PHP: Hypertext Pre- processor.” 56
  • 1990’s… Visual Basic • Proprietary language owned by Microsoft • Good for creating quick and simple interface to other Microsoft products 57
  • 58 End Thank you very much!