Comp3104 2010-11 Programming Languages Proposal 1 All humans possess a common logical structure which operates independently of language Proposal 2 Language.

Slides:



Advertisements
Similar presentations
Software Development Languages and Environments. Programming languages High level languages are problem orientated contain many English words are easier.
Advertisements

Computational Models The exam. Models of computation. –The Turing machine. –The Von Neumann machine. –The calculus. –The predicate calculus. Turing.
Adapted from Scott, Chapter 6:: Control Flow Programming Language Pragmatics Michael L. Scott.
Chapter 8 High-Level Programming Languages. 8-2 Chapter Goals Describe the translation process and distinguish between assembly, compilation, interpretation,
The Binary Machine Modern high-level programming languages are designed to make programming easier. On the other end, the low level, all modern digital.
Overview of Programming Paradigms
High-Level Programming Languages
Compiler Design Lexical Analysis Syntactical Analysis Semantic Analysis Optimization Code Generation.
Chapter 8 High-Level Programming Languages Nell Dale John Lewis.
Comp 205: Comparative Programming Languages Imperative Programming Languages Functional Programming Languages Semantics Other Paradigms Lecture notes,
Programming Paradigms Imperative programming Functional programming Logic programming Event-driven programming Object-oriented programming A programming.
CS 331, Principles of Programming Languages Introduction.
Overview. Copyright © 2006 The McGraw-Hill Companies, Inc. Chapter 1 Overview A good programming language is a conceptual universe for thinking about.
There are only 10 types of people in the world, those who understand binary and those who don't.
1 Software Development Topic 2 Software Development Languages and Environments.
Chapter 8 High-Level Programming Languages (modified by Erin Chambers)
High-Level Programming Languages: C++
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
“ A language that doesn’t affect the way you think about programming, is not worth knowing”
COMPUTER PROGRAMS AND LANGUAGES Chapter 4. Developing a computer program Programs are a set (series) of instructions Programmers determine The instructions.
©Xiaoying Gao, Peter Andreae First Java Program COMP 102 #2 2014T2 Xiaoying Sharon Gao Computer Science Victoria University of Wellington.
1 Programming Languages Tevfik Koşar Lecture - II January 19 th, 2006.
Chapter 1 - Introduction
The Teacher Computing Computer Languages [Computing]
Fortran Fortran – Formula Translation –Developed by John Backus (IBM) in the mid 1950s. –It was a team effort and the design goal was to produce a translation.
Programming Languages
CS 331, Principles of Programming Languages Chapter 1.
Chapter 8 High-Level Programming Languages. 2 Chapter Goals Describe the translation process and distinguish between assembly, compilation, interpretation,
Logical and Functional Programming
Programming Languages
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is.
C H A P T E R T H R E E Type Systems and Semantics Programming Languages – Principles and Paradigms by Allen Tucker, Robert Noonan.
1-1 1 Introduction  Programming linguistics: concepts and paradigms syntax, semantics, and pragmatics language processors.  Historical development of.
Scheme : Definitions and Expressions. Scheme : Functions (define (seven x) (* x 7))
A Short History of PL's (MacLennan 1999) “Zeroth Generation” (1940's-50's): machine language / assembly: if/then, read/write, store, goto
Programming Language Theory 2014, 1 Chapter 1 :: Introduction Origin : Michael L. Scott School of Computer & Information Engineering,
Software Engineering Algorithms, Compilers, & Lifecycle.
a medium allowing humans and computers to communicate an abstraction of the real world a notation for expressing algorithms the set of all syntactically.
CPS120 Introduction to Computer Science High Level Language: Paradigms.
Programming Language History and Evolution
Chapter 1. Introduction.
Programming Languages 2nd edition Tucker and Noonan
Computer Languages [Computing] Computing.
Concepts of Programming Languages
Introduction to programming languages, Algorithms & flowcharts
Why study programming languages?
Introduction to programming languages, Algorithms & flowcharts
PROGRAMMING LANGUAGES
CS 363 – Chapter 1 What is a programming language? Kinds of languages
Comp 205: Comparative Programming Languages
An Introduction to Programming
Programming Language History and Evolution
Developing Applications
Introduction to programming languages, Algorithms & flowcharts
Computer Programming.
Chap. 6 :: Control Flow Michael L. Scott.
Software Programming J. Holvikivi 2014.
Programming Language Design
Chap. 6 :: Control Flow Michael L. Scott.
Programming Languages 2nd edition Tucker and Noonan
High Level Programming Languages
Programming Paradigms and Languages
Principles of Programming Languages
Overview of Programming Paradigms
Lecture 8 Programming Paradigm & Languages. Programming Languages The process of telling the computer what to do Also known as coding.
An Introduction to Programming
School of Computer & Information Engineering,
A Tour of Language Implementation
Lecture 18 Compilers and Language Translation (S&G, ch. 9)
Presentation transcript:

Comp Programming Languages Proposal 1 All humans possess a common logical structure which operates independently of language Proposal 2 Language determines what the individual perceives in the world and how he thinks about it.

“ A language that doesn’t affect the way you think about programming, is not worth knowing” The Whorfian Hypothesis

All computers are equivalent to a Turing Machine and therefore are equivalent to each other. Computer manufacturers do not say “our machine has some magic instruction which makes our computer more powerful than the competition”. They say “Our machines are faster, cheaper, and are more greener” All programs can be constructed using two registers and two instructions, so all programming languages are equivalent Language developers admit this; they do not say “our language has some magic feature which allows our language to do more than in any other language”. Instead, their advertising goes like this. “Our language is more user-friendly, our compilers are faster and they produce smaller executable files, and are more greener”

What languages do we know ?

Java Ada ALGOL 60 Assembler Basic FORTRAN Lisp Scheme Joy Haskell Clean COBOL Erlang Prolog FP F# Lua Occam Oz Pascal Python C++ SmallTalk C# C PHP Tcl

Criteria for Comparison Criteria CJavaasmSchemeProlog

Lang Paradigm

Programming Paradigms What is a “Paradigm” ? Important Paradigms Imperative (procedural) Declarative Functional Logic Object Oriented Event Driven

Imperative vs. Declarative (Functional) float x; float function square(float a) { float b; b = a x a; return b; } x = square(3); (define (square a) (x a a)) (square 3)

Matlab Lisp C Java C++ Event Driven ActionScript Prolog Functional Object Oriented Logic Imperative Assembler

Timeline

Scheme : Definitions and Expressions

Scheme : Functions (define (seven x) (* x 7))

Scheme : Functions (define (sum x y) (+ x y))

Scheme : Conditionals (1) (define (test x) (cond ( (> x 0)1) ( (= x 0)0) ( (< x 0)-1)))

Scheme : Conditionals (2) (define (test2 x) (if (< x 0)(- x) x))

Recursion See Recursion On page 269 in the index of Kernighan and Richie’s book The C Programming language recursion86,139,141,182,202,269 Recursion in Language: 5 th C BC Panini Sanskrit Grammar Rules 20 th C Chomsky theorizes that unlimited extension of English is possible through the use of recursion. … try Googling “Recursion”

There are known knowns. These are things we know that we know. There are known unknowns. That is to say, there are things that we now know we don’t know. But there are also unknown unknowns. These are things we do not know we don’t know US Defense Secretary Donald Rumsfeld on February 12, 2002

Little harmonic Labyrinth

Scheme : Recursion : The Factorial Function (1) How many ways can you get n people to sit in n chairs ? n = 3. (A,B,C)n = 4. (A,B,C,D)

Scheme : Recursion (define (sum n) (if (= n 1)1 (+ n (sum(- n 1))))) sum the numbers 1 to N (e,g, 1 to 4) = 4 + ( ) = (2+1) = (1) (sum 4) = 4 + (sum 3) =

Scheme : Recursion (2) The Factorial Function (define (fact n) (if (= n 1)1 (* n (fact (- n 1)))))

Functional Recursion // Imperative Iteration ( define (fact n) (if (= n 1)1 (* n (fact (- n 1)))))

I lost the number of my new mobile phone How can I find the number ? Get my girlfriend to phone every single mobile number. (OK I’ll cook supper!) Approximate solution: Say a mobile number has 10 digits (actually 11) and each digit can be 0 – 9 (10 possibilitities). So the solution is 10! How long will this take? Calculatore!

Fundamental Principles of Recursion A recursive function must call a simplified version of itself. This is guaranteed to “bottom out” (to halt). Any call to itself would produce an infinite regress. Don’t run this … ah go on then.. (define (fact n) (if (= n 1)1 (* n (fact n))))... and wait for the error message... or worse

Recursion in Language begin articleadjectivenoun end ornate noun begin ornate noun relative pronoun verb end preposition fancy noun verb fancy noun fancy noun fancy noun

Recursion in Language begin articleadjectivenoun end ornate noun begin ornate noun relative pronoun verb end preposition fancy noun verb fancy noun fancy noun fancy noun

Recursion in Language begin articleadjectivenoun end begin ornate noun relative pronoun verb end preposition fancy noun verb fancy noun fancy noun

Recursion is not Self-Reference A recursive function makes reference to a simplified version of itself: (I am) better than what (I was) I’m the humblest person I know I never make misteaks “I never make predictions. I never have and I never will” This sentence contains five words This sentence no verb

()A A + var A Compilers - Parsing

( ) + var A

=expression term var num ()expression Statement Expression Term

Prolog Syntax SheetFacts and Rules parent(abraham, isaac). Fact. Lower case for names. parent(isaac, esau). Fact. Lower case for names. grandfather(X,Y) :- parent(X,A),parent(A,Y). Rule. If X is the grandfather of Y then X is the parent of A and A is the parent of Y. For example, if george “X” is the parent of colin “A” and colin “A” is the parent of tristan “Y” then george “X” is the grandparent of Tristan “Y”. Queries ?- parent(abraham,X). The capital X designates an “output” variable which will be all sons of Abraham. ?- grandfather(abraham,X). The capital X designates an “output” variable which will be all grandchildren of Abraham.

lectures(colin,3063). lectures(colin,3079). lectures(pete,3078). lectures(richard,3062). lectures(richard,3040). studies(tom,3063). studies(tom,3062). studies(kate,3063). studies(kate,3040). studies(kate,3062).

?- lectures(colin,Mo),studies(kate,Mo). ?- lectures(colin,Mo),studies(X,Mo).

Monty Python Holy Grail witch(X) :- burns(X),female(X). burns(X) :- wooden(X). wooden(X) :- floats(X). wooden(woodBridge). stone(stoneBridge). floats(bread). floats(apple). floats(cherry). floats(X) :- sameweight(duck, X). female(girl). sameweight(duck,girl). ?- witch(girl)

Monty Python Holy Grail Yes [trace] 12 ?- witch(girl). Call: (7) witch(girl) ? creep Call: (8) burns(girl) ? creep Call: (9) wooden(girl) ? creep Call: (10) floats(girl) ? creep Call: (11) sameweight(duck, girl) ? creep Exit: (11) sameweight(duck, girl) ? creep Exit: (10) floats(girl) ? creep Exit: (9) wooden(girl) ? creep Exit: (8) burns(girl) ? creep Call: (8) female(girl) ? creep Exit: (8) female(girl) ? creep Exit: (7) witch(girl) ? creep Yes

Coda It is easier to write an incorrect program than to read a correct one. There are two ways to write error-free programs, only the third one works. It is easier to change the specification to fit the program than vice-versa Why did the Roman Empire collapse? What is the Latin for “office automation” ?