Presentation is loading. Please wait.

Presentation is loading. Please wait.

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.

Similar presentations


Presentation on theme: "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."— Presentation transcript:

1 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 2 Concepts of Programming Languages This is not a survey course Course Description and Purposes Objectives

3 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 (1564 -1642) -- 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 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 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 6 Charles Babbage (1791-1871) Difference Engine No. 1 design: Difference Engine No. 1 (1821-1832) Analytical Engine (1834-1840) Difference Engine No. 2 (1840-1849) Difference Engine No. 2 (2002) http:// www.computerhistory.org/babbage / 10/14/2015

7 7 Leibniz’s Dream “Sir! Let’s sit down and compute!! ” Gottfried W.V. Leibniz (1646-1716) http://sunsite.informatik.rwth-aachen.de/phil/filosofer/leibniz.html

8 8 Aristotle (384 - 322 BC) http://www.klima-luft.de/steinicke/ngcic/persons/aristoteles.htm L E J Brouwer (1881-1966) Logic and Thought and Computing

9 9 http://www-groups.dcs.st-and.ac.uk/~history/PictDisplay/Godel.html Completeness theorem Incompleteness theorem Recursive theory Computable functions are recursively definable function Kurt Gödel (1906-1978)

10 10 Alonzo Church 1903-1995 http://www.princeton.edu/pr/pwb/03/0505/7a.shtml Lambda Calculus Computable functions are Lambda-term definable

11 11 Alan Turing (1912-1954) – The Enigma The man who invented the computer. Image from http://ei.cs.vt.edu/~history/Turing.html Computable functions are Turing machine computable

12 12 Wittgenstein says: “Turing Machines are human that compute.” Ludwig Wittgenstein (1889-1951) http://www.ags.uci.edu/~bcarver/wgallery.html

13 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 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 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 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 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 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 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; } }


Download ppt "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."

Similar presentations


Ads by Google