1. CSE240 – Introduction to
Programming Languages
Lecture 04:
Program Processing
Javier Gonzalez-Sanchez
javiergs@asu.edu
javiergs.engineering.asu.edu
Office Hours: By appointment
3. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 3
Program Processing: Interpretation
Interpreter is a program that translates in runtime and executes each statement
in the high level-language.
Advantages:
§ No separate compilation phase (quicker program development);
§ Good debugging information since the source code is being executed.
§ Abstraction
Disadvantages:
§ Slow execution
§ Can use more memory space
Why?
4. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 4
LISP
Steel Bank Common Lisp
https://sourceforge.net/projects/sbcl
7. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 7
Program Processing: Compilation
• Compiler is a program that translate the entire code from source to assembly
code.
• Assembler.
• Linker resolves external references (e.g., bring in code from libraries)
object
code
(binary)
linker
Executable binary
for
a specific machine
other
objects
source
program assembler
assembly
programcompiler
8. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 8
Program Processing: Compilation
Advantages:
• Faster than interpretation
• Good for multi-module programs
Disadvantages:
• Separate compilation phase
• May lose debugging info
9. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 9
C and C++
• Install Microsoft Visual Studio
• You can get it from MyASU / My Apps
Plan B
• Online Compiler for C/C++
https://www.onlinegdb.com/online_c_compiler
• Dev-C++ 5
http://www.bloodshed.net/devcpp.html
10. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 10
Program Processing
Program
Processing
Interpretation
LISP Prolog
Compilation
C C++
Two Step Translation
with Intermediate Code
Compilation
+
Interpretation
Java
Compilation
+
Compilation
C++
(.Net Solution)
C#
(.Net Solution)
11. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 11
Program Processing: Intermediate Code (Java)
Intermediate code make the language and compiler machine-independent.
This concept was implemented in 1970’s to simplify the compiler design. It is used
in Java.
bytecodeJava program javac Java virtual machine
Interpreter on a
specific machine
Simulator
or
Hardware
source
program
intermediate
code
Virtual
machinecompiler
12. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 12
Program Processing: Intermediate Code (Microsoft .Net)
Microsoft uses an intermediate code for its Common Language Runtime (CLR)
environment (.Net Runtime Environment), which is independent of languages
Prolog
F#
X
F# compiler
Prolog compiler
X compiler
JIT
AND
CLI
C#
Languages
MS IL
Just-In-Time
compiler
Intermediate
Language
Common
Language
Infrastructure
Compilers
C# compiler
C++ C++ compiler
C C compiler
Simulator
or
Hardware
13. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 13
Program Processing: Intermediate Code
Advantages:
• A single compiler for all machines
• A small virtual machine (interpreter) that even fits in a web browser
Disadvantages:
• Slow execution and memory space
• Separate compilation phase and may lose debugging info
14. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 14
Program Processing
Program
Processing
Interpretation
LISP Prolog
Compilation
C C++
Two Step Translation
with Intermediate Code
Compilation
+
Interpretation
Java
Compilation
+
Compilation
C++
(.Net Solution)
C#
(.Net Solution)
15. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 15
Test Yourselves
• Pros and Cons Interpreter
• Pros and Cons Compiler
• Pros and Cons Two-Steps Processing using Intermediate Code
16. CSE240 – Introduction to Programming Languages
Javier Gonzalez-Sanchez
javiergs@asu.edu
Fall 2017
Disclaimer. These slides can only be used as study material for the class CSE240 at ASU. They cannot be distributed or used for another purpose.