01-introduction plc
01-introduction plc
Lecture 1 - Introduction
Patrick Donnelly
Spring 2014
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 1 / 46
Textbook
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 2 / 46
Administrivia
Website:
http://nisl.cs.montana.edu/~pdonnelly/CSCI305/
Reading:
Chapter 1
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 3 / 46
A good programming language is a conceptual universe
for thinking about programming.
A. Perlis
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 4 / 46
Reasons for Studying Programming Languages
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 5 / 46
Principles
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 6 / 46
Syntax
Definition
The syntax of a programming language is a precise description of all
its grammatically correct programs.
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 7 / 46
Names
Various kinds of entities in a program have names:
variables
types
functions
parameters
classes
objects
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 8 / 46
Names
Various kinds of entities in a program have names:
variables
types
functions
parameters
classes
objects
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 8 / 46
Types
Definition
A type is a collection of values and a collection of operations on those
values.
Definition
A language’s type system can help to:
Determine legal operations
Detect type errors
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 9 / 46
Semantics
Definition
The meaning of a program is called its semantics.
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 10 / 46
Paradigms
Definition
A programming paradigm is a pattern of problem-solving thought that
underlies a particular genre of programs and languages.
Imperative
Object-oriented
Functional
Logic
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 11 / 46
Imperative Paradigm
Follows the classic von Neumann-Eckert model:
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 12 / 46
The von Neumann-Eckert Model
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 13 / 46
Object-oriented (OO) Paradigm
An OO Program is a collection of objects that interact by passing
messages that transform the state.
Example OO languages:
Smalltalk
Java
C++
C#
Python
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 14 / 46
Functional Paradigm
Functional programming models a computation as a collection of
mathematical functions.
Input = domain
Output = range
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 15 / 46
Logic Paradigm
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 16 / 46
Special Topics
Concurrency:
Correctness:
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 17 / 46
On Language Design
Design Constraints:
Computer architecture
Technical setting
Standards
Legacy systems
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 18 / 46
On Language Design
Design Constraints:
Computer architecture
Technical setting
Standards
Legacy systems
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 18 / 46
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 19 / 46
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 20 / 46
Language Design Trade-Offs
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 21 / 46
Compilation
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 22 / 46
Compilation
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 22 / 46
Compilation
Compilation process has several phases:
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 23 / 46
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 24 / 46
Von Neumann Bottleneck
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 25 / 46
Pure Interpretation
Interpreter – executes instructions on a virtual machine
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 26 / 46
Pure Interpretation
Interpreter – executes instructions on a virtual machine
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 27 / 46
Hybrid Implementation Systems
Use: Small and medium systems when efficiency is not the first
concern
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 28 / 46
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 29 / 46
Just-in-Time Implementation Systems
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 30 / 46
Preprocessors
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 31 / 46
Characteristics of a Successful Language
Reliability
Support
Abstraction
Orthogonality
Efficient implementation
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 32 / 46
Characteristics of a Successful Language
Reliability
Support
Abstraction
Orthogonality
Efficient implementation
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 33 / 46
Simplicity and Readability
Simple syntax:
e.g., C/C++/Java vs Python
Benefits:
Ease of learning
Ease of programming
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 34 / 46
Characteristics of a Successful Language
Reliability
Support
Abstraction
Orthogonality
Efficient implementation
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 35 / 46
Clarity about Binding
A language element is bound to a property at the time that property is
defined for it.
Definition
A binding is the association between an object and a property of that
object.
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 36 / 46
Clarity about Binding
A language element is bound to a property at the time that property is
defined for it.
Definition
A binding is the association between an object and a property of that
object.
Examples
a variable and its type
a variable and its value
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 36 / 46
Clarity about Binding
A language element is bound to a property at the time that property is
defined for it.
Definition
A binding is the association between an object and a property of that
object.
Examples
a variable and its type
a variable and its value
Reliability
Support
Abstraction
Orthogonality
Efficient implementation
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 37 / 46
Reliability
A language is reliable if:
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 38 / 46
Characteristics of a Successful Language
Reliability
Support
Abstraction
Orthogonality
Efficient implementation
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 39 / 46
Language Support
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 40 / 46
Characteristics of a Successful Language
Reliability
Support
Abstraction
Orthogonality
Efficient implementation
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 41 / 46
Abstraction in Programming
Data:
Programmer-defined types/classes
Class libraries
Procedural:
Programmer-defined functions
Standard function libraries
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 42 / 46
Characteristics of a Successful Language
Reliability
Support
Abstraction
Orthogonality
Efficient implementation
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 43 / 46
Orthogonality
Definition
A language is orthogonal if its features are built upon a small,
mutually independent set of primitive operations.
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 44 / 46
Orthogonality
Definition
A language is orthogonal if its features are built upon a small,
mutually independent set of primitive operations.
Example
restricting types of arguments to a function
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 44 / 46
Characteristics of a Successful Language
Reliability
Support
Abstraction
Orthogonality
Efficient implementation
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 45 / 46
Efficient Implementation
Embedded systems
Real-time responsiveness (e.g., navigation)
Failures of early Ada implementations
Web applications
Responsiveness to users (e.g., Google search)
AI applications
Modeling human behaviors
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 46 / 46