Lecture 1: Introduction



Similar documents
Principles of Programming Languages Topic: Introduction Professor Louis Steinberg

CSE 307: Principles of Programming Languages

Programming Languages

CSCI 3136 Principles of Programming Languages

Announcements FORTRAN ALGOL COBOL. Simula & Smalltalk. Programming Languages

CSC Software II: Principles of Programming Languages

Languages september 12, 2015 Éric Lévénez < FORTRAN III end-1958 FORTRAN II FORTRAN I october 1956

Programming language concepts

High-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser)

Chapter 1. Dr. Chris Irwin Davis Phone: (972) Office: ECSS CS-4337 Organization of Programming Languages

Chapter 6: Programming Languages

History of Programming Languages

Chapter 13 Computer Programs and Programming Languages. Discovering Computers Your Interactive Guide to the Digital World

CSE 130 Programming Language Principles & Paradigms

How To Understand Programming Languages And Programming Languages

Understanding Programming Languages

Programming Language Pragmatics

Semester Review. CSC 301, Fall 2015

What is a programming language?

Chapter 5 Names, Bindings, Type Checking, and Scopes

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

On the (un)suitability of Java to be the first programming language

Programming Language Concepts for Software Developers

THE ROLE OF PROGRAMMING PARADIGMS IN THE FIRST PROGRAMMING COURSES. 1. Introduction

Asogwa Tochukwu Chijindu Department of Computer Engineering, Enugu State University of Science and Technology(ESUT), Enugu, Nigeria.

Functional Programming

Concepts of Programming Languages: A Unified Approach. Karl Abrahamson

1/20/2016 INTRODUCTION

Evolution of the Major Programming Languages

1.1 WHAT IS A PROGRAMMING LANGUAGE?

Functional Programming. Functional Programming Languages. Chapter 14. Introduction

The Evolution of Programming Languages

McGraw-Hill The McGraw-Hill Companies, Inc.,

COS 301 Programming Languages

Object-Oriented Software Specification in Programming Language Design and Implementation

Chapter 13: Program Development and Programming Languages

Do general-purpose programming languages have a future?

Fundamentals of Programming Languages

n Introduction n Art of programming language design n Programming language spectrum n Why study programming languages? n Overview of compilation

On Understanding Types, Data Abstraction, and Polymorphism

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

ATSBA: Advanced Technologies Supporting Business Areas. Programming with Java. 1 Overview and Introduction

Evolution of the Major Programming Languages

Ed. v1.0 PROGRAMMING LANGUAGES WORKING PAPER DRAFT PROGRAMMING LANGUAGES. Ed. v1.0

Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

Programming Languages

On Understanding Types, Data Abstraction, and Polymorphism

programming languages, programming language standards and compiler validation

Course Goal CMSC 330: Organization of Programming Languages. Studying Programming Languages. All Languages Are (Kind of) Equivalent.

White Paper: 5GL RAD Development

Programming and Software Development CTAG Alignments

Introduction to Software Paradigms & Procedural Programming Paradigm

Software: Systems and Application Software

Image credits:

Instructor Özgür ZEYDAN BEU Dept. of Enve. Eng. CIV 112 Computer Programming Lecture Notes (1)

BCS Higher Education Qualifications. Professional Graduate Diploma in IT. Programming Paradigms Syllabus

Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam.

Parameter passing in LISP

History OOP languages Year Language 1967 Simula Smalltalk

Ch. 10 Software Development. (Computer Programming)

Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm

[Refer Slide Time: 05:10]

1 Idioms, Patterns, and Programming

1 File Processing Systems

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1

Glossary of Object Oriented Terms

Fundamentals of Java Programming

æ A collection of interrelated and persistent data èusually referred to as the database èdbèè.

Chapter 12 Programming Concepts and Languages

Chapter 15 Functional Programming Languages

Programming Languages

Lecture 9. Semantic Analysis Scoping and Symbol Table

COURSE CODE: CSC 411 Organization of Programming Languages

How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer

Java (12 Weeks) Introduction to Java Programming Language

Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science

Inheritance in Programming Languages

Bachelor of Games and Virtual Worlds (Programming) Subject and Course Summaries

Chapter 14. Programming and Languages. McGraw-Hill/Irwin. Copyright 2008 by The McGraw-Hill Companies, Inc. All rights reserved.

Datavetenskapligt Program (kandidat) Computer Science Programme (master)

Chapter 1: Introduction

Scoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6)

The Impact of Software Engineering Research on Modern Progamming Languages

01 Introduction. The timeline

.NET Overview. David Smith. Today s s Topics. Why am I here? A tool. Microsoft s s Vision for.net

Static vs. Dynamic. Lecture 10: Static Semantics Overview 1. Typical Semantic Errors: Java, C++ Typical Tasks of the Semantic Analyzer

Chapter 13: Program Development and Programming Languages

How to simplify software development with high level programming languages? Pierre-Alexandre Voye - ontologiae@gmail.com

Hello World: An Instance Rhetoric in Computer Science

Division of Mathematical Sciences

The Elective Part of the NSS ICT Curriculum D. Software Development

COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING

Programming Languages in Artificial Intelligence

Data Abstraction and Hierarchy

FACULTY OF COMPUTER SCIENCE AND INFORMATION TECHNOLOGY AUTUMN 2016 BACHELOR COURSES

Levels of Programming Languages. Gerald Penn CSC 324

ABET General Outcomes. Student Learning Outcomes for BS in Computing

CSE341: Programming Languages Lecture 7.5 Course Motivation. Dan Grossman Fall 2011

Transcription:

Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech

Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming Languages Course topics

Programming Languages Lecture 1 Introduction 3 Programming Languages Representation that allows humans to communicate with a computer Abstraction of a machine language Different languages provide different abstractions

Programming Languages Lecture 1 Introduction 4 Kinds of Abstractions Data abstractions primitive data types: numeric, characters, booleans, pointers structured types: arrays, records unit: support for ADTs, modules, packages, classes Control abstractions basic: assignment, goto, sequencing structured: conditionals, loops, procedures and functions unit: separately compiled units, modules, packages, concurrent tasks

Programming Languages Lecture 1 Introduction 5 Defining Languages Program sequence of symbols that specify a computation Programming Language a set of rules that specify which sequences of symbols constitute a program, and what computation the program describes. Syntax how program is formed Semantics what program does Pragmatics how language is used

Programming Languages Lecture 1 Introduction 6 Language Goals Languages designed for different purposes Fortran numerical computation Pascal teaching programming C low-level system programming Evaluate language with respect to goals of its design

Programming Languages Lecture 1 Introduction 7 Languages and Software Development Language design goals may conflict with large-scale system development Modern languages support specific design methodology/philosophy functional design object-based design encapsulation information-hiding Language influences how people think about programming

Programming Languages Lecture 1 Introduction 8 Language Paradigms Computer architecture led to imperative Others developed as different ways to solve problems Functional computation as expression evaluation, popular in AI and theoretical programming language communities. Logical computation as proving queries. AI and database query languages. Object-Oriented computation as manipulation of/or interaction of objects.

Programming Languages Lecture 1 Introduction 9 Language Requirements Universal if a problem can be solved on a computer, then can solve it in the language Natural (expressive) easy to express solutions Implementable Efficient writing, compilation, or execution Reliable ability to deal with exceptional behavior Maintainable easy to make changes to programs

Programming Languages Lecture 1 Introduction 10 History Trend from machine language toward high-level languages Trend from single programmer to teams of programmers Early Languages FORTRAN John Backus, IBM, 1957. Goals: efficient compilation of solutions to numerical problems. Multiple revisions (latest in 90 s). Algol 60 committee, 1960. Goals: numeric, block structure, recursion. Influential on most modern languages. COBOL committee, 1960. Goals: business data processing. Multiple revisions.

Programming Languages Lecture 1 Introduction 11 More Early History LISP John McCarthy, MIT, 1962. Functional core. Goals: List processing, symbolic manipulation (AI applications). APL Iverson, Harvard, 1960. Calculator language for array computations. SNOBOL 4 Griswold, Bell Labs, 1966. Goals: string processing with pattern matching. PL/I committee at IBM, 1967. Attempt to combine FORTRAN, COBOL, Algol 60. Large language difficult to learn and use.

Programming Languages Lecture 1 Introduction 12 More History Algol 68 Algol with orthogonal elements. Elegant, but hard to understand. Simula 67 simulation language based on Algol 60. Basis for most object-oriented languages. Pascal Wirth, ETH-Zurich, 1971. Teaching language designed to support structured programming. Simple and elegant.

Programming Languages Lecture 1 Introduction 13 Further Developments Module support for abstract data types: Clu, Mesa, Modula-2, Ada Object-oriented: Smalltalk (70 s), Eiffel, C++, Object Pascal, Java Functional: Scheme (80 s), ML (70 s), Miranda, Haskell Logical: Prolog, newer constraint languages

Programming Languages Lecture 1 Introduction 14 Fourth Generation Languages Languages in business applications Specialized packages of powerful commands with simplified syntax.

Programming Languages Lecture 1 Introduction 15 Family Tree of Important Languages 1960 APL Algol 60 Fortran PL/I COBOL Lisp Snobol 4 1970 Algol 68 Smalltalk Simula Pascal Clu C Prolog 1980 Eiffel Modula 2 Oberon Ada C++ ML Miranda Haskell ICON 1990 Ada 95 Java

Programming Languages Lecture 1 Introduction 16 Course Topics Language features: modules, classes, exception handling, generic types, etc. Functional, object-oriented, logical and imperative paradigms. Support for reliable programming: abstraction, encapsulation, information hiding, polymorphism, higher-order operators. Support for concurrency. Formal definition of programming languages. Compilers and interpreters. Run-time behavior of programming languages