Download View

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Indentation style wikipedia , lookup

Subroutine wikipedia , lookup

Name mangling wikipedia , lookup

Flow-based programming wikipedia , lookup

Stream processing wikipedia , lookup

Join-pattern wikipedia , lookup

Program optimization wikipedia , lookup

One-pass compiler wikipedia , lookup

Logic programming wikipedia , lookup

Compiler wikipedia , lookup

C++ wikipedia , lookup

Go (programming language) wikipedia , lookup

Control flow wikipedia , lookup

Falcon (programming language) wikipedia , lookup

History of compiler construction wikipedia , lookup

Functional programming wikipedia , lookup

Interpreter (computing) wikipedia , lookup

Programming language wikipedia , lookup

Reactive programming wikipedia , lookup

Object-oriented programming wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Structured programming wikipedia , lookup

Transcript
Programming Languages
Structure
• Introduction
Slide 1
Text/References
• Robert W. Sebesta, “Concepts of Programming
Languages”, Fourth Edition Addison-Wesley
(1999).
• T.W. Pratt and M.V. Zelkowitz, “Programming
Languages – Design and Implementation”
Fourth Edition, Prentice-Hall (2001).
• Ravi Sethi, “Programming Languages Concepts and Constructs” Second Edition,
Addison-Wesley (1996).
Slide 2
Course Assessment
• Mid-term Exam 30%
• Project
30%
• Final exam
40%
Slide 3
Why study Programming Language Concepts?
• Increased capacity to express ideas
• Improved background for choosing
appropriate languages
• Increased ability to learn new languages
• Better understanding of the implementation
of concepts
• Increased ability to design new languages
Slide 4
Program - Definitions
• A program is a description of a set of actions
that we want a computer to carry out.
• A program is a model of some process in the
real or mathematical world.
• A program is a sequence of instructions for a
machine to perform a specific task.
• A notational system for describing
computation in machine-readable and humanreadable form
Slide 5
Programming Domains
• Scientific: Heavily based on numerical algorithms
(Fortran, C)
• Business Applications: Storage, retrieval, and
formatting of data, reporting. (COBOL)
• Artificial Intelligence: Symbolic computing, List
directed processing (LISP, Prolog)
• Systems Programming: Fast, Low level features (C)
• Internet: Web based programming (Perl, Java)
• Simulation: Process modeling (MATLAB, GPSS)
Slide 6
Programming Paradigms: 1. Imperative
• Statement oriented languages
• Every statement changes the machine state
• Computation is expressed by a sequence of
actions.
• Heavily based on von Neumann architecture
• Provides variables, assignments, and
iterative repetitions.
• Examples: Fortran, C
Slide 7
Programming Paradigms: 2. Declarative
• Problem specification using relations or
functions.
• Functional programming (applying
functions to given parameters).
• Logic programming (deductive reasoning,
rule based)
• Examples: LISP, ML, Haskell, Prolog
Slide 8
Programming Paradigms: 3. Concurrent
• Parallel execution of processes.
• Multi-tasking or multi-threading primitives.
• Inter process communication and
synchronization.
• Helps in speeding up the execution of
parallel algorithms
• Examples: Concurrent C, Java, Fortran-90
Slide 9
Programming Paradigms: 4. Object Oriented
• Based on the concept of data abstraction.
• Uses encapsulation (data hiding)
• Supports inheritance (software reuse)
• Suitable for programming in the large.
• Examples: C++, Java, Smalltalk, Eiffel
Slide 10
Programming Paradigms: 5. Scripting
• Contains a set of commands (scripts) to be
executed.
• Works in conjunction with a larger
application, or are interpreted.
• Examples: Perl, Javascript.
Slide 11
Language Evaluation Criteria
• Readability
• Writability
• Reliability
• Cost
Slide 12
Readability
• Simplicity (Small number of basic components, less
amount of feature multiplicity, restricted operator
overloading).
• Limited Orthogonality (Ways by which primitive
constructs can be combined).
• Control Structures (Structured programming)
• Data types and structures (Arrays, records..)
• Syntax design (Closeness to intended purpose)
Slide 13
Writability
• Simplicity/Orthogonality
• Support for abstraction (process abstraction
and data abstraction)
• Expressivity (convenient ways of
specifying computation)
Slide 14
Reliability
• Type checking (Compile-time checking of
types of variables)
• Exception handling (Ability to intercept
errors, take corrective measures and
continue).
• Restricted aliasing (Multiple names
associated with the same memory cell).
Slide 15
Cost
•
•
•
•
Cost of training
Cost of compiling (Compilation time)
Cost of execution (Optimization)
Cost of language implementation
(Compiler, hardware etc).
• Cost of maintenance (Repairs, changes and
extensions)
Slide 16
Implementation Methods 1. Compilation
Source Program
Machine Language
Fetch-Execute
Machine
• Source programs are translated to machine language
Slide 17
Implementation Methods 1. Compilation
Source Program
Lexical Analyzer
Lexical units
Syntax Analyzer
Parse trees
Symbol Table
Intermediate Code
Generator
Optimization
Intermediate code
Code Generator
Machine code
Slide 18
Implementation Methods 2. Pure Interpretation
Source Program
Fetch-Execute
Interpreter
Virtual Machine
Machine
• Source programs are directly interpreted by another program
without any translation.
Slide 19
Implementation Methods 3. Hybrid Implementation
• Compilation followed by interpretation.
• Perl (Compiled to detect errors before
interpretation)
• Java (Compiled to platform independent
byte codes, and interpreted by the JVM)
Slide 20
Programming Environments
• Collection of tools used in the development
of software.
• Consists of a file system, a text editor, a
linker, a compiler, a debugger, and
development tools.
• Helps increase productivity and quality.
• Examples: Borland C++, Visual C++,
Visual J++
Slide 21