Programming Languages John Mitchell CS 242 Course web site:

Slides:



Advertisements
Similar presentations
Slide 1 Vitaly Shmatikov CS 345 Programming Languages
Advertisements

Adapted from Scott, Chapter 6:: Control Flow Programming Language Pragmatics Michael L. Scott.
Introduction to Programming Languages Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University.
A brief history of programming languages
Programming Languages Language Design Issues Why study programming languages Language development Software architectures Design goals Attributes of a good.
CS 330 Programming Languages 09 / 07 / 2006 Instructor: Michael Eckmann.
CS 330 Programming Languages 09 / 06 / 2007 Instructor: Michael Eckmann.
Summer 02-03Programming Language Concepts1 Programming Language Concepts (CS 360) Lecture 1: Overview, Grammars, and Little Languages Jeremy R. Johnson.
ICE1341 Programming Languages Spring 2005 Lecture #3 Lecture #3 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information and Communications University.
CS 415: Programming Languages Course Introduction Aaron Bloomfield Fall 2005.
COP4020/CGS5426 Programming languages Syllabus. Instructor Xin Yuan Office: 168 LOV Office hours: T, H 10:00am – 11:30am Class website:
CS 331, Principles of Programming Languages Introduction.
1 Programming Languages Marjan Sirjani 2 1- The Study of Programming Languages The purpose of language is simply that it must convey meaning. (Confucius)
CS 415: Programming Languages Chapter 1 Aaron Bloomfield Fall 2005.
Foundations of Programming Languages – Course Overview Xinyu Feng Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242
CSE 425: Intro to Programming Languages and their Design A Few Key Ideas No particular language is a prerequisite for this course –However you should be.
MCS 270 Spring 2014 Object-Oriented Software Development.
Programming Languages and Design Lecture 1 Introduction to Programming Languages Instructor: Li Ma Department of Computer Science Texas Southern University,
EECE 310 Software Engineering Lecture 0: Course Orientation.
Chapter 1. Introduction.
CS 330 Programming Languages 09 / 04 / 2008 Instructor: Michael Eckmann.
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
Programming Languages
1 Overview CO3225 Programming Language: Theory and Practice Low Aim is a Crime, but not high ambition.
1 Programming Languages Marjan Sirjani Course web site:
1 Programming Language History and Evolution In Text: Chapter 2.
CNS 4450 Syllabus. Context Language is a tool of thought. We rarely think without words. In solving problems by computer, we eventually get to the point.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Computer Science 102 Data Structures and Algorithms CSCI-UA.0102 Fall 2012 Lecture 1: administrative details Professor: Evan Korth New York University.
INF 212 ANALYSIS OF PROG. LANGS LECTURE 1 Instructors: Crista Lopes Copyright © Instructors.
CS 415 Daily Announcements. Friday, 26 August 2005 Readings: –Read Chapter 1 for next Monday –Read Algol 60 report for next Wednesday –Read some of chapter.
CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.
Introduction to computers and programming Instructor: Alex Iskold.
Programming Language Concepts (CIS 635) Elsa L Gunter 4303 GITC NJIT,
CS 331, Principles of Programming Languages Chapter 1.
Programming Languages John Mitchell CS 242 Course web site:
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
Allyson M. Hoss, January 14, 2008 CSC 7101 Programming Language Structures Spring 2008 Louisiana State University.
CSCE 314 Programming Languages
1-1 1 Introduction  Programming linguistics: concepts and paradigms syntax, semantics, and pragmatics language processors.  Historical development of.
A Short History of PL's (MacLennan 1999) “Zeroth Generation” (1940's-50's): machine language / assembly: if/then, read/write, store, goto
Programming Languages John Mitchell CS 242 Course web site:
a medium allowing humans and computers to communicate an abstraction of the real world a notation for expressing algorithms the set of all syntactically.
Language Paradigms CS655.
CPS120 Introduction to Computer Science High Level Language: Paradigms.
Scott C. Johnson Lecturer Rochester Institute of Technology Spring 2016.
Programming Language History and Evolution
Programming Languages
INF 212 Analysis of Prog. Langs Final Lecture
Introduction to programming languages, Algorithms & flowcharts
Programming Language Design Concepts
Programming Language History and Evolution
Introduction to programming languages, Algorithms & flowcharts
Problem Solving.
Foundations of Programming Languages – Course Overview
Ada – 1983 History’s largest design effort
Programming Languages
Foundations of Programming Languages – Course Overview
Programming Language Design
Organization of Programming Languages
CSE 341 Programming Languages Autumn 2001
CSE 341 Programming Languages Autumn 2003
CSE 341 Programming Languages Autumn 2002
CSE 341 Programming Languages Spring 2003
CS510 Concurrent Systems Jonathan Walpole.
Problem Solving Using C: Orientation & Lecture 1
Principles of Programming Languages
CSE 341 Programming Languages Autumn 2003
Programming Languages
Presentation transcript:

Programming Languages John Mitchell CS 242 Course web site:

A little about myself … Research Interests: Computer security: access control, cryptographic protocols and mobile code security. Programming languages, type systems, object systems, and formal methods. Applications of logic to CS. B.S. Stanford University; M.S., Ph.D. MIT. uHow I spend my time Teaching classes Working with graduate students Writing papers, going to conferences, giving talks Departmental committees, other stuff outside Stanford: conferences organization, journals, public service, …

Course Goals uProgramming Language Culture A language is a “conceptual universe” (Perlis) –Learn what is important about various languages –Understand the ideas and programming methods Understand the languages you use (C, C++, Java) by comparison with other languages Appreciate history, diversity of ideas in programming Be prepared for new programming methods, paradigms uCritical thought Properties of language, not documentation uLanguage and implementation Every convenience has its cost –Recognize the cost of presenting an abstract view of machine –Understand trade-offs in programming language design

Transference of Lang. Concepts uParable I started programming in 1970’s –Dominant language was Fortran; no recursive functions My algorithms and data structure instructor said: –Recursion is a good idea even though inefficient –You can use idea in Fortran by storing stack in array Today: recursive functions everywhere uMoral World changes; useful to understand many ideas uMore current example: function passing Pass functions in C by building your own closures, as in STL “function objects”

Alternate Course Organizations uLanguage-based organization Algol 60, Algol 68, Pascal Modula, Clu, Ada Additional languages grouped by paradigm –Lisp/Scheme/ML for functional languages –Prolog and Logic Programming –C++, Smalltalk and OOP –Concurrency via Ada rendez-vous My opinion: –Historical concepts are same across many languages Block structure, scope, memory management –OOP deserves greater emphasis For comparison, see Sethi’s book...

Alternate Course II uConcept-based organization Use single language like Lisp/Scheme Present PL concepts by showing how to define them uAdvantages: Uniform syntax, easy to compare features uDisadvantages Miss a lot of the culture associated with languages Some features hard to add –Type systems, program-structuring mechanisms –Works best for “local” features, not global structure Examples: Abelson/Sussman, Friedman et al.

Organization of this course uProgramming in the small Cover traditional Algol, Pascal constructs in ML –Block structure, activation records –Types and type systems,... Lisp/Scheme concepts in ML too –higher-order functions and closures, tail recursion –exceptions, continuations uProgramming in the large Modularity and program structure Specific emphasis on OOP –Smalltalk vs C++ vs Java –Language design and implementation

Course Organization (cont’d) uConcurrent and distributed programming General issues in concurrent programming Actor languages: an attempt at idealization Concurrent ML Java threads Do we emphasize C? Important, practical language We discuss other languages, compare to C as we go – “Intro to C for Java programmers”? We do cover the ++ part of C++ in some detail

Languages in common use (I) Compiled by François Labelle from statistics on open-source projects at SourceForge

Languages in common use (II) Position Delta 1 Year Programming Language Ratings Delta 1 Year 1 C17.122%-0.65% 2 Java15.896%-6.35% 3 C %-2.62% 4 (Visual) Basic11.650%+4.47% 5 Perl8.968%+0.87% 6 PHP8.231%+2.80% 7 Delphi/Pascal/Kylix5.865%+4.28% 8 Python5.597%+4.17% 9 SQL2.693%-0.55% 10 C#1.634%-0.43% TPC index based on world-wide availability of skilled engineers, courses, and third party vendors, determined by using Google and Yahoo! search engines

Language groups uMulti-purpose languages C, C++, Java Visual Basic Object Pascal: Delphi, Kylix, … Lisp, Scheme, ML uScripting languages Perl, PHP Shell uSpecial-purpose languages SQL Prolog

What’s new in programming languages uCommercial trend over past 5 years Increasing use of Java, C#, … type-safe languages Scripting languages, other languages for web applications uTeaching trends Java replacing C as most common intro language –Less emphasis on how data, control represented in machine uResearch and development trends Modularity –Java, C++: standardization of new module features Program analysis –Automated error detection, programming env, compilation Isolation and security –Sandboxing, language-based security, …

What’s worth studying? uDominant languages and paradigms C, C++, Java Imperative and Object-oriented languages uImportant implementation ideas uPerformance challenges Concurrency uDesign tradeoffs uConcepts that research community is exploring for new programming languages and tools

Some research directions uProof-Carrying Code (PCC) uCCured uTyped Assembly Language (TAL) uRace-condition checkers uModel-checking C code uStatic analysis, sandboxing for memory safety

ACM SIGPLAN uConferences Principles of Programming Languages (POPL) Programming Language Design and Implementation (PLDI) Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA International Symposium on Memory Management (ISMM) Languages, Compilers, and Tools for Embedded Systems (LCTES) Functional Programming (ICFP) Java Grande Principles and Practices of Parallel Programming (PPOPP) See

First half of course uLisp (2 lectures) uFoundations (2 lectures) Lambda Calculus Denotational Semantics Functional vs Imperative Programming uConventional prog. language concepts (6 lectures) ML/Algol language summary (1 lecture) Types and type inference (1 lecture) Block structure and memory management (2 lectures) Control constructs (2 lectures) Midterm Exam

Second half of course uModularity and data abstraction (1 lecture) uObject-oriented languages (6 lectures) Introduction to objects (1 lecture) Simula and Smalltalk (2 lectures) C++ (1.5 lectures) Java (1.5 lectures) uConcurrent and distributed programming(1 lecture) uConclusions and review(1 lecture) Final Exam

General suggestions uRead ahead Some details are only in HW and reading uThere is something difficult about this course May be hard to understand homework questions Thought questions: cannot run and debug May sound like there is no right answer, but some answers are better than others Many of you may be used to overlooking language problems, so it takes a few weeks to see the issues

Course Logistics uHomework and Exams HW handed out and due on Wednesdays Midterm Wed Oct PM ???, Final Monday Dec 8, 8:30AM Honor Code, Collaboration Policy uHomework grader? Send to addr (operational shortly) uTA’s, Office hours, policy, … uSection Friday afternoons Optional discussion and review; no new material uReading material Book available in bookstore Look at web site…

Questions?