Presentation is loading. Please wait.

Presentation is loading. Please wait.

It is about programming languages…

Similar presentations


Presentation on theme: "It is about programming languages…"— Presentation transcript:

0 03-60-440 Principles of Programming Languages (2017F)
Jianguo Lu School of Computer Science University of Windsor

1 It is about programming languages…
This course involves several programming languages: Scheme (Functional) Prolog (Logic) AspectJ XSLT This course is more than excursions to various languages …

2 It is about the fundamental question
What is a programming language?

3 What is a program It is a sequence of statements!
Imperative paradigm It is a group of interacting objects! OO paradigm It is a function! Functional paradigm It is a set of rules! Logic paradigm

4 It is about classification, history, styles (paradigms), concepts common in many languages
Programming language classification and history Syntax and semantics of programming languages Syntax is covered in Won’t repeat it. Axiomatic semantics Paradigms of programming Imperative and declarative programming OOP: Abstract data type, inheritance, polymorphism, AOP (Aspect Oriented Programming) Functional programming, lambda calculus, Scheme, MapReduce XML Programming: XSLT Logic programming Concepts in programming languages Side-effect, type checking, strong typing, overload, override, coercion, call-by-value, call-by-reference, polymorphism, multiple inheritance, generics, dynamic binding, imperative and declarative programming, …

5 Language description: Axiomatic Semantics
Language description: Syntax (covered in ), semantics. Formal methods to describe semantics: operational, denotational, axiomatic … Axiomatic semantics is also used to prove the correctness of programs Java has Assertion to describe the meaning of program Axiomatic semantics uses a formal system (axiomatic system) to describe the meaning of programs For example, {x=0} x= x+1; y= x; { x=1AND y=1} Axiom Inference rule

6 Imperative programming
Describes computation in terms of a program state and statements that change the program state. Imperative programs are a sequence of commands for the computer to perform. The hardware implementation of almost all computers is imperative. Von Neumann machine In contrast to declarative programming Insertion sort in Java void (int[ ] A) { int j; for (int i = 1; i < A.length; i++) { int a = A[i]; for (j = i -1; j >=0 && A[j] > a; j- -) A[j + 1] = A[j]; A[j + 1] = a; } insertionSort

7 Functional Programming
Functional programming treats computation as the evaluation of mathematical functions. It is more heavily used in academia than in industry. The strength of a functional paradigm is the removal of side-effects during computation. This has uses in program verification, for checking the correctness of programs, program optimisation. One particular use in program optimisation is to transform programs for parallel programming. The idea is used in Map-Reduce programming, widely used to process big data. z = f(sqrt(2), sqrt(2)); we can factor out sqrt(2) and write s = sqrt(2); z = f(s, s);

8 Functional Programming vs. Imperative Programming
In strict functional programming, there is no explicit memory allocation and no explicit variable assignment, so side effects of function evaluation are eliminated. Looping is accomplished through the more general functional construct of recursion. Sort in ML: fun insertsort [] = [] | insertsort (x::xs) = let fun insert (x:real, []) = [x] | insert (x:real, y::ys) = if x<=y then x::y::ys else y::insert(x, ys) in insert(x, insertsort xs) end; Quick sort in Haskell: qsort [] = [] qsort (x:xs) = qsort smalls ++ [x] ++ qsort bigs where smalls = [y | y <- xs, y < x] bigs = [y | y <- xs, y >= x]

9 sort function defined in Scheme language
(define (insert x l) ( if (null? l) (list x) (if (<= x (car l)) (cons x l) (cons (car l) (insert x (cdr l)))))) (define (isort l) (if (null? l) () (insert (car l) (isort (cdr l)))))

10 Map-reduce programming
Derived from functional programming Find wide applications in big data processing Google, Yahoo, … Distribute operations over multiple machines Hadoop

11 Logic Programming Program is a set of facts and rules.
Based on first-order predicate logic Original motivation: study of mechanical theorem proving Used in Artificial Intelligence, databases, expert systems. Insertion sort in prolog isort([ ],[ ]). isort([X|UnSorted],AllSorted) :- isort(UnSorted,Sorted), insert(X,Sorted,AllSorted). insert(X, [ ], [X]). insert(X, [Y|L], [X, Y|L]) :- X =< Y. insert(X, [Y|L], [Y|IL]) :- X > Y, insert(X, L, IL).

12 OOP Abstract Data Type Multiple inheritance in Java Polymorphism
Overloading Generics Dynamic binding

13 Distributed Object and Object Persistency
from

14 AOP—Aspect Oriented Programming
A new programming paradigm Example void transfer(Account fromAccount, Account toAccount, int amount) { if (fromAccount.getBalance() < amount) { throw new InsufficientFundsException(); } fromAccount.withdraw(amount); toAccount.deposit(amount); However, in a real-world banking application, this transfer method is not adequate. We need to: Include security checks to verify that the current user has the authorization to perform this operation. Enclose the operation in a database transaction in order to prevent accidental data loss. Log the operation to the system log. And so on.

15 Aspect Oriented Programming
void transfer(Account fromAccount, Account toAccount, int amount) { if (!getCurrentUser().canPerform(OP_TRANSFER)) { throw new SecurityException(); } if (fromAccount.getBalance() < amount) { throw new InsufficientFundsException(); Transaction tx = database.newTransaction(); try { fromAccount.withdraw(amount); toAcount.deposit(amount); tx.commit(); systemLog.logOperation(OP_TRANSFER, fromAccount, toAccount, amount); catch(Exception e) { tx.rollback(); The code has lost its elegance and simplicity various new concerns tangled with the basic functionality (business logic concern). The transactions, security, logging, etc. all exemplify cross-cutting concerns. Implementation of crosscutting concerns are scattered across numerous methods. Change of the implementation would require a major effort. Solution: Separate different concerns.

16 XSLT It is an XML-based language It is a declarative language
Used to transform XML; The language itself is in XML. It is a declarative language Does not list an imperative sequence of actions to perform in a stateful environment, Consists of a template rules, specifies what to add to the result. XML XSLT XSLT processor

17 Implementation techniques of programming languages
A continuation from 214 Attribute grammar Parsing result Type checking Type inference rules and their implementations Garbage collection How to manage memory more efficiently Follow the text in the dragon book

18 Robert Sabastia, Von Roy &Haridi, John Mitchell, Benjemin Pierce, Glynn Winskel, Kenneth Louden, Seyed Roosta, Pratt & Zelkowitz

19 Website etc. Course web site: http://cs.uwindsor.ca/~jlu/440
Office: 5111 Lambton Tower jlu at uwindsor Examinations are closed books and closed notes. The only valid excuse for missing an exam is a documented medical emergency. A missed exam without medical documentation will result in a mark of zero.

20 Marking scheme Assignments 15 % Midterm 35 % Final exam 50 %

21 Bonus assignment (8%) Three assignments (15 %):
(5%) Functional and Logic programming; (5%) XSLT programming; (5%) Aspect oriented programming; Bonus assignment (8%) Generate and process a parse tree of real Java programs. TA will help you with your assignments There is no text book. Class attendance is important ! Exams will cover whatever is taught in class; Exams will cover the assignments.

22 Bonus assignment: (8%) Count method calls in JDK(Java Development Kit)
Parsing real large programs (7000+ files) Get all the details of the programs Using JDT (Eclipse Java Development Tool)

23


Download ppt "It is about programming languages…"

Similar presentations


Ads by Google