Presentation is loading. Please wait.

Presentation is loading. Please wait.

Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is.

Similar presentations


Presentation on theme: "Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is."— Presentation transcript:

1 Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is a conceptual universe for thinking about programming. A. Perlis

2 Copyright © 2006 The McGraw-Hill Companies, Inc. A programming paradigm is a pattern of problem- solving thought that underlies a particular genre of programs and languages. There are four main programming paradigms: –Imperative –Object-oriented –Functional –Logic (declarative) Paradigms of Programming Languages

3 Copyright © 2006 The McGraw-Hill Companies, Inc. Imperative Paradigm Follows the classic von Neumann-Eckert model: –Program and data are indistinguishable in memory –Program = a sequence of commands –State = values of all variables when program runs –Large programs use procedural abstraction Example imperative languages: –Cobol, Fortran, C, Ada, Perl, …

4 Copyright © 2006 The McGraw-Hill Companies, Inc. The von Neumann-Eckert Model

5 Copyright © 2006 The McGraw-Hill Companies, Inc. Object-oriented (OO) Paradigm An OO Program is a collection of objects that interact by passing messages that transform the state. When studying OO, we learn about: –Sending Messages –Inheritance –Polymorphism Example OO languages: Smalltalk, Java, C++, C#, and Python

6 Copyright © 2006 The McGraw-Hill Companies, Inc. Functional Paradigm Functional programming models a computation as a collection of mathematical functions. –Input = domain –Output = range Functional languages are characterized by: –Functional composition –Recursion Example functional languages: –Lisp, Scheme, ML, Haskell, …

7 Copyright © 2006 The McGraw-Hill Companies, Inc. Compute Factorial Function –In Imperative Programming Languages: –In Functional Programming Languages: Scheme Functional vs Imperative fact(int n) { if (n <= 1) return 1; else return n * fact(n-1); } (define (fact n) (if (< n 1) 1 (* n (fact (- n 1))) ))

8 Copyright © 2006 The McGraw-Hill Companies, Inc. Logic Paradigm Logic programming declares what outcome the program should accomplish, rather than how it should be accomplished. When studying logic programming we see: –Programs as sets of constraints on a problem –Programs that achieve all possible solutions –Programs that are nondeterministic Example logic programming languages: –Prolog

9 Copyright © 2006 The McGraw-Hill Companies, Inc. Logic vs Imperative Concatenate two strings: –In Imperative Programming Languages: –In Logic Programming Languages: Prolog append([], X, X). append(Tail, Y, Z) append([Head|Tail], Y, [Head|Z]) :- The empty list concatenated with any other list, say X, returns that other list, X, as the result If Z is the result of concatenating lists Tail and Y, then Concatenating any new list [Head|Tail] with Y gives the result [Head | Z]

10 Copyright © 2006 The McGraw-Hill Companies, Inc. Example append([english, russian], [spanish], L) H= english, Tail = [russian], Y=[spanish], L=[english|Z] append([russian],[spanish],[Z]) H=russian, Tail=[], Y=[spanish], [Z]=[russian|Z’] append([],[spanish],[Z’]). X =[spanish], Z’ = [spanish] append([], [spanish], [spanish])

11 Copyright © 2006 The McGraw-Hill Companies, Inc. A Brief History of Programming Languages

12 Copyright © 2006 The McGraw-Hill Companies, Inc. What makes a successful language? Key characteristics: –Simplicity and readability –Clarity about binding –Reliability –Support –Abstraction –Orthogonality –Efficient implementation

13 Copyright © 2006 The McGraw-Hill Companies, Inc. Simplicity and Readability Small instruction set –Is a smaller number of instructions better? Simple syntax –More than one way to accomplish a particular op, –A single op has more than one meaning Benefits: –Ease of learning –Ease of programming

14 Copyright © 2006 The McGraw-Hill Companies, Inc. Reliability A language is reliable if: –Program behavior is the same on different platforms E.g., early versions of Fortran –Type errors are detected E.g., C vs Haskell –Semantic errors are properly trapped E.g., C vs C++ –Memory leaks are prevented E.g., C vs Java

15 Copyright © 2006 The McGraw-Hill Companies, Inc. Language Support Accessible (public domain) compilers/interpreters Good texts and tutorials Wide community of users Integrated with development environments (IDEs)

16 Copyright © 2006 The McGraw-Hill Companies, Inc. Abstraction in Programming Data –Programmer-defined types/classes –Class libraries Procedural –Programmer-defined functions –Standard function libraries

17 Copyright © 2006 The McGraw-Hill Companies, Inc. Orthogonality A language is orthogonal if its features are built upon a small, mutually independent set of primitive operations. Fewer exceptional rules = conceptual simplicity –E.g., restricting types of arguments to a function Tradeoffs with efficiency

18 Copyright © 2006 The McGraw-Hill Companies, Inc. Compiler – produces machine code Interpreter – executes instructions on a virtual machine Example compiled languages: –Fortran, Cobol, C, C++ Example interpreted languages: –Scheme, Haskell, Python Hybrid compilation/interpretation –The Java Virtual Machine (JVM) Compilers and Virtual Machines

19 Copyright © 2006 The McGraw-Hill Companies, Inc. The Compiling Process

20 Copyright © 2006 The McGraw-Hill Companies, Inc. The Interpreting Process


Download ppt "Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is."

Similar presentations


Ads by Google