Programming Languages

Slides:



Advertisements
Similar presentations
Adapted from Scott, Chapter 6:: Control Flow Programming Language Pragmatics Michael L. Scott.
Advertisements

CSC 171 – FALL 2004 COMPUTER PROGRAMMING LECTURE 0 ADMINISTRATION.
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.
Computer Science 102 Data Structures and Algorithms V Fall 2009 Lecture 1: administrative details Professor: Evan Korth New York University 1.
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.
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.
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.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
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.
Introduction to computers and programming Instructor: Alex Iskold.
Programming Language Concepts (CIS 635) Elsa L Gunter 4303 GITC NJIT,
Programming Languages John Mitchell CS 242 Course web site:
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
1-1 1 Introduction  Programming linguistics: concepts and paradigms syntax, semantics, and pragmatics language processors.  Historical development of.
Programming Languages John Mitchell CS 242 Course web site:
Programming Languages John Mitchell CS 242 Course web site:
Scott C. Johnson Lecturer Rochester Institute of Technology Spring 2016.
Programming Language History and Evolution
Chapter 1. Introduction.
The language focusses on ease of use
Concepts of Programming Languages
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Why study programming languages?
CSc 020: Programming Concepts and Methodology II
INF 212 Analysis of Prog. Langs Final Lecture
Types for Programs and Proofs
PROGRAMMING LANGUAGES
Programming Language Design Concepts
课程名 编译原理 Compiling Techniques
Computer Science 102 Data Structures CSCI-UA
Programming Language History and Evolution
Programming COMP104: Fundamentals and Methodology Introduction.
Introduction to programming languages, Algorithms & flowcharts
CSE 332 Overview and Structure
Foundations of Programming Languages – Course Overview
Ada – 1983 History’s largest design effort
Programming Languages
CSCD 330 Network Programming Spring
Foundations of Programming Languages – Course Overview
Final Review In Text: Chapters 1-11,
Programming Language Design
CSCD 330 Network Programming Spring
Organization of Programming Languages
Programming Languages 2nd edition Tucker and Noonan
CSE 341 Programming Languages Autumn 2001
CSE 341 Programming Languages Autumn 2003
CSE 341 Programming Languages Autumn 2002
CSE 341 Programming Languages Spring 2003
Principles of Programming Languages
CSCD 330 Network Programming Spring
Lecture 8 Programming Paradigm & Languages. Programming Languages The process of telling the computer what to do Also known as coding.
CSE 341 Programming Languages Autumn 2003
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Programming Languages
School of Computer & Information Engineering,
Programming Languages, Preliminaries, History & Evolution
CSCE156: Introduction to Computer Science II
Presentation transcript:

Programming Languages CS 242 Programming Languages John Mitchell Course web site: http://www.stanford.edu/class/cs242/

A little about myself … How I spend my time 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.    How 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, …

Joining us this year Kathleen Fisher Research interests MOBY class-based object-oriented prog lang Classes, modules, parametric polymorphism, subtyping PADS language for specifying physical data representations Hancock: C-based, domain-specific programming language designed to facilitate extracting useful information from massive data streams Professional activities Vice Chair of SIGPLAN, Editorial Board of JFP Conference activities: HOPL III, ICFP 04, FOOL 8

Course Goals Programming Language Culture Critical thought A language is a “conceptual universe” (Perlis) Framework for problem-solving Useful concepts and programming methods Understand the languages you use, by comparison Appreciate history, diversity of ideas in programming Be prepared for new programming methods, paradigms Critical thought Properties of language, not syntax or sales pitch Language and implementation Every convenience has its cost Recognize the cost of presenting an abstract view of machine Understand trade-offs in programming language design

Value of Language Concepts Parable 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 Moral Futuristic ideas may be useful problem-solving methods now, and may be part of languages you use in the future Current examples Function passing: pass functions in C by building your own closures, as in STL “function objects” Continuations: used in web languages for workflow processing

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

Language groups Multi-purpose languages Scripting languages C, C++, Java Visual Basic Object Pascal: Delphi, Kylix, … Lisp, Scheme, ML Scripting languages Perl, PHP TCL, Shell Special-purpose languages SQL Prolog

What’s new in programming languages Commercial trend over past 5 years Increasing use of type-safe languages: Java, C#, … Scripting languages, other languages for web applications Perl is widely known as “the duct-tape of the Internet” Teaching trends Java replacing C as most common intro language Less emphasis on how data, control represented in machine Research 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? Dominant languages and paradigms C, C++, Java Imperative and Object-oriented languages Important implementation ideas Performance challenges Concurrency Design tradeoffs Concepts that research community is exploring for new programming languages and tools

Alternate Course Organizations Language-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 Concept-based organization Advantages: Use single language like Lisp/Scheme Present PL concepts by showing how to define them Advantages: Uniform syntax, easy to compare features Disadvantages Miss a lot of the culture associated with languages Some features hard to add Type systems, program-structuring mechanisms Approach works best for “local” features, not global structure Examples: Abelson/Sussman, Friedman et al.

Organization of this course Programming 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 Programming in the large Modularity and program structure Specific emphasis on OOP Smalltalk vs C++ vs Java Language design and implementation

Course Organization (cont’d) Concurrent 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

First half of course Lisp (1+ lecture) Foundations (1+ lecture) Lambda Calculus Denotational Semantics Functional vs Imperative Programming Conventional prog. language concepts (4 lectures) ML/Algol language summary (1 lecture) Types and type inference (1 lecture) Block structure and memory management (1 lectures) Control constructs (1 lectures) Other languages using same basic ideas (2 lectures) Scripting languages (1 lecture) Domain-specific languages (1 lecture) --------------------- Midterm Exam ------------------------

Second half of course Modularity, data abstraction, objects (1 lecture) Object-oriented languages (5 lectures) Smalltalk and Self (1.5 lectures) C++ (1.5 lectures) Java (2 lectures) Concurrent and distributed programming (1 lecture) Interoperability (1 lecture) Conclusions and review (1 lecture) --------------------- Final Exam ------------------------

General suggestions Read ahead Some details are only in HW and reading There 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 Homework and Exams Homework grader? HW handed out and due on Wednesdays Midterm Wed Oct 26 7-9PM ???, Final Thurs Dec 15, 8:30AM Honor Code, Collaboration Policy Homework grader? Send email to cs242@cs email addr (operational shortly) TA’s, Office hours, Email policy, … Section Friday afternoons Optional discussion and review; no new material Reading material Book available in bookstore See web site…

Questions?