Programming Languages
Download
Report
Transcript Programming Languages
Chapter 17
Programming Tools
The Architecture of Computer Hardware
and Systems Software:
An Information Technology Approach
3rd Edition, Irv Englander
John Wiley and Sons 2003
Programming Tools Overview
Editors
Assemblers
Debuggers
Compilers
Linkers
Loaders
Interpreters
Integrated Development Environments (IDEs)
combine several of the above programming tools
Chapter 17 Programming Tools
17-2
The Program Translation Process
Terms,
terms, and
more terms!
Source
Translator
Object
Linker
Loader
Executable
Chapter 17 Programming Tools
17-3
Visual Basic IDE
Chapter 17 Programming Tools
17-4
Program Text Editors
Word processors format the appearance of the text
Text editors
Format the spacing between words for legibility
Ideal for structured languages
Text is the same font size
Examples
DOS – Edit
Windows – Notepad, Wordpad
Unix / Linux – ed, vi, emacs
IDEs
MS Visual C++, Symantec Visual Cafe
Chapter 17 Programming Tools
17-5
Programming Language
Categories
Machine Language
Binary coded instructions
Assembly Language
Symbolic coded instructions
Procedural Languages
procedural statements or arithmetic notation
Four-generation Languages
Natural language and nonprocedural statements
Object-oriented Languages
Combination of objects and procedures
Chapter 17 Programming Tools
17-6
Assembly Language
When to use
When speed or size of program is critical
Hybrid approach
Hardware Drivers
Can use specialized instructions
Disadvantages
Inherently machine specific
Architectures may become obsolete
Lack of programming structure
Chapter 17 Programming Tools
17-7
Assemblers
Binary code = machine code
Hex code
Assembly Language
Mnemonic names op codes
Labels memory addresses
Comments
Symbol table
Operations table
Memory Relocation
Cross Assembler
Chapter 17 Programming Tools
17-8
What Does This Program Do?
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
IN
STO 99
IN
STO 98
IN
STO 97
SUB 98
BRP 10
LDA 98
BR 11
LDA 97
STO 96
SUB 99
BRP 16
LDA 96
BR 17
LDA 96
OUT
COB
901
399
901
398
901
397
298
811
598
611
597
396
299
816
599
617
596
902
000
Chapter 17 Programming Tools
;input three numbers and save
;subtract number in 98 from that in 97
;number in 97 larger
;number in 98 larger, restore 98
;restore 97
;store larger of (97, 98) in 96
;subtract number in 99 from larger
;number in 96 larger
;number in 99 larger, restore 99
;restore 96
17-9
LMC Program in Java
Use instructions in a more understandable
language
static int max (int x[])
{
for (i=1; i<=3; i++)
x[i] = input.getint();
max_int = x[1];
for (i=2; i<=3; i++)
if (x[I] > max_int)
max_int = x[I];
System.output.println(max_int);
}
Chapter 17 Programming Tools
17-10
Procedural Languages
COBOL
Wordy but easier to maintain
FORTRAN
Scientists and engineers
BASIC
Pascal
Highly structured teaching language
C
high-level commands and low-level access to
hardware
Chapter 17 Programming Tools
17-11
Object-Oriented Languages
SmallTalk
C++
Java
Based on C++
Platform independent
Chapter 17 Programming Tools
17-12
Compilers
Translates high-level language into lowlevel instructions
High-level language: Source code
Machine-level: Object code
Changes, including bug fixes, require
recompiling
Chapter 17 Programming Tools
17-13
Language Components
Lexicon
All legal words in the language
Meaning and type
Syntax
grammar rules
Semantics
meaning of command
Chapter 17 Programming Tools
17-14
Computer Language Descriptions
Narrative
Syntax (Railroad) Diagrams
BNF
Backus-Naur Form
Context-Free Grammar
Chapter 17 Programming Tools
17-15
Railroad Diagram Examples
Chapter 17 Programming Tools
17-16
Typical BNF Rules for Java
Chapter 17 Programming Tools
17-17
Parsed English Sentence
Chapter 17 Programming Tools
17-18
The Compilation Process
Checks for
errors
Updates
internal
tables
Generates CPU
instructions or
library calls
Chapter 17 Programming Tools
17-19
Process of Parsing
Lexical analysis
Also known as scanning
Divides the string of input characters into
single elements, tokens, based on strict
computer punctuation
Syntactic analysis
Checks for errors in grammar rules
Semantic parsing
Determines the meaning of the string
Chapter 17 Programming Tools
17-20
Source Code Instructions
Data declarations:
Data type such as floating point, integer
Data operations
Instructions that update or compute data value
(lots of moving around!)
Control Structures
Branches, Goto (yetch!), If-then-else, loops such
as While-do and Repeat-until
Function, procedure, or subroutine calls
Receives control via a call instruction, receives
and possibly modifies parameters, and returns
control to the instruction after the call
Chapter 17 Programming Tools
17-21
Recursive Descent Parsing
Chapter 17 Programming Tools
17-22
Optimization
Compiler analyzes code in order to
Reduce amount of code
Eliminate repeated operations
Reorganize parts of of the program to execute
faster and more efficiently
Use computer resources more effectively
Example
Move a calculation repeated within the body of a
loop that does not use any value modified by the
loop
Different compilers can produce different
results!
Chapter 17 Programming Tools
17-23
Linking
Object file
Object
file or object
module
Linker
Executable
file
C library
Chapter 17 Programming Tools
17-24
Linkers
Searches program libraries to find library
routines used by the program
Library: collection of pre-written functions and
subroutines made available to perform commonly
required activities
Determines the memory locations that code
from each module will occupy and relocates
instructions by adjusting absolute references
Resolves references among files
Chapter 17 Programming Tools
17-25
Why Link?
Construct single executable program from
multiple object code files compiled at different
times
Program can be subdivided into components
and parceled out to different developers
Example
Main program and multiple subroutines written
and compiled by different programmers at different
times
Chapter 17 Programming Tools
17-26
Loader
Loads binary files that have been linked
into main memory
Program is ready for execution
Chapter 17 Programming Tools
17-27
Interpreters
Translates source code instructions into
machine language and executes it one
statement at a time
Disadvantages
Longer to execute, particularly bad for loops
Uses more memory
Advantage
Faster testing and code modification
Examples of interpreted languages
Java, BASIC, LISP
Chapter 17 Programming Tools
17-28
Interpreter vs. Compiler
Resources during execution
Interpreter
Compiler
Interpreter/compiler
Yes
No
Source code
Partial
No
Executable code
Yes
Yes
Translation operations
Yes
No
Library linking
Yes
No
Application program
Yes
Yes
Contents in memory
CPU cycles
Chapter 17 Programming Tools
17-29
Debuggers
Assembly language debuggers
Source code debuggers
Step through programs
Check variable values
Chapter 17 Programming Tools
17-30