190 likes | 254 Views
IT327 Concepts of Programming Languages. IT 327, Fall 2019 MW 9:35 – 10:50 AM STV 139A (Section 1) MW 11:00 – 12:15 PM STV 139A (Section 2). Home page of the Class. Concepts of Programming Languages. Then, what is it? What do you expect? What do you want to learn from this class?.
E N D
IT327Concepts of Programming Languages IT 327, Fall 2019MW 9:35 – 10:50 AM STV 139A (Section 1) MW 11:00 – 12:15 PM STV 139A (Section 2) Home page of the Class IT 327
Concepts of Programming Languages Then, what is it? What do you expect? What do you want to learn from this class? IT 327
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. -- -- IT 327
What is acomputer? Amachinethat cancompute! What is amachine? What iscomputation? Why bother? Because, the way we understand and formalize them directly shapes the design of programming languages. IT 327
Computer -- Amachinethat cancompute! Machine -- A device that follows a certain fixed causal rules. Computation -- A sequence of procedures that manipulate data. IT 327
design: Difference Engine No. 1 (1821-1832) Analytical Engine (1834-1840) Difference Engine No. 2 (1840-1849) http://www.computerhistory.org/babbage/ Charles Babbage (1791-1871) Difference Engine No. 2 (2002) Difference Engine No. 1 IT 327
Logic and Thought and Computing Aristotle (384 - 322 BC) L E J Brouwer (1881-1966) http://www.klima-luft.de/steinicke/ngcic/persons/aristoteles.htm IT 327
Gottfried W.V. Leibniz (1646-1716) Leibniz’s Dream “Sir! Let’s sit down and compute!! ” http://sunsite.informatik.rwth-aachen.de/phil/filosofer/leibniz.html IT 327
Kurt Gödel (1906-1978) Completeness theorem Incompleteness theorem Recursive theory Computable functions are recursively definable function http://www-groups.dcs.st-and.ac.uk/~history/PictDisplay/Godel.html IT 327
Alonzo Church1903-1995 Lambda Calculus Computable functions are Lambda-term definable http://www.princeton.edu/pr/pwb/03/0505/7a.shtml IT 327
Alan Turing (1912-1954)– The Enigma The man who invented the computer. Computable functions are Turing machine computable Image from http://ei.cs.vt.edu/~history/Turing.html IT 327
Ludwig Wittgenstein (1889-1951) Wittgenstein says: “Turing Machines are human that compute.” http://www.ags.uci.edu/~bcarver/wgallery.html IT 327
Church-Turing Thesis: all algorithms are computable Logical languages e.g. PROLOG 1. Logic 2. Recursive, λ-terms Functional languages e.g. LISP, ML Imperative languages e.g. Algol-60, Fortran, C 3. Turing machines ????? OOP, (e.g. Small Talk, JAVA, C++) What is it? Really? IT 327
Imperative Languages int fact(int n) { int sofar = 1; while (n>0) sofar *= n--; return sofar;} • C Using instructions to command the machine to do something, with branches, iterations, control flows, and side-effects,. IT 327
Functional Languages fun fact x = if x <= 0 then 1 else x * fact(x-1); • ML • LISP defun fact (x) (if (<= x 0) 1 (* x (fact (- x 1))))) Function definition, Recursion, no side-effect IT 327
grandparent(X, sean). X = john. parent(X, leon). X = dennis. X = sandy. Logical Languages 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). • PROLOG Rules (logic) and facts IT 327
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. IT 327
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 IT 327
OOP 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; }} • Java IT 327