preliminaries, concepts of programming languages

mjmansoori54 5 views 22 slides Oct 17, 2025
Slide 1
Slide 1 of 22
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22

About This Presentation

Motivation
Programming Domains
Language Evaluation Criteria
Influences on Language Design
Language Categories
Language Design Trade-Offs
Implementation Methods
Programming Environments


Slide Content

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++