1 / 32

CS 655: Programming Languages

CS 655: Programming Languages. Lecture 1: Wherefore CS655?. The use of <???> cripples the mind; its teaching should, therefore, be regarded as a criminal offence. Edsger W.Dijkstra, 1975. David Evans Office 236A, 982-2218 evans@cs.virginia.edu http://www.cs.virginia.edu/~evans.

tamarr
Download Presentation

CS 655: Programming Languages

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. CS 655: Programming Languages Lecture 1: Wherefore CS655? The use of <???> cripples the mind; its teaching should, therefore, be regarded as a criminal offence. Edsger W.Dijkstra, 1975 David Evans Office 236A, 982-2218 evans@cs.virginia.edu http://www.cs.virginia.edu/~evans University of Virginia Computer Science

  2. Menu • Course Logistics: details on Syllabus • Goals for the Course • Course Overview, Programming Language Design Don’t leave until I take your picture! Send registration email by tomorrow Position Paper 1 due Monday. CS 655: Lecture 1

  3. Resources • Staff: • Instructor: David Evans evans@cs.virginia.edu Office Hours (?): Monday 1:30-2:30,Thursdays after class • TA: John Haskins, Jr. predator@cs.virginia.edu • Email: cs655-staff@cs.virginia.edu • Web: http://www.cs.virginia.edu/~cs655 CS 655: Lecture 1

  4. Assignments • Assigned Readings • Position Papers (6 or 7) • Problem Sets (4) • Technical questions, short answers, not much coding • Project • Work in groups (2-4, solo projects only in unusual circumstances) • List of ideas (projects/ideas.html) • Start thinking about this now – request teammates on registration survey • Oral Final Exam CS 655: Lecture 1

  5. Position Papers • Not book reports • Be provocative and interesting • Should make claims reasonable people could disagree with • Support your claims with technical arguments • Writing clearly matters, writing clearly matters • Not longer than the Declaration of Independence (see ~cs655/papers/paper-template.html) CS 655: Lecture 1

  6. Position Papers Grading grade  0 { grade.value = 0 } |  modifiers { grade.value = modifiers.value } modifiers   { modifiers.value = 1 } | + modifiers { modifiersL.value = modifiersR.value * 2 } | - modifiers {modifiersL.value = modifiersR.value * 1/2 } • Hard to get + (few per assignment), really hard to get ++ (few per term), etc. • If unhappy with grade, can submit 1 page response. Grade can go up or down as a result. CS 655: Lecture 1

  7. Position Papers Logistics • Use HTML template • Turn in by emailing URL and copy of contents to cs655-staff@cs.virginia.edu • Pay attention to weird due times: First Position Paper is due Monday at 11:59pm. CS 655: Lecture 1

  8. How to get an A in CS655 • “Easy” way: Convince an established language designer to make a substantive change to a programming language • “Hard” way Course Project (30%) Position papers (30%) Exam (20%) Problem Sets (20%) Class Participation (0%, but important) CS 655: Lecture 1

  9. Honor Code, Schmonor Code • Learn from your fellow students – they are your best resource! • Everything you turn in should be your own • Write down who you discussed assignments with, all external sources you used • Be honest – you know what cheating is and isn’t CS 655: Lecture 1

  10. LogisticsQuestionsNext: My Goals for the Course CS 655: Lecture 1

  11. Goal #1 When you need to invent a language (and most of you will at some point in your career) you will design it, not just make it up. CS 655: Lecture 1

  12. What’s the difference? Moral? A bigger army beats good design every time But, good designs can influence people with armies CS 655: Lecture 1

  13. Goal #2 When you design your language, you will have sufficient knowledge of other languages not to repeat their mistakes, and solid enough theory background to describe your language well. CS 655: Lecture 1

  14. Goal #3 You will become better at programming and building systems. You will think more clearly and maybe even write better. A language that doesn't affect the way you think about programming, is not worth knowing. Alan Perlis CS 655: Lecture 1

  15. Goal #4 Some of you will do projects that lead to conference papers or thesis topics. All of you will be able to understand nearly all PLDI papers and many POPL papers. CS 655: Lecture 1

  16. Goal #5 FUN! CS 655: Lecture 1

  17. Disclaimer • Sorry, no refunds if not all goals are satisfied. • Tell me your goals on the survey. CS 655: Lecture 1

  18. Course Overview • What is a programming language? • What makes a language important? • Design Tradeoffs • Contents of the course CS 655: Lecture 1

  19. What is a language? Webster: A systematic means of communicating ideas or feelings by the use of conventionalized signs, sounds, gestures, or marks having understood meanings. • Nerdy Linguist’s Definition: • A description of pairs (S, M), where S stands for sound, or any kind of surface forms, and M stands for meaning. A theory of language must specify the properties of S and M, and how they are related. CS 655: Lecture 1

  20. What is a Programming Language? • Bruce MacLellan’s definition: A language that is intended for the expression of computer programs and that is capable of expressing any computer program. • Ravi Sethi’s definition: Notations used for specifying, organizing, and reasoning about computations. • Liberal definition: A language (according to the nerdy linguist’s definition) intended to be read and written by humans and processed by machines CS 655: Lecture 1

  21. What makes a PL important? CS 655: Lecture 1

  22. Lots of People Learn It No books in print: Algol60, CLU, Simula Amazon.com sales rank for best-selling book related to language (30 November 1999) CS 655: Lecture 1

  23. You Can Get a Job No job listings: Algol60, CLU, Simula Monster.com job listings in Virginia matching language (30 November 1999) CS 655: Lecture 1

  24. Changes How Programmers ThinkInfluences other Languages • FORTRAN - use a high level language • Algol60 - program in a structured way • Simula - use classes • CLU - use data abstraction • FP - program without state CS 655: Lecture 1

  25. Language Design as Engineering Safety Performance Java, CLU FORTRAN, BLISS, C Ease of Use Ease/size of Implementation BASIC, CLU Forth, C Orthogonality Safety, Simplicity Algol68 Pascal Simplicity Expressiveness Scheme Common LISP CS 655: Lecture 1

  26. Example: Is assignment an expression? • Wulf (BLISS): Of course, everything is • Richie (C): Yes, why not • Wirth (Pascal): No, only math-like things are expressions Who’s right? What were their design tradeoffs? CS 655: Lecture 1

  27. Language Design as Art • Aesthetics matter • Readability is usually more important than Writability • CLU vs. APL • Intuitive meaning more important than formal semantics • But formal semantics necessary to make sure we agree on intuitive meaning CS 655: Lecture 1

  28. Language as Art: Example start_up = proc() outstream:stream := primary_output() for s:string in get_hello_world() do stream$putl(outstream,s) end end get_hello_world = iter() yields(string) while (true) do yield ("Hello, World!") end end HELLO: PROCEDURE OPTIONS (MAIN); FLAG = 0; LOOP: DO WHILE (FLAG = 0); PUT SKIP DATA ('HELLO WORLD!'); END LOOP; END HELLO; CS 655: Lecture 1

  29. Interaction of Art & EngineeringExample: C void test (int x) { while (x = 1) { printf (“I’m an imbecile!”); x = x + 1; } } Art: use = for assignment (not :=) Engineering: make assignments expressions, no Boolean type, weak types, etc. CS 655: Lecture 1

  30. Structure of the Course • Balance between: • History: analyze programming languages according to design principles • Theory: tools for analyzing and describing what programs mean • Research: look at current research and discuss open problems • Class as good as you make it: • Come to lecture prepared to discuss readings CS 655: Lecture 1

  31. Course Overview • This course is not • A humanities course (though at times it may seem like one) • A theory course (though at times it may seem like one) • A “ripping on C++” course (though at times it may seem like one) • It is really about design CS 655: Lecture 1

  32. Charge • Don’t leave until I take your picture • Think about projects and teams • Send me your registration survey by tomorrow • Turn in position paper by Monday midnight - be bold! • Next time: Intro to Semantics CS 655: Lecture 1

More Related