0% found this document useful (0 votes)
24 views

Lesson3 IntroductionToCompilingA

The document discusses the evolution of programming languages from machine language to modern languages. It describes how early languages like Fortran, COBOL, and Lisp emerged in the 1950s to provide higher-level alternatives to machine code. More recent language developments include object-oriented languages, scripting languages, and a growing emphasis on type systems and abstraction to improve program reliability.

Uploaded by

Kay Escarro
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views

Lesson3 IntroductionToCompilingA

The document discusses the evolution of programming languages from machine language to modern languages. It describes how early languages like Fortran, COBOL, and Lisp emerged in the 1950s to provide higher-level alternatives to machine code. More recent language developments include object-oriented languages, scripting languages, and a growing emphasis on type systems and abstraction to improve program reliability.

Uploaded by

Kay Escarro
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 19

Language Design

Lesson 3
ICS 40
Topic Outline:
 Evolution of Programming Languages
 Language Designs

EBY Compilers Lesson 3


Evolution of Programming
Languages
 Machine language
 The move to higher-level languages
 Impacts on compilers

EBY Compilers Lesson 3


Evolution of Programming
Languages: Machine language
 1940’s - 1st electronic computers
 Machine language – sequences of 0’s
and 1’s
 Operations -Low-level
 Move data from one location to another
 Add the contents of two registers
 Compare two values
 Slow, tedious and error prone

EBY Compilers Lesson 3


Evolution of Programming
Languages: Higher-Level
 1950’s – mnemonic assembly languages
 Mnemonic representations of machine
instructions
 Macro instructions were added
 To define shorthands for frequently used
machine instructions
 1950’s latter half
 Fortran for scientific computation
 COBOL for business data processing
 Lisp for symbolic computation

EBY Compilers Lesson 3


Compiler Design Principles

Lesson 3
Introduction to Compiling (Cont.)
Evolution: Classification by
Generation
 First-Generation Languages
 Machine languages
 Second-Generation Languages
 Assembly Languages
 Third-Generation Languages
 Fortran
 COBOL
 Lisp
 C
 C++
 C#
 Java
EBY Compilers Lesson 3
Evolution: Classification by
Generation
 Fourth-Generation Languages
 NOMAD – for report generation
 SQL – database queries
 Postscript – text formatting
 Fifth-Generation Languages
 Logic & constraint-based languages
 Prolog
 OPS5

EBY Compilers Lesson 3


Evolution: Classification as
Imperative and Declarative
 Imperative
 For languages in which a program specifies how
a computation is to be done
 C, C++, C# and Java
 Declarative
 For languages in which a program specifies
what computation is to be done.
 ML, Haskell – functional languages
 Prolog – constraint logic languages

EBY Compilers Lesson 3


Evolution: as von Neumann
Languages
 Von Neumann Languages
 Fortran
 C
 Computational model is based on the
von Neumann computer architecture

EBY Compilers Lesson 3


Evolution: Object-Oriented
Language
 Supports object-oriented
programming
 A program consist of a collection of
object that interact with one another
 Simula 67
 Smalltalk
 C++, C#
 Java
 Ruby

EBY Compilers Lesson 3


Evolution: Scripting Languages
 Interpreted languages with high-level operators
designed for “gluing together” computations
 These computations were originally called “scripts”
 Awk
 JavaScript
 Perl
 PHP
 Phthon
 Ruby and
 Tcl
 These are much shorter than equivalent program
written in languages like C

EBY Compilers Lesson 3


Language Design:

 “A good language is one people use.”

EBY Compilers Lesson 3


Language Evaluation Criteria:
Characteristics Criteria
Readability Writeability Reliability

Simplicity * * *
Data Types * * *
Syntax Design * * *
Abstraction * *
Expressivity * *
Type Checking *
Exception Handling *
EBY Compilers Lesson 3
History of Ideas: Abstraction
 Modes of abstraction
 Via languages/compilers
 Higher-level code
 Via subroutine
 Abstract interface to behavior
 Via modules
 Export interfaces: hide implementation
 Via abstract data types
 Bundle data with its operations

EBY Compilers Lesson 3


History of Ideas:Types
 Originally, few types
 FORTRAN
 LISP
 Realization: Types help
 Allow the programmer to express abstraction
 Allow the compiler to check against many
frequent errors
 Recently
 Lots on interest in types
 Experiments with various forms of
parameterization
 Best developed in functional programming

EBY Compilers Lesson 3


History of Ideas:Reuse
 Goal: mass-produced software components
 2 popular approaches
 Type parameterization (List(int), List(double))
 Classes and inheritance
 Combined in C++ and Java
 Inheritance allows
 Specialization of existing abstraction
 Expension, modification and hiding behavior

EBY Compilers Lesson 3


Trends
 Language Design
 Compilers
 More needed and more complex
 Driven by increasing gap between
 New languages
 New architecture

EBY Compilers Lesson 3


Why study Languages and
Compilers?
1. See many basic CS concepts at work
2. Learn to build a large and reliable
system
3. Increase ability to learn new
languages
4. Improve understanding of program
behavior
5. Increase capacity of expression
EBY Compilers Lesson 3

You might also like