Programski jeziki

Kratka zgodovina

         50s, 60s: Exciting Time

        Invention of: assemblers, compilers, interpreters, first high-level languages, structured programming, abstraction, formal syntax, object-oriented programming, LISP, program verification

         70s, 80s, 90s: Boring Time

        Refinement of earlier ideas, better implementations, making theory more practical

        A few new/refined ideas: functional languages, data abstraction, concurrent languages, data flow,  type theory, etc.

Kaj vodi razvoj jezikov

         Advances in Theory

        BNF Grammars ® Algol60

        Lambda Calculus ® LISP

        Type theory ® CLU, ML

         Changes in computing environment

        Analytical engine ® first programming system

        von Neumann Machines ® Procedural Languages

        Parallel Machines ® Functional Languages

        Large scale networks ® ???

         Changes in desired programs

        Calculating missile trajectories ® Assembly

        Scientific computations ® FORTRAN

        Business computations ® COBOL, PL/I

        Larger programs ® Data languages, Components

        Even larger programs ® ???

        Security requirements ® ???

Zgodovina

         Assemblers, Macro Processors

         Pseudo-Code Interpreters

        Wilkes, Wheeler & Gill, 1951 (Appendix D)

         First Compiler: Grace Murray Hopper, 1950s

         Automatic Programming [A-2 compiler, 1953]

        Symbolic addresses, decimal numbers

         Laning and Zierler’s algebraic system

        First algebraic compiler

FORTRAN (Backus, 1954)

         Radical idea: computers were more expensive than programmers – if performance suffered, would be failure

         Experience with machine code hacking and automatic programming systems convinced programmers efficient code could not be generated automatically

         Used familiar mathematical notations

Structured Languages: Algol (also called: Procedural, Imperative, etc.)

         captured ideas of FORTRAN in an elegant way – types, conditionals, loops; still limited abstraction from machine

         Algol60:

        First language designed with principles in mind

         Explicit goal: language for publishing algorithms