Programming Language Design

Slides:



Advertisements
Similar presentations
Programming Paradigms Introduction. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1:
Advertisements

Chapter Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing Describe.
The Analytical Engine Module 6 Program Translation.
1 Lecture 1  Getting ready to program  Hardware Model  Software Model  Programming Languages  The C Language  Software Engineering  Programming.
CS 101 Course Summary December 5, Big Ideas Abstraction Problem solving Fundamentals of programming.
A Quick Overview of Languages. FORTRAN Designed in 1955 First release of the compiler in 1957 Algebraic in nature Scientific (numeric not string oriented)
Programming Languages Structure
1 6 Abacus An early device to record numeric values Blaise Pascal Mechanical device to add, subtract, divide & multiply Joseph Jacquard Jacquard’s Loom,
Chapter 1 The Big Picture Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing.
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.
 2003 Prentice Hall, Inc. All rights reserved. Chapter 1 – Introduction to Computers, the Internet, and the Web Outline 1.1 Introduction 1.2 What Is a.
Chapter 01 Nell Dale & John Lewis.
History of Programming Languages
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
HERY H AZWIR Computer Software. Computer Software Outline Software and Programming Languages  Software  Programming  Programming language development.
Programming Language Rico Yu. Levels of Programming Languages 1.Low level languages 2.High level languages.
COMPUTER PROGRAMS AND LANGUAGES Chapter 4. Developing a computer program Programs are a set (series) of instructions Programmers determine The instructions.
Chapter 1 The Big Picture.
Computer system overview1 The Effects of Computers Pervasive in all professions How have computers affected my life? How have computers affected my life?
Programming History. Who was the first programmer?
1 Programming Language History and Evolution In Text: Chapter 2.
Programming Languages What is a programming language? –systematic notation by which we describe computational processes to others –notation for description.
Fortran Fortran – Formula Translation –Developed by John Backus (IBM) in the mid 1950s. –It was a team effort and the design goal was to produce a translation.
Chapter 1 The Big Picture Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing.
CS-303 Introduction to Programming
Programming Languages
1-1 1 Introduction  Programming linguistics: concepts and paradigms syntax, semantics, and pragmatics language processors.  Historical development of.
Programming Language Theory 2014, 1 Chapter 1 :: Introduction Origin : Michael L. Scott School of Computer & Information Engineering,
1 Chapter 1 Background Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne.
Programming 2 Intro to Java Machine code Assembly languages Fortran Basic Pascal Scheme CC++ Java LISP Smalltalk Smalltalk-80.
Computer Software 1.
a medium allowing humans and computers to communicate an abstraction of the real world a notation for expressing algorithms the set of all syntactically.
Programming Language History and Evolution
Chapter 1. Introduction.
Evolution and History of Programming Languages
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
The language focusses on ease of use
Chapter 1: An Overview of Computers and Programming Languages
Concepts of Programming Languages
Introduction to programming languages, Algorithms & flowcharts
Machine and Assembly Language
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?
Basic 1964 PC general purpose Imperative Small Easy to use.
Chapter 1 The Big Picture
Chapter 1 – Introduction to Computers, the Internet, and the Web
Introduction to programming languages, Algorithms & flowcharts
Evolution and History of Programming Languages
CSCI-235 Micro-Computer Applications
Programming Language Design Concepts
Chapter 1: An Overview of Computers and Programming Languages
Computer System and Programming
Programming Language History and Evolution
Programming COMP104: Fundamentals and Methodology Introduction.
Evolution of programming languages
Introduction to programming languages, Algorithms & flowcharts
CSC128 FUNDAMENTALS OF COMPUTER PROBLEM SOLVING
Chapter 1: An Overview of Computers and Programming Languages
Fundamentals of Computer Programming
Chapter 1: An Overview of Computers and Programming Languages
and Program Development
Principles of Programming Languages
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Programming Languages and Paradigms
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
School of Computer & Information Engineering,
Chapter 1 – Introduction to Computers, the Internet, and the Web
CS 330 Programming Languages
Presentation transcript:

Programming Language Design Computer Science 312 Programming Language Design

Computer Science Data structures Computer organization Theory of computation Algorithm analysis Programming language design Database management Artificial intelligence Operating systems Web and mobile apps Graphics and image processing Networks

Course Goals Experience the functional and concurrent programming styles Learn to program in Haskell, Erlang, and functional Java Learn to write scanners and parsers for different languages Have some FUN!

Computer as a Layered System Memory ALU Control Unit I/O Devices Transistors Logic Circuits Multiplexors Etc. Hardware A program and its data are patterns of voltage levels

Computer as a Layered System Machine language Hardware 001110100101 010010000011 110001010111 111111100000 001010100001 A program and its data are patterns of 1s and 0s

Computer as a Layered System Assembly language Hardware in length in width load length mul width store area out area halt A program and its data are patterns of mnemonic symbols

Computer as a Layered System High-level language while x > 0: if x % 2 == 0: evens = evens + 1 else: odds = odds + 1 x = x - 1 Hardware A program and its data are patterns of arbitrary symbols, with lots of syntactic structure for the programmer

Software Tools File manager Debugger Editor Profiler Compiler Linker Loader Run-time system Debugger Profiler CASE tools Hardware

History of Programming Languages Fifth Fourth Third Second First Hardware To a certain extent, the layers of programming languages mirror their historical evolution

History and Evolution First Second Third Fourth Fifth 1950 Machine Assembly FORTRAN 1960 ALGOL LISP COBOL 1970 PASCAL, C PROLOG Modula Smalltalk 1980 Ada Erlang Haskell C++, Java, and Python are hybrids of fourth and fifth

First Generation Languages Machine language Assembly language FORTRAN (FOrmula TRANslation Language)

First Generation Languages Programs have a linear structure, isomorphic with the underlying machine structure But FORTRAN allows algebraic notation

Second Generation Languages ALGOL (ALGOrithmic Language) COBOL (COmmon Business-Oriented Language) PL/1

Second Generation Languages Programs are hierarchical in structure Recursion Wide variety of data types and strong type checking

Third Generation Languages Pascal C

Third Generation Languages Hierarchical data structures (arrays, records) Dynamic memory (pointers)

Fourth Generation Languages Modula Ada

Fourth Generation Languages Support for information hiding in packages or modules Support for concurrency

Fifth Generation Languages LISP (LISt Processing Language) Smalltalk PROLOG (PROgramming in LOGic) Haskell, Erlang

Fifth Generation Languages Support for new paradigms of programming: Function-oriented (LISP) Object-oriented (Smalltalk) Logic-oriented (PROLOG) Concurrency-oriented (Erlang)

Multiple Models of Computation Functions Objects Gens 1-4 Hardware von Neumann Processes Logic

For next time: Read the Introduction of the Haskell book. Download and install the Haskell Platform for your computer. Bring it to class. https://www.haskell.org/downloads