1 / 27

CSE-321 Programming Languages Overview

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.

Télécharger la présentation

CSE-321 Programming Languages Overview

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related