http://xkcd.com/224/ CS 152: Programming Language Paradigms Prof. - - PowerPoint PPT Presentation

http xkcd com 224 cs 152 programming language paradigms
SMART_READER_LITE
LIVE PREVIEW

http://xkcd.com/224/ CS 152: Programming Language Paradigms Prof. - - PowerPoint PPT Presentation

http://xkcd.com/224/ CS 152: Programming Language Paradigms Prof. Tom Austin San Jos State University What are some programming languages? Taken from http://pypl.github.io/PYPL.html January 2016 Why are there so many? Different domains


slide-1
SLIDE 1

http://xkcd.com/224/

slide-2
SLIDE 2

CS 152: Programming Language Paradigms

  • Prof. Tom Austin

San José State University

slide-3
SLIDE 3

What are some programming languages?

slide-4
SLIDE 4

Taken from http://pypl.github.io/PYPL.html January 2016

slide-5
SLIDE 5

Why are there so many?

slide-6
SLIDE 6

Different domains

slide-7
SLIDE 7

Different design choices

  • Flexibility
  • Type safety
  • Performance
  • Build time
  • Concurrency
slide-8
SLIDE 8

Which language is better?

slide-9
SLIDE 9

Good language features

  • Simplicity
  • Readability
  • Learn-ability
  • Safety
  • Machine independence
  • Efficiency
slide-10
SLIDE 10

These goals almost always conflict

slide-11
SLIDE 11

Conflict: Type Systems

Stop "bad" programs … but ... restrict the programmer

slide-12
SLIDE 12

Why do we make you take a programming languages course?

  • You might use one of these languages.
  • Perhaps one of these languages is the

language of the future (whatever that means).

  • You might see similar languages in your job.
  • Somebody made us take one, so now we want

to make you suffer too.

  • But most of all…
slide-13
SLIDE 13

We want to warp your minds.

slide-14
SLIDE 14

Course goal: change the way that you think about programming.

That will make you a better Java programmer.

slide-15
SLIDE 15

The "Blub" paradox

Why do I need higher order functions? My language doesn't have them, and it works just fine!!!

slide-16
SLIDE 16

"As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down… [Blub programmers are] satisfied with whatever language they happen to use, because it dictates the way they think about programs."

  • -Paul Graham

http://www.paulgraham.com/avg.html

slide-17
SLIDE 17

So what kind of abstractions do different languages give us?

slide-18
SLIDE 18

Data Abstractions

  • Representation of common data values
  • Variables to represent memory locations.
  • Structures: arrays, text files, etc.
  • Organizational units:

– APIs – packages – classes

slide-19
SLIDE 19

Control Abstractions

  • "Syntactic sugar"

x+=10 => x=x+10

  • Branch instructions

– if statements – while loops

slide-20
SLIDE 20

A little history

WWII: programming meant plugboards

slide-21
SLIDE 21

Von Neumann (late 1940s) created a permanently hardwired general purpose instruction set.

A small, machine language program

slide-22
SLIDE 22

Assembly (1950s)

  • Translates mnemonic symbols to machine

instructions.

  • Not a higher level – just easier for humans to

read.

mov ax, 1234h mov bx, ax

slide-23
SLIDE 23

Higher-level languages

  • Fortran (1950s):

– Algebraic notation, floating point math

  • Algol (1960):

– Machine independence (via compiler) – Control structures: loops, procedures, if statements – Formal specification

slide-24
SLIDE 24

Does a formal specification matter?

slide-25
SLIDE 25

Languages we will cover

(subject to change)

slide-26
SLIDE 26

Administrative Details

  • Green sheet:

http://www.cs.sjsu.edu/~austin/cs152-fall16/ Greensheet.html.

  • Homework submitted through Canvas:

https://sjsu.instructure.com/

  • Academic integrity policy:

http://info.sjsu.edu/static/catalog/integrity.html

slide-27
SLIDE 27

Schedule

  • The class schedule is available through Canvas
  • Late homeworks will not be accepted
  • Check the schedule before every class
  • Check the schedule before every class
  • And finally, CHECK THE SCHEDULE

BEFORE EVERY CLASS.

slide-28
SLIDE 28

Prerequisites

  • CS 151 or CMPE 135,

grade C- or better

  • Show me proof

– If you don't, I will drop you.

slide-29
SLIDE 29

Resources Dorai Sitaram "Teach Yourself Scheme in Fixnum Days". http://ds26gte.github.io/tyscheme/ Other references TBD.

slide-30
SLIDE 30

Grading

  • 30% -- Homework assignments

(individual work)

  • 20% -- Class project (team work)
  • 20% -- Midterm
  • 20% -- Final
  • 10% -- Participation (labs and drills)
slide-31
SLIDE 31

Participation: Labs & Drills

  • Complete/incomplete
  • No feedback given (usually)
  • I will look at them
  • If you have questions, ask me
slide-32
SLIDE 32

Homework

  • Done individually.
  • You may discuss the assignment

with others.

  • Do your own work!
slide-33
SLIDE 33

How to fail yourself and your friend

If two of you turn in similar assignments:

you both get a 0

slide-34
SLIDE 34

Project

  • Work in groups of up to four people.
  • Goal: Build an interpreter.
  • Use Java and ANTLR
slide-35
SLIDE 35

Office hours

  • MacQuarrie Hall room 216
  • Mondays, noon-1pm
  • Thursdays, 11am-noon
slide-36
SLIDE 36

Racket/ Scheme

slide-37
SLIDE 37

What is Scheme?

  • A functional language

– Describe what things are, not how to do them. – More mathematical compared to imperative langs.

  • A dialect of Lisp (List Processing)
  • (Famously) minimal language
  • Racket is a dialect of Scheme
slide-38
SLIDE 38

Symbolic Expressions (s-expressions)

The single datatype in Scheme. Includes:

  • Primitive types: booleans, numbers,

characters, and symbols.

  • Compound data types: strings, vectors, pairs,

and of course…

LISTS!!!

slide-39
SLIDE 39

A bit of scheming

  • Sample list: '(1 2 3 4)

– The quote declares this list as data

  • First argument is assumed to be a function

– Rest of the list are its arguments – (* 4 3 2 1)

  • car: gets the first element of the list
  • cdr: gets the tail of the list.
slide-40
SLIDE 40

$ racket Welcome to Racket v6.0.1. > '(1 2 3 4) '(1 2 3 4) > (car '(1 2 3 4)) 1 > (cdr '(1 2 3 4)) '(2 3 4) > (+ 1 (* 2 4) (- 5 1)) 13 >

Quote indicates list is data First element is assumed to be a function

slide-41
SLIDE 41

Before next class

  • Install Racket from http://racket-lang.org/
  • Read chapters 1-2 of Teach Yourself

Scheme.

  • Read Paul Graham's "Beating the

Averages" article. http://www.paulgraham.com/avg.html

slide-42
SLIDE 42

First homework due September 8th

  • This assignment is designed to get

you up and running with Racket.

  • Available in Canvas.

– If you don't have access to Canvas, see http://www.cs.sjsu.edu/~austin/cs152- fall16/hw/hw1/ instead.

  • Get started now!