Louden, Chapter 2/Scott, Chapter 11 Chapter 2 - History.

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

Introduction to Programming Languages Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University.
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter One Preliminaries, including –Why study PL concepts? –Programming domains –PL evaluation criteria.
CS ExCo Advanced in Topics Object-Oriented Programming.
Louden, Chapter 21 Chapter 2 - History Programming Languages: Principles and Practice, 2nd Ed.
Chapter Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing Describe.
Louden, Chapter 21 Chapter 2 - History Programming Languages: Principles and Practice, 2nd Ed.
1 ) Definition 2) Note on structured and modular programming, and information hiding 3) Example imperative languages 4) Features of imperative languages.
Reasons to study concepts of PL
ISBN Chapter 1 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Chapter 1 Topics Motivation Programming Domains.
Programming Languages Structure
ISBN Lecture 01 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Lecture 01 Topics Motivation Programming.
Chapter 1 Program Design
ISBN Chapter 1 Topics Motivation Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language.
Programming Language Concepts
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.
Chapter 01 Nell Dale & John Lewis.
History of Programming Languages
Programming Languages CPS120: Introduction to Computer Science Lecture 5.
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.
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
COMP313A Programming Languages More Overview. Language Implementation Language definition –syntax, semantics Language translation.
CS 363 Comparative Programming Languages
COMPUTER PROGRAMS AND LANGUAGES Chapter 4. Developing a computer program Programs are a set (series) of instructions Programmers determine The instructions.
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
CS 403 Programming Language Theory Class 2 - August 29, 2000.
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
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages.
Chapter 8 High-Level Programming Languages. 8-2 Chapter Goals Describe the translation process and distinguish between assembly, compilation, interpretation,
Programming Fundamentals. Today’s Lecture Why do we need Object Oriented Language C++ and C Basics of a typical C++ Environment Basic Program Construction.
Chapter 12 Computer Programming. Chapter Contents Chapter 12: Computer Programming 2  Section A: Programming Basics  Section B: Procedural Programming.
Chapter 6 Programming Languages (1) Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Programming Languages What is a programming language? –systematic notation by which we describe computational processes to others –notation for description.
Programming Language 1. Programming language A programming language is a machine-readable artificial language designed to express computations that can.
The Evolution of Programming Languages Day 2 Lecturer: Xiao Jia The Evolution of PLs1.
Structured Programming
CLASSIC COMPUTING TECHNOLOGY Programming Paradigms.
Chapter 3 - Language Design Principles
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
IBM-Mainframes COBOL Class-1. Background and History  COBOL is an acronym for: Common Business Oriented Language  COBOL was developed in 1959 by the.
FORTRAN History. FORTRAN - Interesting Facts n FORTRAN is the oldest Language actively in use today. n FORTRAN is still used for new software development.
Principles of Programming Chapter 1: Introduction  In this chapter you will learn about:  Overview of Computer Component  Overview of Programming 
UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering CSCE 190 Programming Language Paradigms Fall 2014
An overview of C Language. Overview of C C language is a general purpose and structured programming language developed by 'Dennis Ritchie' at AT &T's.
Ada, Scheme, R Emory Wingard. Ada History Department of Defense in search of high level language around Requirements drafted for the language.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Chapter 1: Preliminaries Lecture # 2. Chapter 1: Preliminaries Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation.
小型系統 心情 vs. 古典樂 心情 vs. 古典樂 浪漫求籤系統 美食導航系統 季潔亭雅鈺熒岱芸 美食導航系統 楊氏音樂模擬大會考人瑋 若維 芷萱 伽倩 楊氏音樂模擬大會考 麥當勞熱量計算系統 火星文困擾你嗎 ? 火星文困擾你嗎 ? 歌詞知多少 - 挑戰你的腦容量英琪 日馨 青雪 鈺娟.
Programming Language Paradigms ITSK2314 Lecture 3.
History. Development Driven by Function Functions of a Programming Language –To describe computation for use by computers –To describe computation and.
First appeared Features Popular uses Basic This language emphasises on ease of use, allowing general purpose programming to those with a small amount of.
Programming Language History and Evolution
Zuse’s Plankalkül – 1945 Never implemented Problems Zuse Solved
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.
CSCI-235 Micro-Computer Applications
Programming Language History and Evolution
Computer Programming.
Ada – 1983 History’s largest design effort
Chapter 1 Preliminary. Chapter 1 Preliminary 1.1 Reasons for Studying Concepts of Programming Languages Increased capacity to express ideas Improved.
Programming Languages 2nd edition Tucker and Noonan
Chapter 1 Introduction(1.1)
Introduction to Computer Programming
Von Neumann Architecture
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Programming Languages, Preliminaries, History & Evolution
Presentation transcript:

Louden, Chapter 2/Scott, Chapter 11 Chapter 2 - History

Thought questions When (decade) was first compiler written for a high level machine? What were the first languages like? Why do we have so many languages? What makes a language popular? How is the importance of a language judged? Louden, Chapter 2/Scott, Chapter 12

3 Example of Babylonian “Programming” (p. 35 of text) to make an underground cistern to hold water: A cistern. The length equals the height - we want the width. A certain volume of dirt has been excavated. The cross-sectional area plus this volume comes to 120. The length is 5. What is the width? Add 1 to 5, getting 6. Divide 6 into 120, obtaining 20. Divide 5 into 20, obtaining the width, 4. This is the procedure.

Louden, Chapter 2/Scott, Chapter 14 Notes on Babylonian “Program”: Despite the numbers, it is expressing an algebraic solution to equations: –Area + Volume = T (120 in the example) –Area = length  width –Volume = length  width  height –height = length –In code: T = length * width + length * width * length –Solving for the width: w = T / (length + length * length) = T / (1 + length) / length

Louden, Chapter 2/Scott, Chapter 15 Jacquard Loom (Early 1800’s) Machines for weaving cloth Weaving pattern was programmed by cards / paper tape

Louden, Chapter 2/Scott, Chapter 16 Babbage’s Analytical Engine (Design) Mechanical digital computer (cogs, levers…) Programmed by a sequence of data and operation cards Never fully built, but some programs were written by Ada Lovelace (first programmer) Charles Babbage ( ) was an eminent figure in his day, He was a close acquaintance of Charles Darwin, Sir John Herschel, Laplace, and Alexander Humboldt, and was author of more than eighty papers and books on a broad variety of topics. His vision of a massive brass, steam-powered, general- purpose, mechanical computer inspired some of the great minds of the nineteenth century but failed to persuade any backer to provide the funds to actually construct it. It was only after the first computers had been built that designers discovered the extent to which Babbage had anticipated almost every aspect of their work.

Louden, Chapter 2/Scott, Chapter ’s: Languages without Machines Lambda Calculus by Alonzo Church (1941) –The basis for functional programming languages Konrad Zuse, a German engineer working alone while hiding out in the Bavarian Alps, develops Plankalkul (1945). Means “Plan calculus”. Different machine architecture (typical was: program variables, control statements, assignments, expressions) It includes assignment statements, subroutines, conditional statements, iteration, floating point arithmetic, arrays, hierarchical record structures, assertions, exception handling, and other advanced features such as goal-directed execution.

Assembly Languages Assembly languages were originally designed 1-1 correspondence with machine language. Translating from a high level language to assembly language requires a compiler. Louden, Chapter 2/Scott, Chapter 18

9 1950’s: first Implemented high level languages Early 1950’s: First few stored program computers working. –Mark 1, EDSAC, ACE, EDVAC, UNIVAC 1 Small memory machines Programmed in machine code The good old days!!

Louden, Chapter 2/Scott, Chapter 110 Rear Admiral Grace Mary Hopper Programmer on Mark I, Mark II, and Mark III computers and UNIVAC I, the first large-scale electronic digital computer 1949 began work on first compiler A-0 –Translated symbolic mathematical code into machine code Then came B-0, later called FLOW-MATIC. –automatic billing and payroll calculation She conceptualized and led the development of COBOL (1959) Popularized the term “debugging”

Louden, Chapter 2/Scott, Chapter 111 Grace Hopper quotes … It's easier to ask forgiveness than it is to get permission A ship in port is safe, but that is not what ships are for. Sail out to sea and do new things the most damaging phrase in the language is ‘We've always done it this way’

Louden, Chapter 2/Scott, Chapter 112 FORTRAN - the first language John Backus: leader of the group at IBM that developed FORTRAN and its compiler A tool for scientific calculation (FORmula TRANslation). Execution efficiency the main goal. Still very much in use today (Fortran I, II, III, IV, Fortran66, Fortran77, Fortran90, Fortran95).

Louden, Chapter 2/Scott, Chapter 113 Overview of FORTRAN IV Column 1 (punched cards) used to indicate comment lines Column 2-5 used for line numbers (optional, dropping deck was serious) Data: integer, real, arrays (no chars, records or pointers!) Variable declarations are optional (variables starting with I..N are integer, others are real)

Louden, Chapter 2/Scott, Chapter 114 Overview of FORTRAN IV… Has a three-way if test, goto statements and computed gotos (like a switch), but no recursion EQUIVALENCE declaration causes variables to be aliased (dangerous!)

Louden, Chapter 2/Scott, Chapter 115 Other languages followed quickly: Algol: ( Fortran inventor Backus also involved). “Algorithmic language”. Finalized as Algol60. Much like C, except only arrays. Lives on in C, Java, C++. Lisp: (John McCarthy, still active at Stanford). Lives on as Scheme, Common Lisp. COBOL: (Grace Hopper). Lives on in many business applications.

Louden, Chapter 2/Scott, Chapter 116 COBOL ( ) Common Business-Oriented Language Developed in 1959 by a group of computer professionals called the Conference on Data Systems Languages (CODASYL). COBOL was the first programming language whose use was mandated by the US Department of Defense

Louden, Chapter 2/Scott, Chapter 117 COBOL… English – like verbose syntax (Goal: Human readability – but didn’t really help) Largely ignored by the academic community And if you thought COBOL was dead… Think again.. Object-oriented COBOL is a subset of COBOL 97, which is the fourth edition in the continuing evolution of ANSI/ISO standard COBOL

Louden, Chapter 2/Scott, Chapter IDENTIFICATION DIVISION PROGRAM-ID. HELLOWORLD * ENVIRONMENT DIVISION CONFIGURATION SECTION SOURCE-COMPUTER. RM-COBOL OBJECT-COMPUTER. RM-COBOL DATA DIVISION FILE SECTION PROCEDURE DIVISION MAIN-LOGIC SECTION BEGIN DISPLAY " " LINE 1 POSITION 1 ERASE EOS DISPLAY "Hello world!" LINE 15 POSITION STOP RUN MAIN-LOGIC-EXIT EXIT.

Louden, Chapter 2/Scott, Chapter 119 ALGOL 60 ( ) ALGOrithmic Language: general expressive language for describing algorithms Used widely in Europe and academia in USA Modern syntax: defined using BNF, free format, structure statements, with begin/end pairs Type declarations required for all variables

Louden, Chapter 2/Scott, Chapter 120 ALGOL60… Introduced recursion, call-by-name and call-by-value Required stack-based runtime environment Huge influence on later languages: Pascal, C, Module-2, Ada etc

Louden, Chapter 2/Scott, Chapter 121 Call-by-name Page 321 Louden The argument is not evaluated until its actual use (as a parameter) in the called procedure The name of the argument replaces the name of the parameter it corresponds to

Louden, Chapter 2/Scott, Chapter 122 LISP ( ) The first functional language The first language to include garbage collection Intended for list processing and symbolic manipulation Syntax was radically different – lots of parentheses Efficiency not a huge concern. Ideas more important Still heavily used today for AI research and applications IDE

Louden, Chapter 2/Scott, Chapter 123 Reverse a list (defun reverse (L) (if (null L) nil (list-append (reverse (rest L)) (list (first L)))))

Louden, Chapter 2/Scott, Chapter 124 Many new languages followed: PL/I: Programming Language One. “Universal language” – business and scientific processing. Forward-looking, but (largely) a failure. Too big, ahead of its time. Algol68: a theoretical triumph. A practical disaster. Still a very interesting language. BASIC: Distilled the most elementary ideas for the simplest computers. Still alive. Simula67: the first OO language. Way ahead of its time. But inefficient.

Louden, Chapter 2/Scott, Chapter 125 The 70s: simplicity and abstraction. C (Ritchie, 1972), Pascal (Wirth,1971). Much simpler than 60s languages, but they add data structures a la COBOL and structured control a la Algol60. Added no new concepts to language design. C sometimes called middle layer (rather than high level a it is so close to underlying architecture “ADT” languages CLU, Euclid, Mesa, examined the ways programs can be decomposed into independent units ( ). Scheme (Sussman, Steele, 1975): a “regularized” LISP.

Louden, Chapter 2/Scott, Chapter 126 The 80s: the rise of modularity and object-orientation. Modula-2 (Wirth, 1982). A not-so-successful sequel to Pascal. (After its time.) Ada (Ichbiah, 1980). A real attempt at a universal language, and much more successful than PL/I. But too bureaucratic for most programmers. Smalltalk80 (Alan Kay). Advances the cause of OO programming. C++ (Stroustrup, ). Shows that OO programming can be efficient.

Louden, Chapter 2/Scott, Chapter 127 The 90s: technology takes off Increasing need for big libraries, APIs. Java (Gosling, 1995). The first language to come with an API already developed. System programming becomes huge (Perl, Tcl, Javascript, VBScript, Python, PHP) Scripting languages tie together utilities, library components, and operating system commands into complete programs. Functional languages keep pace: ML (Milner, ); Haskell (Hudak, Peyton-Jones, Wadler, ).

Louden, Chapter 2/Scott, Chapter 128 What’s next? C# (2000). Will it really replace Java? Where will Java be in 5 or 10 years? (Most platform-specific applications are still written in C++ or C.) Will a “new” language come along? What happened to Prolog (Colmerauer creator, )? Does it make any sense to try to predict?

Why are there so many programming languages? Evolution – we are constantly finding better ways to do things Special Purpose – many languages designed for a particular goal. Ex: Ruby less code to write, support for regular expressions Personal Preference Expressive power – ability to write clear, concise, maintainable code Louden, Chapter 2/Scott, Chapter 129

Why are there so many programming languages? (cont) Ease of use for novice Ease of implementation. Pascal became popular largely because of simple, portable, free implementation Standardization. Pascal was abandoned because of missing several features which were implemented in different ways. such features as separate compilation, strings, static initialization, I/O) Louden, Chapter 2/Scott, Chapter 130

Why are there so many programming languages? (cont) Excellent compilers and IDE. Fortran owes much to the excellent compilers for Fortran. Economics patronage and Inertia. Cobol is still used due to the economic investment in existing code. Louden, Chapter 2/Scott, Chapter 131