270 likes | 380 Views
CSE-321 Programming Languages Overview. 박성우. POSTECH March 3, 2009. Neanderthal Man. Three. ???. One. Two. Java Man. Foolish Neanderthal!. I can count up to ten!. Why are two left???. I've eaten three. I got five. Language = Frame of Thought.
E N D
CSE-321 Programming LanguagesOverview 박성우 POSTECH March 3, 2009
Neanderthal Man Three ??? One Two
Java Man Foolish Neanderthal! I can count up to ten! Why are two left??? I'veeaten three. I got five.
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?"
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?
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?
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?
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
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
Dominance of OO • TIOBE programming community index, Feb 2009
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?
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
What is the (ongoing) 3rd revolution in programming language history?
CPU Frequency http://www.tomshardware.com/reviews/mother-cpu-charts-2005,1175.html
Multicore Revolution • Intel reaches thermal wall, 2004 ) no more free lunch! • Intel, 80-cores, 2011 source: Herb Sutter – "Software and the concurrency revolution"
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.
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
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.
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
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 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31