High-level Languages

coordinatedcapableSoftware and s/w Development

Nov 4, 2013 (3 years and 9 months ago)

102 views

High
-
level Languages

Assembly language benefits

Hides details of hardware



Assembly language benefits

Hides details of hardware

Easier to remember instruction names

Assembly language benefits

Hides details of hardware

Easier to remember instruction names

A tiny step closer to how humans think


Assembly language benefits

Hides details of hardware

Easier to remember instruction names

A tiny step closer to how humans think

Assembly language is a useful level of
abstraction from the bare hardware


Assembly language benefits

Hides details of hardware

Easier to remember instruction names

A tiny step closer to how humans think

Assembly language is a useful level of
abstraction from the bare hardware

Assembly language programs must be
"assembled" into machine language
executables.

Assembly Language issues

Still tied directly to the machine language
instruction set

Assembly Language issues

Still tied directly to the machine language
instruction set

Most machine language instructions do
only a tiny amount of work

Assembly Language issues

Still tied directly to the machine language
instruction set

Most machine language instructions do
only a tiny amount of work

Humans solve problems at a higher level,
using much larger steps

Example

For each value I read in from a file

If the value is negative, then


add it to the list of expenditures

Otherwise


add it to the list of income


(This is pseudo
-
code, like the way we write
textual storyboards)

High
-
level languages

Def: a programming language that
provides statements that are a closer
match to the way humans solve problems
than assembly language.

Why can't we just write programs in
English (or any other spoken language)?

Examples

COBOL


business application language

FORTRAN


scientific application
language

BASIC, Pascal


teaching languages

Ada


designed and used for US military
software

Smalltalk


early object
-
oriented language

C, C++
-

systems/general purpose
languages

Can a program in a high
-
level language be
executed on a computer?

High
-
level language translation

compiler


a program that translates a
program written in a particular high level
language into another form.

What form should a compiler output?

Compiled languages

High level languages that are translated
into a machine language executable are
called "compiled languages."

Executables might be called "native code."

HLL correspondence to AL

Benefit of HLL is being able to work in
"bigger steps."

One HLL statement might translate to
many AL/ML instructions


HLL correspondence to AL

Benefit of HLL is being able to work in
"bigger steps."

One HLL statement might translate to
many AL/ML instructions

sum = sum + value;

Java statement

HLL correspondence to AL

Benefit of HLL is being able to work in
"bigger steps."

One HLL statement might translate to
many AL/ML instructions

sum = sum + value;

Java statement

Woody equivalent


CopyFrom sum

Add value

CopyTo sum

Hierarchy of abstraction

High
-
level lang.

program

Compiler

Assembly language

program

Assembler

Machine language

program

Language closest to "how humans think."

Input for compiler

Hierarchy of abstraction

High
-
level lang.

program

Compiler

Assembly language

program

Assembler

Machine language

program

Translates programs from a specific HLL

into a particular architecture's assembly

language.

Hierarchy of abstraction

High
-
level lang.

program

Compiler

Assembly language

program

Assembler

Machine language

program

"Human readable" form of a particular

architecture's machine language.

Input for assembler.

Hierarchy of abstraction

High
-
level lang.

program

Compiler

Assembly language

program

Assembler

Machine language

program

Translates a particular architecture's

assembly language into that archi
-

tecture's machine language.

Hierarchy of abstraction

High
-
level lang.

program

Compiler

Assembly language

program

Assembler

Machine language


program

Binary form executable version

of program.

Interpreted Languages

Interpreter


a program that can execute high
-
level language programs "directly," without first
being translated to machine language.

Code in the interpreter emulates the circuitry that
understands how to carry out each machine
language instruction.

Some are "scripting" languages, used to stitch
together existing executables to perform higher
level tasks.

Examples

TCL/TK

Python

Windows Batch files/Windows Scripting
Host

Perl

PHP


web scripting language

Compiled vs. interpreted

Compiled execution

Hardware follows
instruction cycle for
each machine
language instruction
in the executable

Interpreted execution

Interpreter translates
HLL statement, then
imitates hardware to
execute it.

Interpreted pros and cons

Pros




Cons


"Hybrid" languages

Goal: High Level Language with platform
-
independent executable format,
performance close to compiled languages.

How?

Examples

Java


originally intended for set
-
top
TV/Video boxes, widely used on the web


C#
-

Supported by MS .Net platform, their
answer to Java


How it works

Source program is compiled to an
intermediate form


byte code

Byte code is the assembly language for an
imaginary architecture

For each supported platform, write a
"virtual machine" emulator that reads byte
code and emulates its execution.

Java source

program

Java compiler

Java

Virtual

Machine

Java

Virtual

Machine

Java

Virtual

Machine

Java

Virtual

Machine

Wintel

Hardware

Sun

Hardware

IBM

Hardware

Mac

Hardware

Java byte code

Web server

HTML

Java

Applet

Java

Applet

Java

Applet

HTML

HTML

Java

Virtual

Machine

Java

Applet

Java

Virtual

Machine

Java

Applet

Java

Virtual

Machine

Java

Applet

web

request

web

request

web

request

"Just In Time" compilation

JVMs actually compile each bytecode
instruction to native code the first time it is
used.

Subsequent executions of that instruction
are faster.

Why would the same instruction be used
again?

Computer Systems

A computer system is the combination of
hardware and operating system

An operating system is the software that
controls the overall operation of the
computer, managing the processor,
memory, files and attached devices

Computer System examples

PC


MS Windows OS running on Intel
CPU

Mac


Mac OS running on IBM or Intel
CPU

Linux


Linux OS running on Intel CPU

Unix


Unix OS running on various
hardware platforms

IBM


OS/400 running on IBM servers