LESSON 03
description
Transcript of LESSON 03
LESSON 03
Overview of
Previous Lesson(s)
3
Over View
Compilers are the s/w systems that translated a source language program to a form in which it can be executed by a computer.
Program in Source Language
CompilerProgram in Target Language
Errors
4
Over View..
An Interpreter appears to directly execute the program and provide output.
Source Program Interpreter Output
Error Messages
Input
Over View…
Language Processing System
5
Source Program
Interpreter
Modified Source Program
Compiler
Target Assembly Program
Assembler
Relocatable Machine Code
Linker / LoaderTarget Machine Code
Library FileRelocatable Object Files
6
Over View… Structurally, Compiler can be divided into two parts
Analysis determines the operations implied by the source program which are recorded in a tree structure.
Synthesis takes the tree structure and translates the operations therein into the target program.
7
Over View…
A typical decomposition of a compiler can be done into several phases.
Symbol Table
8
Over View…
Translation of (Ex) Assignment Statement
9
TODAY’S LESSON
10
Contents Programming Language Generations
1st - 5th Generation Languages Impacts on Compilers
Science of Building a Compiler Modeling in Compiler Design Code Optimization
Applications of Compilers Programming Language Basics
Static / Dynamic Distinction Environment and States Variables & Scope Structures & Functions
11
Programming Languages Generations
Language can also be classified using generations as well.
First-generation programming language (1GL)
Introduced in the 1940s Instructions/Data entered directly in binary Memory must be manually moved around Very difficult to edit/debug Simple programs only
Examples:Architecture specific binary delivered on Switches, Patch Panels and/or Tape.
12
Programming Languages Generations.. 2nd generation programming language (2GL)
Assembly languages were introduced in 1950s to mitigate the error prone and excessively difficult nature of binary programming.
Used today for embedded systems and optimization. Specific to platform architecture Defined by three language elements:
Opcodes (CPU Instructions)Data Sections (Variable Definitions)Directive (Macros)
Examples:Most commonly use in RISC, CISC and x86 as that is what our embedded systems and desktop computers use.
13
Programming Languages Generations...
3rd generation programming language (3GL)
Third generation languages introduced in later 1950s , are the primary languages used in general purpose programming today.
Designed for the easy use of programmer. Based on natural language. Use Structural approach.
Examples:C, C++, C#, Java, Basic, COBOL, Lisp and ML.
14
Programming Languages Generations...
4th generation programming language (4GL)
A fourth generation language introduced in 1970s is designed with making problems in a specific domain simple to implement.
Driven by the need to enhance developer productivity. Further from the machine.
Examples:SQL, SAS, R, MATLAB's GUIDE, ColdFusion, CSS.
15
Programming Languages Generations...
5th generation programming language (5GL)
5th generation language introduced in 1990s is designed as constraint systems. Constraint-based instead of algorithmic. Used for AI Research, Proof solving, Logical Inference. Not in common use.
Examples:Prolog, Mercury.
Some applications of Prolog are:Intelligent data base retrievalNatural language understandingExpert systems
16
Programming Languages Generations...
Object Oriented Approach
It is a programming style in which a program consists of a collection of objects that interact with one another.
Commonly used now a days.
Examples:Simula 67, Smalltalk, C++, C#, Java and Ruby.
17
Programming Languages Generations...
Scripting Languages
Scripting languages are interpreted languages with high-level operators designed for "gluing together" computations.
Programs written in scripting languages are often much shorter than equivalent programs written in languages like C.
Examples: Awk, JavaS cript, Perl, PHP, Python, Ruby, and TCl.
18
Impact on Compilers
Design of programming languages and compilers are intimately related. Advances in programming languages placed new demands on compiler
writers.
Compilers can help promote the use of high-level languages by minimizing the execution overhead.
Compilers are also critical in making high-performance computer architectures. Used as a tool in evaluating architectural concepts before a computer is
built.
19
Science of Compiler Building
A compiler must accept all source programs that conform to the specification of the language. The set of source programs is infinite and any program can be very large,
consisting of possibly millions of lines of code.
Any transformation performed by the compiler must preserve the meaning of the program being compiled.
20
Modeling in Compiler Design
Most fundamental models in compiler design are: Finite State Machines Regular Expressions Context-Free Grammars
Mainly these are used for Describing the lexical units of programs i.e keywords, identifiers. Describing the algorithms used by the compiler to recognize those units. Describing the syntactic structure of programming languages such as the
nesting of parentheses or control constructs.
21
Code Optimization
Optimization: To produce code that is more efficient than the obvious code.
Compiler optimizations must meet the following design objectives:
The optimization must be correct, that is, preserve the meaning of the compiled program.
The optimization must improve the performance of many programs. The compilation time must be kept reasonable.
22
Compiler Applications
Compiler technology can be used in following ways:
Implementation of High-level languages Optimizations for computer architectures Designing in new computer architectures Program Translations S/w productivity tools
23
Programming Language Basics
Now we discuss the important terminology and distinctions appears in the study of programming language.
Lets start it.
24
Static / Dynamic Policy
If a language uses a policy that allows the compiler to decide an issue, then we say that the language uses a static policy.
A policy that only allows a decision to be made when we execute the program is said to be a dynamic policy.
25
Environment & States
The environment is a mapping from names to locations in the store.
The state is a mapping from locations in store to their values.
Environments change according to the scope rules of a language.
26
Identifiers & Variables
An identifier is a string of characters, typically letters or digits, that refers to an entity, such as a data object, a procedure, a class, or a type.Ex. Int result, class Box and soon …
A variable refers to a particular location of the store.
It is common for the same identifier to be declared more than once, each such declaration introduces a new variable.
27
Scopes in PL
28
Structures A structure is a collection of simple variables. The data items in a structure are called the members of the
structure.
29
Functions
A function groups a number of program statements into a unit and gives it a name.
This unit can then be invoked from other parts of the program.
The function’s code is stored in only one place in memory, even though the function is executed many times in the course of the program.
30
Passing Arguments to Function An argument is a piece of data passed from a program to the
function.
Arguments allow a function to operate with different values, or even to do different things, depending on the requirements of the program calling it.
Parameters are passed from a calling procedure to the callee either by value or by reference.
Input, Processing, and Output Three steps that a program typically performs:
Gather input data: from keyboard from files on disk drives
Process the input data
Display the results as output: send it to the screen write to a file
Thank You