Chapter 1 Preliminaries Chapter 1 Topics Reasons for

  • Slides: 23
Download presentation
Chapter 1 Preliminaries

Chapter 1 Preliminaries

Chapter 1 Topics • Reasons for Studying Concepts of Programming Languages • Programming Domains

Chapter 1 Topics • Reasons for Studying Concepts of Programming Languages • Programming Domains • Language Evaluation Criteria • Influences on Language Design • Language Categories • Language Design Trade-Offs • Implementation Methods • Programming Environments

Reasons for Studying Concepts of Programming Languages • Increased ability to express ideas •

Reasons for Studying Concepts of Programming Languages • Increased ability to express ideas • Improved background for choosing appropriate languages • Increased ability to learn new languages • Better understanding of significance of implementation • Better use of languages that are already known • Overall advancement of computing

Programming Domains • Scientific applications • Business applications • Artificial intelligence • Systems programming

Programming Domains • Scientific applications • Business applications • Artificial intelligence • Systems programming • Web Software

Language Evaluation Criteria

Language Evaluation Criteria

Evaluation Criteria: Readability • Overall Simplicity • Orthogonality • Data Types • Syntax Design

Evaluation Criteria: Readability • Overall Simplicity • Orthogonality • Data Types • Syntax Design

Evaluation Criteria: Writability • Simplicity and orthogonality • Support for abstraction • Expressivity

Evaluation Criteria: Writability • Simplicity and orthogonality • Support for abstraction • Expressivity

Evaluation Criteria: Reliability • Type checking • Exception handling • Aliasing • Readability and

Evaluation Criteria: Reliability • Type checking • Exception handling • Aliasing • Readability and writability

Evaluation Criteria: Cost • Training programmers to use language • Writing programs • Compiling

Evaluation Criteria: Cost • Training programmers to use language • Writing programs • Compiling programs • Executing programs • Language implementation system • Reliability • Maintaining programs

Evaluation Criteria: Others • Portability • Generality • Well-definedness

Evaluation Criteria: Others • Portability • Generality • Well-definedness

Influences on Language Design • Computer Architecture • Programming Methodologies

Influences on Language Design • Computer Architecture • Programming Methodologies

Computer Architecture Influence • Well-known computer architecture – Von Neumann • Imperative languages –

Computer Architecture Influence • Well-known computer architecture – Von Neumann • Imperative languages – most dominant • because of von Neumann computers

Execution of Machine Code Fetch-execute cycle on a von Neumann architecture computer initialize the

Execution of Machine Code Fetch-execute cycle on a von Neumann architecture computer initialize the program counter repeat forever fetch the instruction pointed by the counter increment the counter decode the instruction execute the instruction end repeat

Programming Methodologies Influences • 1950 s and early 1960 s – machine efficiency •

Programming Methodologies Influences • 1950 s and early 1960 s – machine efficiency • Late 1960 s – people efficiency • Late 1970 s – process-oriented to data-oriented • Middle 1980 s – object-oriented programming

Language Categories • Imperative C, Pascal • Functional LISP, Scheme • Declarative Prolog •

Language Categories • Imperative C, Pascal • Functional LISP, Scheme • Declarative Prolog • Object-oriented Java, C++ • Markup XHTML, XML

Language Design Trade-Offs • Reliability vs. cost of execution • Readability vs. writability •

Language Design Trade-Offs • Reliability vs. cost of execution • Readability vs. writability • Writability (flexibility) vs. reliability

Implementation Methods • Compilation • Pure Interpretation • Hybrid Implementation Systems

Implementation Methods • Compilation • Pure Interpretation • Hybrid Implementation Systems

Compilation • Translate source language into machine language • Compilation process has several phases

Compilation • Translate source language into machine language • Compilation process has several phases – – lexical analysis syntax analysis semantics analysis code generation • Additional Compilation Terminologies – Load module – Linking and loading

Pure Interpretation • No translation • Easier implementation • Slower execution • Often requires

Pure Interpretation • No translation • Easier implementation • Slower execution • Often requires more space

Hybrid Implementation Systems • A compromise between compilers and pure interpreters • An intermediate

Hybrid Implementation Systems • A compromise between compilers and pure interpreters • An intermediate language is used • Faster than pure interpretation

Other Implementation Methodolgies • Preprocessors • Just-in-Time Implementation Systems

Other Implementation Methodolgies • Preprocessors • Just-in-Time Implementation Systems

Programming Environments The collection of tools used in software development Examples: • UNIX •

Programming Environments The collection of tools used in software development Examples: • UNIX • Borland JBuilder • Microsoft Visual Studio. NET

Summary • The study of programming languages is valuable • Important criteria for evaluating

Summary • The study of programming languages is valuable • Important criteria for evaluating programming languages • Major influences on language design • Major methods of implementing programming languages