CSE321 Programming Languages Overview POSTECH March 2 2010

  • Slides: 26
Download presentation
CSE-321 Programming Languages Overview 박성우 POSTECH March 2, 2010

CSE-321 Programming Languages Overview 박성우 POSTECH March 2, 2010

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

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? " 2

C Exercise: Integration • Specification – input: function f from int to int range

C Exercise: Integration • Specification – input: function f from int to int range a and b – output: f(a) + f(a + 1) +. . . + f(b) • Solution? 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? 3

C Exercise: Derivative • Specification – input: function f from float to float –

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? 4

Question for You • What is your favorite language? – Assembly, Basic, Pascal, C,

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? 5

Never (mistakenly) think that your favorite language is all you will need ever. Cf.

Never (mistakenly) think that your favorite language is all you will need ever. Cf. 'Beating the Averages' by Paul Graham

Evolution of programming languages

Evolution of programming languages

Structured Programming • Features – split programs into sub-sections (e. g. , functional units)

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 1970 s – Unix operating system written in C – 1 st revolution in programming language history 8

Object-oriented Programming • Features – focus on objects, rather than operations – hide the

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 1980 s – 2 nd revolution in programming language history 9

Dominance of OO • TIOBE programming community index, Feb 2010 10

Dominance of OO • TIOBE programming community index, Feb 2010 10

Limitation of OO Programming • No code reuse for different datatypes – templates in

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? 11

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

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# in Microsoft Visual Studio 2010 12

What is the (ongoing) 3 rd revolution in programming language history?

What is the (ongoing) 3 rd revolution in programming language history?

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

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

Multicore Revolution source: Herb Sutter – "Software and the concurrency revolution" • Intel reaches

Multicore Revolution source: Herb Sutter – "Software and the concurrency revolution" • Intel reaches thermal wall, 2004 ) no more free lunch! • Intel, 80 -cores, 2011 15

Intel Roadmap 16

Intel Roadmap 16

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

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

Parallel Programming: 3 rd Programming Revolution ) It's no longer optional.

Parallel Programming: 3 rd Programming Revolution ) It's no longer optional.

What is the hottest issue in programming language research? ) Verification (verifying that your

What is the hottest issue in programming language research? ) Verification (verifying that your software is okay)

Technologies for Verification • Testing – white box testing, black box testing – limited

Technologies for Verification • Testing – white box testing, black box testing – limited assurance • Model checking – verifying both software and hardware systems • Static analysis – many success stories • Astree, 100, 000 lines of Airbus A 380 control software – many industrialized tools (e. g. , Sparrow of SNU) • Deductive verification (theorem prover, proof assistant) – next-generation technology in verification 20

Can you trust your compiler? • Critical software requires the correctness of compilers. –

Can you trust your compiler? • Critical software requires the correctness of compilers. – Compilers are far from perfect, producing unintended, erroneous code. – Unfortunately the verification of compiler is not trivial at all. • Formal verification of Comp. Cert (Xavier Leroy, 2006) – Clight to Power. PC assembly code – Verification in Coq (proof assistant) 21

Course Overview

Course Overview

Topics to Be Covered • Basic programming language theory – inductive reasoning – -Calculus

Topics to Be Covered • Basic programming language theory – inductive reasoning – -Calculus – basic type theory – modular programming (assignment) – object-orientation (lecture, assignment) – parallelism/concurrency (tentative) 23

Grading • 50% assignments (heart of this course) – 8 programming assignments, all in

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 • Absolute grading system 24

No Cheating • Read the document on the disciplinary policy. • 2006 – 7

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/cs

Homework by Thursday • Visit the course webpage. – http: //www. postech. ac. kr/~gla/cs 321/ • Visit the discussion board. – telnet pl. postech. ac. kr, board 321 • Install – Standard ML 110. 58. – AFS client software. • Read 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 – Beating the Average 26