Transcript PPT

CSE-321 Programming Languages
Overview
박성우
POSTECH
March 3, 2009
Neanderthal Man
Three
???
Two
One
2
Java Man
IFoolish
Why
can
I've
Icount
are
got
eaten
Neanderthal!
two
five.
up
three.
left???
to ten!
3
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?"
4
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?
5
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?
6
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?
7
Trends in programming language
research
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
9
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 largescale software in 1980s
– 2nd revolution in programming language history
10
Dominance of OO
• TIOBE programming community index, Feb 2009
11
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?
12
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
13
What is the (ongoing) 3rd
revolution in programming
language history?
Commonalities?
15
... runs faster on
16
CPU Frequency
http://www.tomshardware.com/reviews/mother-cpu-charts-2005,1175.html
17
Multicore Revolution
source: Herb Sutter –
"Software and the concurrency revolution"
• Intel reaches thermal wall, 2004
) no more free lunch!
• Intel, 80-cores, 2011
18
Intel Roadmap
19
Tim Sweeney's POPL '06 Invited Talk
- Last Slide
20
3rd Programming Revolution?
) Parallel programming
Course Overview
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.
23
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
24
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.
25
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
26
Make-up Lectures
March 2009
Su
1
8
15
22
29
Mo
2
9
16
23
30
Tu
3
10
17
24
31
We
4
11
18
25
Th
5
12
19
26
Fr
6
13
20
27
Sa
7
14
21
28
27