cs 152: programming language paradigms january 27 class meeting department of computer science san...

31
CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak www.cs.sjsu.edu /~mak

Upload: carmella-thornton

Post on 17-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

CS 152: Programming Language Paradigms

January 27 Class Meeting

Department of Computer ScienceSan Jose State University

Spring 2014Instructor: Ron Mak

www.cs.sjsu.edu/~mak

Page 2: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

2

CS 152: Programming Language Paradigms

Instructor: Ron Mak Faculty website: http://www.cs.sjsu.edu/~mak/ Office hours: MW 7:15 - 8:30 pm in MH 413

Page 3: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

3

Course Notes

Class website http://www.cs.sjsu.edu/~mak Green sheet Lecture notes and handouts Assignments

Required textbook:Programming Languages: Principles and Practice, 3rd edition by Kenneth Louden and Kenneth Lambert_

Page 4: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

4

Goals of the Course

Program in languages from different “cultures”. Learn new ideas and concepts. Apply the new concepts to your “native” language.

C++, Java, etc. Become a better programmer!

Different programming cultures (paradigms). Object-oriented

C++, C#, Objective C, Java, etc. Functional

Lisp, Scheme, ML, Haskell, F# Logic

Prolog

Page 5: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

5

Goals of the Course

How are programming languages designed? Can we design a language? What are the design criteria? How can we specify the language’s syntax and semantics? What about data types and control structures?

How are programming languages implemented? Interpreters Compilers

_

Page 6: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

6

Course Overview

First half: Mostly about culture. Introduction Design criteria Functional paradigm Logic paradigm Object-oriented paradigm Syntax and semantics

Midterm

Second half: Mostly about design and implementation Data types and control structures Abstract data types Formal semantics Introduction to compilers and interpreters

Final

Page 7: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

7

Small Teams

You will learn better by working in small teams.

Form your own teams of 2 or 3 students each.

Choose your team members wisely!

Be sure you’ll be able to meet and communicate with each other and work together well.

After forming a team, no moving to another team.

Each team member will receive the same score on the team assignments.

Email me your team name and the list of team members and email addressesby Monday, February 3: [email protected]_

Page 8: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

8

Individual Responsibilities

You are personally responsible for participating and contributing to your team’s work, and for understanding each part of the work for every

assignment, whether or not you worked on that part.

Page 9: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

9

Postmortem Assessment Report

At the end of the semester, each student will individually turn in a short (1 page) report:

A brief description of what you learned in the course.

An assessment of your personal accomplishments for your project team.

An assessment of each of your project team members. _

Page 10: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

10

Individual Student’s Overall Class Grade

60% assignments (team scores) 15% midterm exam (individual score) 25% final exam (individual score) Final letter grade based on the class curve.

Participation will be important! Can move your final grade up or down,

especially in borderline cases. Participation in class. Participation in your team.

As reported by the postmortem assessment reports._

Page 11: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

11

Take roll!

Page 12: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

12

Introduction

How we program computers influences how we think about computation, and vice versa.

The basic principles and concepts of programming languages are part of the fundamental body of computer science knowledge. The study of these principles is essential

to programmers and to computer scientists.

We will study principles and concepts. The languages we examine will illustrate

how to apply these principles and concepts. Not a “language of the week” class.

_

Page 13: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

13

More Good Reasons

Increased capacity to express ideas. The depth at which we can think is influenced

by the expressive power of the language in which we communicate our thoughts.

Example: If you have weak grasp of your natural language, you are limited in the complexity of your thinking, particularly in the area of abstraction.

Improved background for choosing appropriate languages. Make better informed choices if you are familiar

with other available languages, especially the particular features of those languages._

Page 14: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

14

More Good Reasons, cont’d

Increased capacity to learn new languages. A thorough understanding of the fundamental concepts of

languages makes it easier to see how those concepts are incorporated into the design of the new languages.

Learning a new language gives you better understanding of your first language.

Better understanding language implementation. Understand implementation issues

Understand why languages are designed the way they are Ability to use a language more intelligently.

Increased ability to design new languages. Advance the state of the art. Better languages can crowd out poor languages.

Page 15: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

15

A Historic Timeline

Programming Languages: Principles and Practice, 3rd ed.Kenneth Louden & Kenneth Lambert(c) 2012 Course Technology. All rights reserved. 978-1-111-52941-3

Page 16: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

16

Origins of Programming Languages

A programming language is often defined as “a notation for communicating to a computer what we want it to do”.

Before the mid 1940s, computer operators set switches to adjust the internal wiring of a computer to perform the requested tasks.

Programming languages allowed computer users to solve problems without having to reconfigure hardware._

Page 17: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

17

Plugboard Control Panel

IBM 407 Accounting Machine (1949)

Page 18: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

18

Programming a Plugboard

“Hmm, should I pass this parameter by value or by reference?”

“Programming” was hand-wiring plugboards.

Page 19: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

19

Programming a Plugboard

Plugboard wiring diagram

It doesn’t look too complicated, does it?

Page 20: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

20

Machine Language

John von Neumann proposed that computers should be permanently hardwired with a small set of general-purpose operations.

An operator could input a series of binary codes to organize the basic hardware operations to solve more specific problems.

Operators could flip switches to enter these codes, called machine language, into memory._

Page 21: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

21

Machine Language

Machine language programming was tedious and error prone.

Page 22: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

22

Assembly Language

Assembly language: a set of mnemonic symbols for instruction codes and memory locations. Example: LD R1,R2

Assembler: a program that translates the symbolic assembly language code to binary machine code.

Loader: a program that loads the machine code into computer memory for execution.

Input devices: Keypunch machine Punched card reader

_

Page 23: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

23

IBM 1401 Autocoder Programming

80/80 List Read and print a deck of cards.

JOB 80/80 CARD LISTER * ORG 333 LOCATE AFTER THE PRINT AREA START CS 332 CLEAR STORAGE 332 - 300 CS CLEAR STORAGE 299 - 200 SW 1,201 SET WORD MARKS AT 1 AND 201 * READ R READ A CARD INTO READ AREA MCW 80,280 MOVE TO PRINT AREA W PRINT IT BLC DONE GO TO DONE IF LAST CARD READ B READ ELSE GO READ ANOTHER CARD * DONE H DONE ALL DONE END START

MCW Move characters to word mark

Main loop

Page 24: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

24

Assembly Language

Mnemonic symbols were an improvement over binary machine codes but still had shortcomings.

Lacks abstraction of conventional mathematical notation.

Each type of computer hardware architecture has its own machine language instruction set and requires its own dialect of assembly language.

Assembly languages first appeared in the 1950s and are still used today for low-level system tools or for hand-optimization._

Page 25: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

25

Punched Cards

Data was stored in punched cards called “IBM cards” or “Hollerith cards”

Named after Herman Hollerith.

80 columns per card, one character per column.

Up to 12 punched holes per column.

Alphanumeric data, often grouped into fields._

Page 26: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

26

A Data Processing Job

A typical “job”.

Tanenbaum & Woodhull Operating Systems: Design and Implementation (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8

Page 27: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

27

Punched Cards

Data processing was all about punched cards.

My school compiler project: 3½ boxes of punched cards Each box = 2000 cards, 10 lbs.

Page 28: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

28

FORTRAN

FORTRAN: FORmula TRANslation language Developed by John Backus in the early 1950s. Reflected the architecture of a particular type of machine. Lacked the structured control statements and data structures

of later high-level languages.

Popular with scientists and engineers for its support for algebraic notation and floating-point numbers.

The language has evolved and is still used today. FORTRAN IV FORTRAN 77 FORTRAN 90 FORTRAN 95 FORTRAN 2015 ...

Page 29: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

29

FORTRAN

DOUBLE PRECISION NUMBER, ROOTC DO 500 I = 1, 3C 5 WRITE (6, 10) 10 FORMAT ('ENTER A NUMBER')C READ (5,100) NUMBER 100 FORMAT (F5.1)C IF (NUMBER .GE. 0.0) GO TO 175 WRITE (6, 150) 150 FORMAT ('*** THE NUMBER MUST NOT BE NEGATIVE.') GOTO 5C 175 ROOT = DSQRT(NUMBER)C WRITE (6,200) NUMBER, ROOT 200 FORMAT ('THE SQUARE ROOT OF ', F5.1, ' IS ', F15.10)C 500 CONTINUEC PAUSE STOP END

Demo

What does thisFORTRAN IVprogram do?

Page 30: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

30

Algol

Algol: Algorithmic Language released in 1960 Provided a standard notation for computer scientists

to publish algorithms in journals. John Backus was a major contributor.

Structured control statements Sequencing (begin-end blocks) Loops (for loop) Selection (if and if-else statements)

Different numeric types Introduced the array structure

Supported procedures Including recursive procedures

Page 31: CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak

SJSU Dept. of Computer ScienceSpring 2014: January 27

CS 152: Programming Language Paradigms© R. Mak

31

The Algol Family

A large number of high-level languages descended from Algol, including: Pascal: language for teaching programming in the 1980s Ada: for embedded applications of U.S. Dept. of Defense

Algol control structures are present in today’s languages, including Java, C, C++, etc._