CSE321 Programming Languages Overview POSTECH March 2 2010
- Slides: 26
CSE-321 Programming Languages Overview 박성우 POSTECH March 2, 2010
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 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 – 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, 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. 'Beating the Averages' by Paul Graham
Evolution of programming languages
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 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
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 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?
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 thermal wall, 2004 ) no more free lunch! • Intel, 80 -cores, 2011 15
Intel Roadmap 16
Tim Sweeney's POPL '06 Invited Talk - Last Slide 17
Parallel Programming: 3 rd Programming Revolution ) It's no longer optional.
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 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. – 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
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 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 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 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
- Simply
- March march dabrowski
- March 22 2010
- Types of programming languages
- Cse 340 principles of programming languages
- Iat 265
- Lisp_q
- Introduction to programming languages
- Cse 340 principles of programming languages
- Alternative programming languages
- Middle level programming languages
- Programming languages
- Cs 421 programming languages and compilers
- Xenia programming languages
- Storage management in programming languages
- Reasons for studying concepts of programming languages
- Real time programming language
- Plc
- Programing languages
- Types of programming languages
- The art of programming language
- Attribute grammar in principles of programming languages
- Multithreading program in java
- Advantages and disadvantages of system software
- Joey paquet
- Cornell programming languages
- Xkcd functional programming