1 Concepts of Programming Languages TK 327, Fall 2015 MW 2:00 PM – 3:15 PM STV 104 Instructor:Dr. Chung-Chih Li Home page of the Class
2 Concepts of Programming Languages This is not a survey course Course Description and Purposes Objectives
10/14/2015ITK 3273 In order to understand the universe, we have to understand the language in which the universe is written, and mathematics is the language. -- Galileo Galilei ( ) -- In order to understand Information Technology, we have to understand the language in which Information Technology is written, and the Programming Language is the language. --
4 What is a computer ? What is a machine? A machine that can compute! What is computation? Why bother? Because, the way we understand and formalize them directly shapes the design of programming languages.
5 Computer -- Machine -- Computation -- A sequence of procedures that manipulate data. A device that follows a certain fixed causal rules. A machine that can compute!
6 Charles Babbage ( ) Difference Engine No. 1 design: Difference Engine No. 1 ( ) Analytical Engine ( ) Difference Engine No. 2 ( ) Difference Engine No. 2 (2002) / 10/14/2015
7 Leibniz’s Dream “Sir! Let’s sit down and compute!! ” Gottfried W.V. Leibniz ( )
8 Aristotle ( BC) L E J Brouwer ( ) Logic and Thought and Computing
9 Completeness theorem Incompleteness theorem Recursive theory Computable functions are recursively definable function Kurt Gödel ( )
10 Alonzo Church Lambda Calculus Computable functions are Lambda-term definable
11 Alan Turing ( ) – The Enigma The man who invented the computer. Image from Computable functions are Turing machine computable
12 Wittgenstein says: “Turing Machines are human that compute.” Ludwig Wittgenstein ( )
13 Church-Turing Thesis: all algorithms are computable 1. Logic 2. Recursive, λ-terms 3. Turing machines Logical languages e.g. PROLOG Functional languages e.g. LISP, ML Imperative languages e.g. Algol-60, Fortran, C OOP, ( e.g. Small Talk, JAVA, C++) What is it? Really? ?????
14 Imperative Languages C Using instructions to command the machine to do something, with branches, iterations, control flows, and side-effects,. int fact(int n) { int sofar = 1; while (n>0) sofar *= n--; return sofar; }
15 Functional Languages ML fun fact x = if x <= 0 then 1 else x * fact(x-1); defun fact (x) (if (<= x 0) 1 (* x (fact (- x 1))))) LISP Function definition, Recursion, no side-effect
16 Logical Languages PROLOG parent(A,B) :- dad(A,B). parent(A,B) :- mom(A,B). grandparent(A,B) :- parent(A,C), parent(C,B). dad(dennis, sean). dad(dennis, leon). dad(john, dennis). mom(sandy, leon). mom(sandy,sean). grandparent(X, sean). X = john. parent(X, leon). X = dennis. X = sandy. Rules (logic) and facts
17 Logical Languages PROLOG fact(X,1) :- X =:= 1. fact(X,Fact) :- X > 1, NewX is X - 1, fact(NewX,NF), Fact is X * NF. fact(4,X). X = 24. fact(5,30). false.
18 OOP (Object-oriented Programming) A new programming paradigm after ’80s. Problem solving Procedure finding But Why should I have to write the same procedure to do the same job over and over again? Fact: Different problems usually consist of many common smaller problems. Problem solving Solution arranging
19 OOP Java public class MyInt { private int value; public MyInt(int value) { this.value = value; } public int getValue() { return value; } public MyInt getFact() { return new MyInt(fact(value)); } private int fact(int n) { int sofar = 1; while (n > 1) sofar *= n--; return sofar; } }