CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

27
CSE-321 Programming Languages Overview POSTECH March 3, 2009 박박박

Transcript of CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

Page 1: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

CSE-321 Programming Languages

Overview

POSTECH

March 3, 2009

박성우

Page 2: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

2

Neanderthal Man

OneTwoThree???

Page 3: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

3

Why are two left???Foolish Neanderthal!I can count up to ten!

Java Man

I got five.I've eaten three.

Page 4: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

4

Language = Frame of Thought• The language defines the frame of thought.

– what you can communicate to others– what concepts you are able to think over– how you think

• Big question:

"Does the programming language define the frame of thought in the course of programming?"

Page 5: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

5

C Exercise: Integration• Specification

– input: function f from int to int range a and b

– output: f(a) + f(a + 1) + ... + f(b)

• Solution?int integral(int (*f)(int), int a, int b) {

int i, sum = 0;for (i = a; i <= b; i++)

sum += f(i);return sum;

}

• Question: what if there were no function pointer?

Page 6: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

6

C Exercise: Derivative• Specification

– input: function f from float to float– output: derivative f' of f such that

f'(x) = (f(x + ) - f(x)) /

• Solution?

Page 7: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

7

Question for You• What is your favorite language?

– Assembly, Basic, Pascal, C, C++, C#, Java, Perl, Python, Ruby, Prolog, Lisp, SML, Haskell, Scheme, ...

• What is its strength?• What is its weakness?• What is its limitation?

• Do you think your language defines the frame of thought?

Page 8: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

Trends in programming language research

Page 9: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

9

Structured Programming• Features

– split programs into sub-sections (e.g., functional units) and reuse the sub-sections

• procedural programming– limited number of control structures

• for, while, do/while, repeat/until• goto is discouraged.

• Pascal, Ada, C, ...• Enabled the development of large-scale software in 1970s

– Unix operating system written in C– 1st revolution in programming language history

Page 10: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

10

Object-oriented Programming• Features

– focus on objects, rather than operations– hide the internal representation of an object– code reuse by inheritance or subclassing

• Smalltalk, C++, Java, C#, ...• Enabled the cooperative development of large-

scale software in 1980s– 2nd revolution in programming language history

Page 11: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

11

Dominance of OO• TIOBE programming community index, Feb 2009

Page 12: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

12

Limitation of OO Programming• No code reuse for different datatypes

– templates in C++– generics in Java

• No "first-class" functions– closures in Java

• No inherent support for modular programming– Classes are okay for modular programming of

moderate scale.– OO does not scale afterwards. Why?

Page 13: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

13

Functional Programming• Standard ML, Haskell, Objective CAML, F#, ...• Savior for OO programming

– templates in C++, generics in Java) primitive forms of polymorphism in type theory

– closures in Java) functions in functional programming

– modular programming) structures and functors in functional programming

• F# to be included in Microsoft Visual Studio 2009

Page 14: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

What is the (ongoing) 3rd revolution in programming

language history?

Page 15: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

15

Commonalities?

Page 16: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

16

... runs faster on

Page 17: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

17

CPU Frequency

http://www.tomshardware.com/reviews/mother-cpu-charts-2005,1175.html

Page 18: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

18

Multicore Revolution

• Intel reaches thermal wall, 2004 ) no more free lunch!

• Intel, 80-cores, 2011

source: Herb Sutter – "Software and the concurrency revolution"

Page 19: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

19

Intel Roadmap

Page 20: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

20

Tim Sweeney's POPL '06 Invited Talk- Last Slide

Page 21: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

3rd Programming Revolution?

) Parallel programming

Page 22: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

Course Overview

Page 23: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

23

Topics to Be Covered• Basic programming language theory

– inductive reasoning– -Calculus– basic type theory– modular programming (assignment)– object-orientation (lecture, assignment)

• Parallelism/concurrency will not be covered.

Page 24: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

24

Grading• 50% assignments (heart of this course)

– 8 programming assignments, all in Standard ML• 10% quizzes

– 4 quizzes (substitute for written assignments)• 20% midterm• 20% final

• Optional track: 40% project– Building a compiler for a small functional language.– Details will be announced before the midterm.

• Absolute grading system

Page 25: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

25

No Cheating• Read the document on the disciplinary policy.

• 2006– 7 students cheated (out of 46 students)– 2 suspicious cases

• We will check your programs at the end of the semester.– all your programs + those submitted in the previous years

• Cheating will not be tolerated.– Cheating will expel you from class and get you an F.

Page 26: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

26

Homework by Thursday• Visit the course webpage.

– http://www.postech.ac.kr/~gla/cs321/• Visit the discussion board.

– telnet pl.postech.ac.kr• Install

– Standard ML 110.58.– AFS client software.

• Read three articles for fun.– A Critical Look at Programming Languages– The Free Lunch is Over: A Fundamental Turn Toward

Concurrency in Software– Software and the Concurrency Revolution

Page 27: CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.

27

Make-up Lectures March 2009

Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 1415 16 17 18 19 20 2122 23 24 25 26 27 2829 30 31