Download
cse 321 programming languages overview n.
Skip this Video
Loading SlideShow in 5 Seconds..
CSE-321 Programming Languages Overview PowerPoint Presentation
Download Presentation
CSE-321 Programming Languages Overview

CSE-321 Programming Languages Overview

99 Vues Download Presentation
Télécharger la présentation

CSE-321 Programming Languages Overview

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. CSE-321 Programming LanguagesOverview 박성우 POSTECH March 3, 2009

  2. Neanderthal Man Three ??? One Two

  3. Java Man Foolish Neanderthal! I can count up to ten! Why are two left??? I'veeaten three. I got five.

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

  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?

  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?

  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?

  8. Trends in programming language research

  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

  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

  11. Dominance of OO • TIOBE programming community index, Feb 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?

  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

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

  15. Commonalities?

  16. ... runs faster on

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

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

  19. Intel Roadmap

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

  21. 3rd Programming Revolution?) Parallel programming

  22. Course Overview

  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.

  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

  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.

  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

  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 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31