Historical Development of Java

By Roger Hill,2014-04-24 12:37
12 views 0
Historical Development of Java

CMPS4143 Contemporary Programming Languages

Week 1 lecture 1

What is a programming language?

    - systematic notation by which we describe computational processes to others - notation for description of algorithms and data structures

computational process set of steps solve a problem

computer’s built-in abilities: PRIMITIVE/ constitute Machine Language

    - arithmetic and logical operations

    - I/O

    - Some “control” functions

High-level programming languages less primitive notations/ need system software to translate

Why study programming languages?

     - Linguistic theory states: structure of language defines boundaries of thought ?TRUE?

     - Language can facilitate or impede certain modes of thought

    - A given programming language can influence class of solutions

Benefits of studying languages?

    Computer Scientists

    - Improve ability to develop algorithms

    - Improve existing use of language

    - Increase vocabulary of programming constructs

    - Allow choice of language

    - Easier to learn new language

    - Easier to design new language (user interfaces)

Language Designers/Implementers

    - insights from motivation of language facilities to make implementation tradeoffs

Hardware Architects

    - gain insight into ways machines may better support languages

    - design a semantically coherent machine w/ complete sets of data types and operations

System designers

    - apply to human interfaces

    - JCL’s, DB systems, editors, text formatters, debuggers have many characteristics of a programming


    - Necessary for file systems, linkage editors to interface with programming languages

Software Managers

    - choice of language

    - choice of extension of language or new language and know costs

Early History

1500-3000 B.C. earliest know algorithm on clay tablets in Babylon (near Baghdad, Iraq)

     produced mathematical tables

     solved algebraic equations using an “algorithm”

     at end put “this is the procedure”

     did not have conditional tests (no 0 or negative numbers)

     did have repetition

300 B.C. Euclid Greece

     algorithm for computing GCD of 2 integers (zero still not recognized, so special cases)

     thth19, early 20 century

    1820-1850 Charles Babbage English

     2 machines:

    - Difference Engine: finite differences, repeated additions, math tables

    - Analytical Engine:many principles of modern computer, any calculation

     Store = main memory Mill=ALU barrel = control unit

    TABLE 1.2 on Handout Influences on programming language development

Early Computer programming languages by category


    WWII 30/40s “electronic calculators” to solve numerical problems

     50s symbolic notations/compilation necessary

    1955-57 Backus’ team – developed FORTRAN

    - numerical calculations

    - full-fledged programming language (control structs, cond, I/O statements)

    - to compete w/ assembly made very efficient!

    - Extremely successful

    1958 Fortran II

     Fortran IV

     Fortran 77, 90 backwards compatible

Success of FORTRAN -> fear in Europe of domination of IBM

    - leader Naur of (German Math Society)

    - joined by ACM despite fear

    - ALGOL (Algorithmic Language) 58, 60

    - Standard in “academia”

    - GOALS (4)

    - Close to standard math

    - Useful to describe algorithm

    - Compilable

    - Machine independent (no I/O)

    - Not successful

    - MAJOR IMPACT syntactic notation BNF

Business Languages

    1959 Grace Hopper led development CBL (Common Business Language)

     COBOL (Common Business Oriented Language)

    Revised in 61, 62, standardized in 68, rev. 74, 84

AI Languages


     IPL Info Processing language by Rand Corp (widely known, but use limited)

     John McCarthy of MIT designed LISP (List Processing) for IBM 704 => Scheme and Common Lisp

    - list processing FUNCTIONAL Language

    - usual problems: searching

     text processing => SNOBOL

     Prolog special purpose based on math logic

Systems Languages

     Assembly language

     CPL, BCPL not widespread

     C Unix written mostly in C in 1970s

ROLE of Programming Languages

     Early: efficient design - computers and time expensive vs programmers minor cost

     60s: machines less expensive, programmers more => need portability, maintainability, ease of use

     programming languages evolving

     COBOL dropping => application generators

     APL, PL/1, SNOBOL practically disappeared

     Pascal past prime, but continued in Ada

     Ada ground lost to C++ and Java

     Delphi and C++ Builder

     Fortran revised (for supercomputers)

    Influences: - capabilities of computers

    - applications: now games, PCs

    - programming methods: environment changes, good methods known now - implementation methods -> effect choices of features - theory: deepened understanding of strengths and weaknesses - standards

APP 60s 90s

Business (What if) Cobol Cobol, spreadsheet, C, 4GLs

    Scientific Fortran IV Fortran 90, C++

    System Assembler C++

    AI (searching) Lisp Common Lisp, Prolog, Scheme, DSS

    Publishing Tex, WP, postscript

    Process unix shell

    New paradigms smalltalk, eiffel - OOP

    Web Java, Perl

Historical Development of Java





    Java Java 1 Java 1.2 Java 1.3 Java 1.4 Java 5.0

    1991 1995 1998 2000 2002 2005 Smalltalk-80 1980 Java SE 6.0 2006

    2005 Scheme 1984

Other references:

    Historical Development of Perl

C 1971

awk nawk

    1978 1985

Smalltalk-80 Ruby

    1980 1993 Perl 1.000 1987

     Pearl 5.6.1 Perl 2.000 2001 1988

    Perl 3.000 Perl 4.000 Perl 5.000 Pearl 5.005_50 Pearl 5.6.0

    1989 1991 1994 1998 2000



    Other references:

Report this document

For any questions or suggestions please email