CS 326 Programming Languages, Concepts and Implementation

Slides:



Advertisements
Similar presentations
Chapter 8 High-Level Programming Languages. 8-2 Chapter Goals Describe the translation process and distinguish between assembly, compilation, interpretation,
Advertisements

Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter One Preliminaries, including –Why study PL concepts? –Programming domains –PL evaluation criteria.
Programming Languages Language Design Issues Why study programming languages Language development Software architectures Design goals Attributes of a good.
1 Lecture 1  Getting ready to program  Hardware Model  Software Model  Programming Languages  The C Language  Software Engineering  Programming.
Programming Languages Structure
PZ01BX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ01BX - Standardization, Internationalization Programming.
Organization of Programming Languages (CSE452)
Introduction to Computer Programming itc-314
PZ01A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ01A -- Introduction Programming Language Design and.
CS 326 Programming Languages, Concepts and Implementation
Chapter 1. Introduction.
CS 363 Comparative Programming Languages
CS 326 Programming Languages, Concepts and Implementation Instructor: Mircea Nicolescu Lecture 2.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Programming Languages Design Considerations (Qualities) Readability –Simplicity and Clarity –Orthogonality –Control Statements –Data Types and Structures.
Chapter 6 Programming Languages (1) Introduction to CS 1 st Semester, 2015 Sanghyun Park.
 Computer Languages Computer Languages  Machine Language Machine Language  Assembly Language Assembly Language  High Level Language High Level Language.
Analysis of Programming Languages (2). 2 LANGUAGE DESIGN CONSTRAINTS  Computer architecture  Technical setting  Standards  Legacy systems.
Textbook C for Scientists and Engineers © Prentice Hall 1997 Available at NUS CO-OP at S$35.10.
1-1 1 Introduction  Programming linguistics: concepts and paradigms syntax, semantics, and pragmatics language processors.  Historical development of.
Programming Language Concepts (CIS 635) Elsa L Gunter 4303 GITC NJIT,
Programming Language Theory 2014, 1 Chapter 1 :: Introduction Origin : Michael L. Scott School of Computer & Information Engineering,
Software Engineering Algorithms, Compilers, & Lifecycle.
1 Standardization, Internationalization Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section.
Chapter 1. Introduction.
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
 2001 Prentice Hall, Inc. All rights reserved.
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.
Concepts of Programming Languages
Why study programming languages?
CS 326 Programming Languages, Concepts and Implementation
CS 326 Programming Languages, Concepts and Implementation
PROGRAMMING LANGUAGES
Programming Language Hierarchy, Phases of a Java Program
CSCI-235 Micro-Computer Applications
CS 3304 Comparative Languages
CS 326 Programming Languages, Concepts and Implementation
CS 326 Programming Languages, Concepts and Implementation
Programming Language Design Concepts
CS 326 Programming Languages, Concepts and Implementation
CS 326 Programming Languages, Concepts and Implementation
Chapter 1 Reasons to study concepts of PLs Programming Domains
CS 326 Programming Languages, Concepts and Implementation
CS 326 Programming Languages, Concepts and Implementation
课程名 编译原理 Compiling Techniques
1.1 Reasons to study concepts of PLs
Chapter 1 Preliminaries.
Application Development Theory
Programming COMP104: Fundamentals and Methodology Introduction.
Evolution of programming languages
Developing Applications
Welcome to Programming Languages!
CSC128 FUNDAMENTALS OF COMPUTER PROBLEM SOLVING
Ada – 1983 History’s largest design effort
Programming Languages
Programming Languages 2nd edition Tucker and Noonan
High Level Programming Languages
Low Level Programming Languages
Introduction to Computer Programming
Von Neumann Architecture
Principles of Programming Languages
Overview of Programming Paradigms
Lecture 8 Programming Paradigm & Languages. Programming Languages The process of telling the computer what to do Also known as coding.
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
강의 내용 및 방법 작년 강의 결과에 대한 설명 올해 접근방법 리포트 시험
Programming Languages
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
School of Computer & Information Engineering,
ICS103 Programming in C 1: Overview of Computers And Programming
Presentation transcript:

CS 326 Programming Languages, Concepts and Implementation Instructor: Mircea Nicolescu Lecture 1 Good afternoon and thank you everyone for coming. My talk today will describe the research I performed at the IRIS at USC, the object of this work being to build a computational framework that addresses the problem of motion analysis and interpretation.

Contacts Instructor: Dr. Mircea Nicolescu Class web page: E-mail: mircea@cse.unr.edu Office: SEM 232 Office Hours: Thursday: 10:30am-1:30pm Class web page: http://www.cse.unr.edu/~mircea/Teaching/cs326

Assignments and Exams Homework assignments (40%) Midterm exam (25%) Written exercises and small programs More complex programs, in Scheme, Prolog, Java or ML Midterm exam (25%) Closed book, closed notes Final exam (30%) Comprehensive, although focused on the second half of the course Attendance and class participation (5%)

Late Submission Policy No late assignments will be accepted Warning: Dates in the calendar are closer than they appear!

Required Textbook Programming Language Pragmatics, by Michael L. Scott, Morgan Kaufmann Press, 2015.

What Are We Studying? Programming languages characterized by: Syntax – what a program looks like Semantics – what a program means Implementation – how a program executes Trade-offs between design (specifying syntax and semantics) and implementation Will focus on these concepts, illustrated by various languages, and not on the languages themselves

Why Study Programming Languages? Help you choose a language Systems programming → C, Modula-3 Scientific computations → Fortran, Ada Embedded systems → C, Ada, Modula-2 Symbolic computing → Lisp, Scheme, ML Make it easier to learn new languages Some languages are similar Some concepts are even more similar: iteration, recursion, abstraction

Why Study Programming Languages? Make better use of the languages you know Improve ability to develop effective algorithms Understand obscure features Understand implementation costs Simulate useful features in languages that do not support them Prepare for further study in language design and implementation (compilers) Help understand other system software (assemblers, linkers, debuggers)

Historic Perspective When did the earliest high-level languages appear? Continuous evolution since the 1950s (Fortran, Cobol) When the Department of Defense did a survey as part of its efforts to develop Ada in the 1970s, how many languages did it find in use? Over 500 languages were being used in various defense projects

Architecture Evolution 1950s – Large expensive mainframe computers ran single programs (Batch processing) 1960s – Interactive programming (time-sharing) on mainframes 1970s – Development of microcomputers. Early work on windows, icons, and PCs at XEROX PARC 1980s – Personal computer: IBM PC and Apple Macintosh. Use of windows, icons and mouse 1990s – Client-server computing - networking, the Internet, the World Wide Web

Spectrum of Languages Imperative (“how should the computer do it?”) Von Neumann: Fortran, Basic, Pascal, C Computing via “side-effects” (modification of variables) Object-oriented: Smalltalk, Eiffel, C++, Java Interactions between objects, each having an internal state and functions which manage that state Declarative (“what should the computer do?”) Functional: Lisp, Scheme, ML, Haskell Program ↔ application of functions from inputs to outputs Inspired from lambda-calculus (Alonzo Church) Logic, constraint-based: Prolog Specify constraints / relationships, find values that satisfy them Based on propositional logic

Why Are There So Many Languages? Evolution We have learned better ways of doing things over time Socio-economic factors Proprietary interests, commercial advantage Special purposes Special hardware Personal preference

What Makes a Language Successful? Easy to learn Basic, Pascal Easy to express things “Powerful” Easy to use once known C, Lisp Easy to implement Small machines, limited resources Basic, Forth

What Makes a Language Successful? Efficient compilers Generate small / fast code Fortran Backing of a powerful sponsor Ada, Visual Basic Wide dissemination at a minimal cost Pascal, Java Inertia Fortran, Cobol

Standardization Is i = 1 && 2 + 3 | 4; legal in C? What is assigned to i if it is? 3 ways to answer this: Read language manual (Problem: Can you find one?) Read language standard (Problem: Have you ever seen it?) Write a program to see what happens. (Easy to do!) Most do the last, but different compilers may give different answers

Standardization Language standards defined by: ISO - International Standards Organization IEEE - Institute of Electrical and Electronics Engineers ANSI - American National Standards Institute Contentious features omitted to gain consensus Nothing is enforced

Standardization When to standardize a language: Other languages: If too late – many incompatible versions already exist (Fortran in 1960) If too early – no experience with language (Ada in 1983 had no running compilers yet) Just right – probably Pascal in 1983, although it is rapidly becoming a dead language Other languages: C in 1988 LISP in 1990 – way too late De facto standards: ML – one major implementation: SML Smalltalk, Prolog – none

Standardization Internationalization: How many bits to use for characters Additional letters (German ä, French é) Other alphabets (Cyrillic, Greek, Arabic, Chinese) Organization that studies this problem cannot even decide between internationalization and internationalisation for its own name Other internationali*ation issues: Dates, times, daylight saving time Currency

A Simple Program Compute greatest common divisor of 2 integers: afbf0015 Machine language Sequence of bits that directly controls the processor Add, compare, move data, etc. Computer’s time more valuable than programmers’ time

A Simple Program Assembly language Mnemonic abbreviations, 1-to-1 correspondence to machine language Translated by an assembler Still machine-dependent

Readings Chapter 1