KEMBAR78
preliminaries, concepts of programming languages | PPT
ISBN 0-321-19362-8
Chapter 1
Preliminaries
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-2
Chapter 1 Topics
• Motivation
• Programming Domains
• Language Evaluation Criteria
• Influences on Language Design
• Language Categories
• Language Design Trade-Offs
• Implementation Methods
• Programming Environments
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-3
Motivation: Why Study Programming
Languages?
• Increased ability to express ideas
• Improved background for choosing appropriate
languages
• Greater ability to learn new languages
• Understand significance of implementation
• Ability to design new languages
• Overall advancement of computing
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-4
Programming Domains
• Scientific applications
– Large number of floating point computations
• Business applications
– Produce reports, use decimal numbers and characters
• Artificial intelligence
– Symbols rather than numbers manipulated
• Systems programming
– Need efficiency because of continuous use
• Scripting languages
– Put a list of commands in a file to be executed
• Special-purpose languages
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-5
Language Evaluation Criteria
• Readability
– The most important criterium
– Factors:
• Overall simplicity
– Too many features is bad
– Multiplicity of features is bad
• Orthogonality
– Makes the language easy to learn and read
– Meaning is context independent
– A relatively small set of primitive constructs can be combined in
a relatively small number of ways
– Every possible combination is legal
– Lack of orthogonality leads to exceptions to rules
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-6
Language Evaluation Criteria
– Readability factors (continued)
• Control statements
• Defining data types and structures
• Syntax considerations
– Identifier forms
– Special words
– Form and meaning
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-7
Language Evaluation Criteria
• Writability
– Factors:
• Simplicity and orthogonality
• Support for abstraction
• Expressivity
• Reliability
– Factors:
• Type checking
• Exception handling
• Aliasing
• Readability and writability
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-8
Language Evaluation Criteria
• Cost
– Categories
• Training programmers to use language
• Writing programs
• Compiling programs
• Executing programs
• Language implementation system
• Reliability
• Maintaining programs
• Others: portability, generality, well-definedness
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-9
Influences on Language Design
• Computer architecture: Von Neumann
• We use imperative languages, at least in part,
because we use von Neumann machines
– Data and programs stored in same memory
– Memory is separate from CPU
– Instructions and data are piped from memory to
CPU
– Basis for imperative languages
• Variables model memory cells
• Assignment statements model piping
• Iteration is efficient
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-10
Von Neumann Architecture
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-11
Influences on Language Design
• Programming methodologies
– 1950s and early 1960s: Simple applications; worry
about machine efficiency
– Late 1960s: People efficiency became important;
readability, better control structures
• Structured programming
• Top-down design and step-wise refinement
– Late 1970s: Process-oriented to data-oriented
• data abstraction
– Middle 1980s: Object-oriented programming
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-12
Language Categories
• Imperative
– Central features are variables, assignment
statements, and iteration
– C, Pascal
• Functional
– Main means of making computations is by
applying functions to given parameters
– LISP, Scheme
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-13
Language Categories
• Logic
– Rule-based
– Rules are specified in no special order
– Prolog
• Object-oriented
– Encapsulate data objects with processing
– Inheritance and dynamic type binding
– Grew out of imperative languages
– C++, Java
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-14
Language Design Trade-Offs
• Reliability vs. cost of execution
• Readability vs. writability
• Flexibility vs. safety
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-15
Layered View of Computer
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-16
Implementation Methods
• Compilation
– Translate high-level program to machine code
– Slow translation
– Fast execution
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-17
Compilation
Process
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-18
Implementation Methods
• Pure interpretation
– No translation
– Slow execution
– Becoming rare
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-19
Pure Interpretation
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-20
Implementation Methods
• Hybrid implementation systems
– Small translation cost
– Medium execution speed
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-21
Hybrid
Implementation
System
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-22
Programming Environments
• The collection of tools used in software
development
• UNIX
– An older operating system and tool collection
• Borland JBuilder
– An integrated development environment for Java
• Microsoft Visual Studio.NET
– A large, complex visual environment
– Used to program in C#, Visual BASIC.NET,
Jscript, J#, or C++

preliminaries, concepts of programming languages

  • 1.
  • 2.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-2 Chapter 1 Topics • Motivation • Programming Domains • Language Evaluation Criteria • Influences on Language Design • Language Categories • Language Design Trade-Offs • Implementation Methods • Programming Environments
  • 3.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-3 Motivation: Why Study Programming Languages? • Increased ability to express ideas • Improved background for choosing appropriate languages • Greater ability to learn new languages • Understand significance of implementation • Ability to design new languages • Overall advancement of computing
  • 4.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-4 Programming Domains • Scientific applications – Large number of floating point computations • Business applications – Produce reports, use decimal numbers and characters • Artificial intelligence – Symbols rather than numbers manipulated • Systems programming – Need efficiency because of continuous use • Scripting languages – Put a list of commands in a file to be executed • Special-purpose languages
  • 5.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-5 Language Evaluation Criteria • Readability – The most important criterium – Factors: • Overall simplicity – Too many features is bad – Multiplicity of features is bad • Orthogonality – Makes the language easy to learn and read – Meaning is context independent – A relatively small set of primitive constructs can be combined in a relatively small number of ways – Every possible combination is legal – Lack of orthogonality leads to exceptions to rules
  • 6.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-6 Language Evaluation Criteria – Readability factors (continued) • Control statements • Defining data types and structures • Syntax considerations – Identifier forms – Special words – Form and meaning
  • 7.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-7 Language Evaluation Criteria • Writability – Factors: • Simplicity and orthogonality • Support for abstraction • Expressivity • Reliability – Factors: • Type checking • Exception handling • Aliasing • Readability and writability
  • 8.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-8 Language Evaluation Criteria • Cost – Categories • Training programmers to use language • Writing programs • Compiling programs • Executing programs • Language implementation system • Reliability • Maintaining programs • Others: portability, generality, well-definedness
  • 9.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-9 Influences on Language Design • Computer architecture: Von Neumann • We use imperative languages, at least in part, because we use von Neumann machines – Data and programs stored in same memory – Memory is separate from CPU – Instructions and data are piped from memory to CPU – Basis for imperative languages • Variables model memory cells • Assignment statements model piping • Iteration is efficient
  • 10.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-10 Von Neumann Architecture
  • 11.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-11 Influences on Language Design • Programming methodologies – 1950s and early 1960s: Simple applications; worry about machine efficiency – Late 1960s: People efficiency became important; readability, better control structures • Structured programming • Top-down design and step-wise refinement – Late 1970s: Process-oriented to data-oriented • data abstraction – Middle 1980s: Object-oriented programming
  • 12.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-12 Language Categories • Imperative – Central features are variables, assignment statements, and iteration – C, Pascal • Functional – Main means of making computations is by applying functions to given parameters – LISP, Scheme
  • 13.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-13 Language Categories • Logic – Rule-based – Rules are specified in no special order – Prolog • Object-oriented – Encapsulate data objects with processing – Inheritance and dynamic type binding – Grew out of imperative languages – C++, Java
  • 14.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-14 Language Design Trade-Offs • Reliability vs. cost of execution • Readability vs. writability • Flexibility vs. safety
  • 15.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-15 Layered View of Computer
  • 16.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-16 Implementation Methods • Compilation – Translate high-level program to machine code – Slow translation – Fast execution
  • 17.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-17 Compilation Process
  • 18.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-18 Implementation Methods • Pure interpretation – No translation – Slow execution – Becoming rare
  • 19.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-19 Pure Interpretation
  • 20.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-20 Implementation Methods • Hybrid implementation systems – Small translation cost – Medium execution speed
  • 21.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-21 Hybrid Implementation System
  • 22.
    Copyright © 2004Pearson Addison-Wesley. All rights reserved. 1-22 Programming Environments • The collection of tools used in software development • UNIX – An older operating system and tool collection • Borland JBuilder – An integrated development environment for Java • Microsoft Visual Studio.NET – A large, complex visual environment – Used to program in C#, Visual BASIC.NET, Jscript, J#, or C++