programming language concepts (cis 635) elsa l gunter 4303 gitc njit, www.cs.njit.edu/~elsa/635...

Download Programming Language Concepts (CIS 635) Elsa L Gunter 4303 GITC NJIT, www.cs.njit.edu/~elsa/635 www.cs.njit.edu/~elsa/635

Post on 14-Dec-2015

215 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

  • Slide 1

Programming Language Concepts (CIS 635) Elsa L Gunter 4303 GITC NJIT, www.cs.njit.edu/~elsa/635 www.cs.njit.edu/~elsa/635 Slide 2 Copyright 2002 Elsa L. Gunter Contact Information Office: 4303 GITC Office hours: Mondays 10:45 11:25, 2:30 3:10 Wednesdays 10:45 12:10 Tuesdays and Thursdays by appointment Email: elsa@cis.njit.eduelsa@cis.njit.edu Slide 3 Copyright 2002 Elsa L. Gunter Course Structure Text: Concepts of Programming Languages, by Robert W. Sebesta (5th edition) Credit: Homework 35% (submitted in class) Includes programming Midterm 25% Final 40% Slide 4 Copyright 2002 Elsa L. Gunter Course Dates Homework due each Monday at the beginning of class. No email homework. March 11 : In class midterm DO NOT MISS EXAM DATE! Slide 5 Programming Language Concepts (CIS 635) Elsa L Gunter 4303 GITC NJIT, www.cs.njit.edu/~elsa/635 www.cs.njit.edu/~elsa/635 Slide 6 Copyright 2002 Elsa L. Gunter Personal History First began programming almost 30 years ago First languages: basic, DG nova assembler Since have programmed in at least 10 different languages Not including AWK, sed, shell scripts, latex, HTML, etc Slide 7 Copyright 2002 Elsa L. Gunter Personal History One language may not last you all day, let alone your whole programming life Slide 8 Copyright 2002 Elsa L. Gunter Programming Language Goals Original Model: Computer expensive, people cheap; hand code to keep computer busy Today: People expensive, computers cheap; write programs efficiently and correctly Slide 9 Copyright 2002 Elsa L. Gunter Programming Language Goals Mythical Man-Month Author Fred Brookes The most important two tools for system programming are (1) high- level programming languages and (2) interactive languages Slide 10 Copyright 2002 Elsa L. Gunter Why Study Programming Languages? Helps you to: understand efficiency costs of given constructs think about programming in new ways choose best language for task design better program interfaces learn new languages Slide 11 Copyright 2002 Elsa L. Gunter How to Study Programming Languages Many features for one language at a time or many languages for one feature at a time We will mainly choose the second method in this course Design and Organization Syntax: How a program is written Semantics: What a program means Implementation: How a program runs Slide 12 Copyright 2002 Elsa L. Gunter How to Study Programming Languages Major Language Features Imperative / Applicative / Rule-based Sequential / Concurrent Slide 13 Copyright 2002 Elsa L. Gunter Course Outline First Half History and Overview Introduction to SML Language Analysis and Translation Program Semantics Elementary Types Slide 14 Copyright 2002 Elsa L. Gunter Course Outline Second Half Abstraction and Encapsulation Structured Types Abstract datatypes Introduction to Java Abstraction and Encapsulation Inheritance Subprograms Modules Control of Execution Slide 15 Copyright 2002 Elsa L. Gunter Course Outline - Time allowing, Runtime Storage Management Distributed Computing Slide 16 Copyright 2002 Elsa L. Gunter Historical Environment Mainframe Era Batch environments (through early 60s and 70s) Programs submitted to operator as a pile of punch cards; programs were typically run over night and output put in programmers bin Slide 17 Copyright 2002 Elsa L. Gunter Historical Environment Mainframe Era Interactive environments Multiple teletypes and CRTs hooked up to single mainframe Time-sharing OS (Multics) gave users time slices Lead to compilers with read-eval- print loops Slide 18 Copyright 2002 Elsa L. Gunter Historical Environment Personal Computing Era Small, cheap, powerful Single user, single-threaded OS (at first any way) Windows interfaces replaces line input Wide availability lead to inter- computer communications and distributed systems Slide 19 Copyright 2002 Elsa L. Gunter Historical Environment Networking Era Local area networks for printing, file sharing, application sharing Global network First called ARPANET, now called Internet Composed of a collection of protocols: FTP, Email (SMTP), HTTP (HMTL), URL Slide 20 Copyright 2002 Elsa L. Gunter Features of a Good Language Simplicity few clear constructs, each with unique meaning Orthogonality - every combination of features is meaningful Flexible control constructs Slide 21 Copyright 2002 Elsa L. Gunter Features of a Good Language Rich data structures allows programmer to naturally model problem Clear syntax design constructs should suggest functionality Support for abstraction - program data reflects problem being solved; allows programmers to safely work locally Slide 22 Copyright 2002 Elsa L. Gunter Features of a Good Language Expressiveness concise programs Good programming environment Architecture independence and portability Slide 23 Copyright 2002 Elsa L. Gunter Features of a Good Language Readability Simplicity Orthogonality Flexible control constructs Rich data structures Clear syntax design Slide 24 Copyright 2002 Elsa L. Gunter Features of a Good Language Writability Simplicity Orthogonality Support for abstraction Expressivity Programming environment Portability Slide 25 Copyright 2002 Elsa L. Gunter Features of a Good Language Usually readability and writability call for the same language characteristics Sometimes they conflict: Comments: Nested comments (e.g /* /* */ */ ) enhance writability, but decrease readability Slide 26 Copyright 2002 Elsa L. Gunter Features of a Good Language Reliability Readability Writability Type Checking Exception Handling Restricted aliasing Slide 27 Copyright 2002 Elsa L. Gunter Language Paradigms Imperative Languages Main focus: machine state the set of values stored in memory locations Command-driven: Each statement uses current state to compute a new state Syntax: S1; S2; S3;... Example languages: C, Pascal, FORTRAN, COBOL Slide 28 Copyright 2002 Elsa L. Gunter Language Paradigms Object-oriented Languages Classes are complex data types grouped with operations (methods) for creating, examining, and modifying elements (objects); subclasses include (inherit) the objects and methods from superclasses Slide 29 Copyright 2002 Elsa L. Gunter Language Paradigms Object-oriented Languages Computation is based on objects sending messages (methods applied to arguments) to other objects Syntax: Varies, object