CSC302 2007S, Class 03: The Evolution of Some Key Language Features Admin: * Today's risk-takers: O'Neil * Please read The Story of Mel, a Real Programmer for Monday. * Why is it called Iceweasel? * Grading time on Thursday eaten by recommendations. * Homework 2: Permutations, is now available. * There was some confusion about the readings. They are distributed *two* class days in advance, whenever possible. * Please learn to use Wikipedia and Google. Overview: * Reading Ryder et al. * Major Characteristics. * Relating to Past Papers. /Detour: Programming in C/ Labels: Things that look like variables, but are followed by colons L1: fprintf(stderr, "You've reached point L1.\n"); Goto statement: goto LABEL; Hint: If a one-based array index is A[foo], zero-based is A[foo-1]a /Detour: Tony Hoare/ * Hoare invented a famous sorting algorithm: Quicksort * Hoare invented a famous control structure: The case statement * Hoare co-invented CSP, one of the first great models of parallel computing /Reading Ryder/ * What is the thesis? * Software engineering has affected the design of modern programming languages. * Software engineering and programming languages have mutually affected each other. * What is the structure of the argument that supports the thesis? * Interviews with language designers: How did SE support the design of your language? * Dates of when features seemed to be added and dates of new software engineering design issues came up * Need to set up a cause and effect relationship - demonstrate that the SE people were listening to the language people, or vice versa * They were the same people * Citations and references * How do we know that something is "a language paper" and that something is "a software engineering paper"? * The focus of the paper might suggest this * The journal or conference in which the paper is published gives a good indication of how the author thought about the research * Note the disciplinary split that seemed to happen in the early 70's with the creation of POPL and some SE conference. Were they successful? * The interviews seemed to show less effect * Kernighan: Nope, no effect (-) * Magnusson: Unsure * Wirth: Wasn't called SE, but had an effect (+) * Stroustrup (C++): Operating Systems * Ada folks: Designed with significant input from SE community * Java: Who designed Java? * Observation: Some bias in the interviews (particularly who) Are there other biases in the paper? * Focus on certain features - It may be that these * Focus on certain languages - C++, Java, Ada95 (all OO), Ada83, a bit on Pascal, and Visual Basic * Most focus on large project development * Other languages in wide use: PHP, Python, (Ruby), Perl * Other languages that have evolved over time: Fortan, Lisp, Java Detour: Why design and release a language? (Sam will ask again on Monday) Big picture: Which of Sammet's predictions are discussed in this paper? * Not English as a programming language. * User-defined languages? Not really * Application-specific languages. paper describes general-purpose * Fortran will survive about five-ten more years. paper does not indicate * Two things that did crop up: * Languages better suited for the end user * Some of the interviews indicated this (Lindholm claimed that about Java) * Abstraction generally supports this * Visual Basic was written with this particular audience in mind * A more scientific approach to programming * The big picture of the paper