High-Level Languages Languages Assembly vs Machine Code Assembly - - PowerPoint PPT Presentation

high level languages languages
SMART_READER_LITE
LIVE PREVIEW

High-Level Languages Languages Assembly vs Machine Code Assembly - - PowerPoint PPT Presentation

High-Level Languages Languages Assembly vs Machine Code Assembly vs high-level language Why Learn New Language availability special features porting maintenance more tools required for job cost Why Design a


slide-1
SLIDE 1

High-Level Languages

slide-2
SLIDE 2

Languages

 Assembly vs Machine Code  Assembly vs high-level language

slide-3
SLIDE 3

Why Learn New Language

 availability  special features  porting  maintenance  more tools  required for job  cost

slide-4
SLIDE 4

Why Design a Language?

 Special Need

 Assembly, FORTRAN, COBOL, etc.  Cg – C for graphics

 Commercialism

 FORTRAN by IBM

 Proselytism

 Pascal by Wirth for structured programming

 Creativity  Research

 May escape lab - Smalltalk

 Standards

slide-5
SLIDE 5

Purposes of a Language?

 General-purpose  Special-purpose  As development environments

slide-6
SLIDE 6

Purposes of a Language?

 General-purpose

 Production-oriented  Science

 FORTRAN  C,  C++

 Business

 COBOL

 Special-purpose  As development environments

slide-7
SLIDE 7

Purposes of a Language?

 General-purpose  Special-purpose

 to solve logic problems

 prolog

 evolution of previous language

 ALGOL -> Pascal -> Modula  b -> c -> c++

 To teach programming

 BASIC  Pascal

 Portability

 Java

 As development environments

slide-8
SLIDE 8

Purposes of a Language?

 General-purpose  Special-purpose  As development environments

 suite of tools for development compiler, design tools,

debugger, editor)

 Smalltalk

 Later suites designed around language

 Borland pascal, c, c++  Microsoft c++  Visual Studio  Java Tools

slide-9
SLIDE 9

Language Evolution

 Hardware and OS  Assembly  High-level language  Applications  Standardization

slide-10
SLIDE 10

Language Evolution

 Hardware and OS

 Instruction sets for doing certain tasks  Tied to specific machine

 Assembly  High-level language  Applications  Standardization

slide-11
SLIDE 11

Language Evolution

 Hardware and OS  Assembly

 As a mnemonic for machine code

 increase level of abstraction

 Assumed to be done by scientists.

 High-level language  Applications  Standardization

slide-12
SLIDE 12

Language Evolution

 Hardware and OS  Assembly  High-level language

 Another level of abstraction  Don't worry about memory locations and how to set them

 a = b+c

 Design algorithms for doing jobs (computer programming as a

new job)

 FORTRAN, BASIC, ALGOL, COBOL

 Applications  Standardization

slide-13
SLIDE 13

Language Evolution

 Hardware and OS  Assembly  High-level language  Applications

 Business  Scientific computing  Parallel computing  AI  Language Queries

 Standardization

slide-14
SLIDE 14

Language Evolution

 Hardware and OS  Assembly  High-level language  Applications  Standardization

 Ada

slide-15
SLIDE 15

Language Evolution

 Growing abstraction

 Higher-level constructs  More powerful and more built-in functions

 Growing facilities within language for defining

abstraction

 Abstract-data structures

 Growing facilities for program structure

 Separate modules

slide-16
SLIDE 16

Language Evolution

 Older languages still in use are those that have evolved

with newer techniques

 Landmark languages tend to be general-purpose, but

may be more convenient for limited class of problems

slide-17
SLIDE 17

Landmark Languages 1936 Turing Machine

 Church's Thesis proved all computable functions are

capable of being computed with Boolean logic, i.e. a Turing Machine.

 Exceedingly simple  Weak built-ins, simple I/O  Unsuitable as a programming language

slide-18
SLIDE 18

Landmark Languages 1940's Machine Code

 Binary or Octal machine code  Used to directly program a particular machine  Powerful but difficult to use

slide-19
SLIDE 19

Landmark Languages 1950's Assembly

 Symbolic language for machine code  Easier to read and program than machine code

x80 title Hello World Program (hello.asm) ; This program displays "Hello, World!" dosseg .model small .stack 100h .data hello_message db 'Hello, World!',0dh,0ah,'$' .code main proc mov ax,@data mov ds,ax mov ah,9 mov dx,offset hello_message int 21h mov ax,4C00h int 21h main endp end main

IBM 370 HELLOPRT START 0 IN THE BEGINNING... PRINT NOGEN SPARE US THE MACRO EXPANSIONS BEGIN SAVE (14,12) SAVE INPUT REGISTERS LR 12,15 WHERE ARE WE? USING HELLOPRT,12 RIGHT HERE ST 13,SAVE+4 SAVE OLD SAVE AREA ADDRESS LA 11,SAVE POINT TO NEW SAVE AREA ST 11,8(13) IN OLD SAVE AREA LR 13,11 MOVE SAVE AREA ADDRESS * * WRITE "HELLO, WORLD!" ON WHATEVER HAS BEEN SET UP AS SYSPRINT IN * THE INVOKING JCL (NO, UNIX DOESN'T HAVE A MONOPOLY ON DEVICE- * INDEPENDENT I/O!) * DOPUT EQU * PUT SYSPRINT,HELLOMSG WRITE THE MESSAGE B DOPUT FOREVER... * * THIS CODE WILL NEVER BE REACHED, BUT IS INCLUDED FOR COMPLETENESS * L 13,SAVE+4 GET OLD SAVE AREA BACK RETURN (14,12),RC=0 TO THE OPERATING SYSTEM * * FILE AND WORK AREA DEFINITIONS * SAVE DS 18F LOCAL SAVE AREA HELLOMSG DC C' HELLO, WORLD!' SYSPRINT DCB DSORG=PS,MACRF=PM,DDNAME=SYSPRINT, X RECFM=FA,LRECL=133,BLKSIZE=133 END BEGIN

slide-20
SLIDE 20

Landmark Languages 1956 FORTRAN

 FORmula TRANslator  Major factor in IBM's growth in 50s & 60s  Most suited to mathematical and scientific problems  Efficient so can compete with assembly  Flexible enough for other uses.  Handles numbers well  Not a free format  Implicit variables

 i-n ints, others floats

 Introduced:

 types, subprograms, formatted I/O

Program Hello DO while (.NOT. DONE) write(*,10) END DO 10 format('Hello, world.') END

slide-21
SLIDE 21

Landmark Languages 1959 COBOL

 COmmon Business-Oriented Language  Designed for business applications

 List and file processing  Good for report writing  Verbose (or non-cryptic) code.

 Still in use

 Lots of COBOL programmers  Lots of code to convert

 DoD language  Designed by users not implementors  Introduced:

 data-structure defs (record)

000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. HELLOWORLD. 000300 DATE-WRITTEN. 02/05/96 21:04. 000400* AUTHOR BRIAN COLLINS 000500 ENVIRONMENT DIVISION. 000600 CONFIGURATION SECTION. 000700 SOURCE-COMPUTER. RM-COBOL. 000800 OBJECT-COMPUTER. RM-COBOL. 000900 001000 DATA DIVISION. 001100 FILE SECTION. 001200 100000 PROCEDURE DIVISION. 100100 100200 MAIN-LOGIC SECTION. 100300 BEGIN. 100400 DISPLAY " " LINE 1 POSITION 1 ERASE EOS. 100500 DISPLAY "HELLO, WORLD." LINE 15 POSITION 10. 100600 STOP RUN. 100700 MAIN-LOGIC-EXIT. 100800 EXIT.

slide-22
SLIDE 22

Landmark Languages 1960-3 ALGOL 60

 ALGOrithmic Language 60  Designed to be universally-applicable  Alternative to FORTRAN & IBM  Mostly used in Europe  Precursor of Pascal  Designed by users  Difficult to implement  Introduced:

 block structure for scope, if-then-else, recursion

In Algol 60 there was no output defined so Hello, World was somewhat impossible:-) But given a suitable library of IO procedures: printstring(`Hello, World')

slide-23
SLIDE 23

Landmark Languages 1960 LISP

 LISt Processing  Based on symbol manipulation instead of mathematical  Strongly functional  Used for AI  Data-types are lists and atoms  A program is a function defined in terms of other

functions.

(DEFUN HELLO-WORLD () (PRINT (LIST 'HELLO 'WORLD)))

slide-24
SLIDE 24

Landmark Languages 1962 APL

 A Programming Language  Very high-level  Basic structure is the array  Powerful operators for arrays  Very compact programs

'HELLO WORLD'

  • r with a variable

a<-'HELLO WORLD' a

slide-25
SLIDE 25

Landmark Languages 1965 BASIC

 Beginners All-Purpose Symbolic Instruction Code  First language designed specifically for teaching the

programming process

 First interactive environment (interpreted)

10 print “Hello World!”

slide-26
SLIDE 26

Landmark Languages PL/I

 Programming Language One  Included all current high-level features  Very complex language  Introduced: interrupt or exception handling

HELLO: PROCEDURE OPTIONS (MAIN); /* A PROGRAM TO OUTPUT HELLO WORLD */ FLAG = 0; LOOP: DO WHILE (FLAG = 0); PUT SKIP DATA('HELLO WORLD!'); END LOOP; END HELLO;

slide-27
SLIDE 27

Landmark Languages 1967 Simula

 SIMUlation LAngauges.  Designed to describe systems and their simulation  But much more powerful  An extension of ALGOL 60  First object-oriented language  Introduced:

 classes, encapsulating data structure and function to operate on

them.

Begin While 1=1 do begin

  • uttext(“Hello World!);

Outimage; End; End;

slide-28
SLIDE 28

Landmark Languages 1968 ALGOL 68

 ALGOrithmic Language 68  Strong orthogonality

 Small number of constructs that can be combined smoothly to

build more powerful constructs

 + for numbers should also apply to arrays

 Had some influence on C

 long  union  Type constructor

print(“Hello World”);

slide-29
SLIDE 29

Landmark Languages 1969 Pascal

 Simple language including most existing good features  Based on ALGOL  Teachability very important  Designed to teach “good”, ie structured, programming

Program Hello (Input, Output); Begin Writeln ('Hello World!'); End.

slide-30
SLIDE 30

Landmark Languages 1972 Prolog

 Programmation en logique (french for programming in

logic)

 Designed for AI  Program is description of desired solution  Declarative language

% HELLO WORLD. Works with Sbp (prolog) hello :- printstring("HELLO WORLD!!!!"). printstring([]). printstring([H|T]) :- put(H), printstring(T).

slide-31
SLIDE 31

Landmark Languages 1972 Smalltalk

 Strictly Object-Oriented  Generalized class control from Simula

Transcript show:'Hello World';cr

slide-32
SLIDE 32

Landmark Languages 1978 C

 High-level constructs but still have access directly to the

underlying machine (memory, etc.) for systems programming

 Unix written in C  AT&T Bell Labs, based on B  1985 C++, adds object oriented programming to C.

#include <stdio.h> main() { printf ("Hello World!\n"); }

slide-33
SLIDE 33

Landmark Languages 1982 Modula-2

 Extension to Pascal for system programming  Modules, abstract data-types (classes)  Coroutines, typed procedures, all control structures have

terminating keyword

MODULE hello; FROM InOut IMPORT writestring, writeln; begin WriteString("Hello, world!"); Writeln; end hello.

slide-34
SLIDE 34

Landmark Languages Ada

 73-74 US government spending $3 billion/year on

software, ½ embedded.

 Armed Forces propose single embedded language

standard

 Apr 75 strawman requirements  Aug 75 revised to woodenman  Jan 76 tinman was created  Evaluated 23 languages against this, none worked  Jan 77 determined that Pascal, ALGOL 68 and PL/I were

good starting point.

slide-35
SLIDE 35

Landmark Languages Ada

 Jan 77 Ironman - ideal spec  RFP & of 17, 4 contracts awarded

 red, green, blue, yellow

 Red & Green finalists of public review  Jun 78 - steelman - final requirements  May 79 - Green (Cii Honeywell Bull) wins  Called DoD-1 & in May 1979 named Ada

 Augusta Ada Byron, Countess of Lovelace

 Dec 10 1980 Military Standard 1815  Jan 83 1815a & Feb 83 ANSI standard  Apr 83 Ada/Ed implementation validated

slide-36
SLIDE 36

Landmark Languages Ada

 Packages -

 data types, data objects, and procedures encapsulation

 Generics

 procedures that don't require specified type

 Exception handling

 What happens when run-time errors occur

with Text_Io; use Text_Io; procedure hello is begin put (“Hello world!”); end hello;

slide-37
SLIDE 37

Landmark Languages Java

 Designed for portability

class HelloWorld { public static void main (String args[]) { for (;;) { System.out.print("Hello World "); } } }

slide-38
SLIDE 38

How many languages

 http://people.ku.edu/~nkinners/LangList/Extras/langlist.

htm

2500 languages

 http://www.99-bottles-of-beer.net/

same program in 1500 languages

1400 (2011) 1007 (2007) (621 2006)

Check out zombie and Cow

 http://www.roesler-ac.de/wolfram/hello.htm

hello world in 441 languages

193 (2007) 204 (2006)

 Check out the esoteric language hub

http://hub.webring.org/hub/esolang

slide-39
SLIDE 39

Generations of Languages

 1st

machine code

 2nd

assembly code

 3rd

high-level languages

 4th

application-generation for non programmers

 5th

logic-oriented languages

slide-40
SLIDE 40

Kinds of Languages - 1

Imperative

Specifies how a computation is to be done.

Examples: C, C++, C#, Fortran, Java

Declarative

Specifies what computation is to be done.

Examples: Haskell, ML, Prolog

von Neumann

One whose computational model is based on the von Neumann architecture.

Basic means of computation is through the modification of variables (computing via side effects).

Statements influence subsequent computations by changing the value of memory.

Examples: C, C++, C#, Fortran, Java

slide-41
SLIDE 41

Kinds of Languages - 2

Object-oriented

Program consists of interacting objects.

Each object has its own internal state and executable functions (methods) to manage that state.

Object-oriented programming is based on encapsulation, modularity, polymorphism, and inheritance.

Examples: C++, C#, Java, OCaml, Simula 67, Smalltalk

Scripting

An interpreted language with high-level operators for "gluing together" computations.

Examples: AWK, Perl, PHP , Python, Ruby

Functional

One whose computational model is based on the recursive definition

  • f functions (lambda calculus).

Examples: Haskell, Lisp, ML

slide-42
SLIDE 42

Kinds of Languages - 3

Parallel

One that allows a computation to run concurrently on multiple processors.

Examples

Libraries: POSIX threads, MPI

Languages: Ada, Cilk, OpenCL, Chapel, X10

Architecture: CUDA (parallel programming architecture for GPUs)

Domain specific

Many areas have special-purpose languages to facilitate the creation of applications.

Examples

YACC for creating parsers

LEX for creating lexical analyzers

MATLAB for numerical computations

SQL for database applications

Markup

Not programming languages in the sense of being Turing complete, but widely used for document preparation.

Examples: HTML, XHTML, XML

slide-43
SLIDE 43

Fundamental Elements of PL

 Programming model

 The programming model is the model of computation encapsulated

into the programming language.

 For example, C is an imperative language, designed around the von Neumann

model of computation.  Program structure

 A program typically consists of one or more translation units stored

in files.

 In C, a translation unit is a sequence of function definitions and declarations.

 Character set and lexical conventions

 Source and target character sets may be different.

 The character set of C source programs in contained within seven-bit ASCII.

 A token is a meaningful sequence of characters in a source program.

 C has six classes of tokens: identifiers, keywords, constants, string literals,

  • perators, and separators.
slide-44
SLIDE 44

Fundamental Elements of PL

 Names, scopes, bindings, and lifetimes

Names (often called identifiers) have a specified lexical structure.

 In C identifiers are sequences of letters (here, underscore is considered a letter) and digits.

The first character of an identifier must be a letter. At least the first 31 characters in an identifier are significant.

The scope of a name is the region of the program in which it is known (visible).

 A binding is an association between two things such as between a variable and its type or

between a symbol and the operation it represents. The time at which this association is determined is called the binding time. Bindings can take place at various times ranging from language design time to run time.

The lifetime of a variable is the time during which the variable is bound to a specific memory location.

 Data types and operators

A data type defines a set of data values and the operations allowed on those values.

 C has a small number of basic types, including char, int, double, float, enum, void.  C has a potentially infinite number of recursively defined derived types such as arrays of

  • bjects of some type, functions returning objects of some type, pointers to objects of

some type, structures containing a sequence of objects of various types, and unions containing any one of several obejcts of various types.

 C has a rich set of arithmetic, relational, logical, and assignment operators.

slide-45
SLIDE 45

Fundamental Elements of PL

 Expressions and assignment statements

 Expressions are the primary means for specifying computations in a

programming language.

 Assignment statements are basic constructs in imperative

programming languages. Assignment statements allow the programmer to dynamically change the bindings of values to variables.

 Control flow

 Flow of control refers to the sequence in which the operations

specified in a program are executed at run time. There are flow-of- control issues at many levels such as flow of control within expressions, among statements, and among program units. Most programming languages have control statements and other control structures for controlling the flow of control within a program.

 C has a variety of flow-of-control constructs such as blocks and control

statements such as if-else, switch, while, for, do-while, break, continue and goto.

slide-46
SLIDE 46

Fundamental Elements of PL

 Functions and process abstraction

 Perhaps the most important building blocks of programs.  Often called procedures, subroutines, or subprograms.  Break large computing tasks into smaller ones and facilitate

code reuse.

 Data abstraction and object orientation

 Data abstraction in the form of abstract data types was

introduced into programming languages after process

  • abstraction. The programming language Simula67 was

instrumental in motivating constructs for supporting object-

  • riented programming in modern programming languages such

as C++, C#, and Java.

slide-47
SLIDE 47

Fundamental Elements of PL

 Concurrency

 Concurrent execution of programs has assumed much more importance

with the widespread use of multi-core and many-core processors.

 Concurrency in software execution can occur many levels of granularity:

instruction, statement, subprogram, and program.

 Concurrency can be achieved with libraries (like MPI for Fortran, pthreads

for C) or with direct language support (as in Cilk, X10).

 However, effective exploitation of concurrency is still an open research area

in software.

 Exception and event handling

 Many languages have facilities for reacting to run-time error conditions. C++

has the try-catch construct to catch exceptions raised by the throw statement.

 Event handling is like exception handling in that an event handler is called by

the occurrence of an event. Implementing reactions to user interactions with GUI components is a common application of event handling

slide-48
SLIDE 48

Language Characteristics

 Compiled/interpreted

 many languages can be either

 Data types supported

 Text - LISP, SNOBOL, Perl  Numbers - FORTRAN  Both

 Extensible

 New elements create a new dialect - Pascal  Are new elements just required by the app

 FOURTH, smalltalk, lisp, scheme

slide-49
SLIDE 49

Language Characteristics

 Structured/unstructured

 Is structured programming allowed, encouraged, disallowed,

....

 Dijkstra - program made of blocks with single point of entry and

exit

 Subunits  GOTOs

 Algorithmic - or imperative

 Problems solved by defining series of steps that result in a

solution

 FORTRAN, BASIC, Pascal, COBOL, C

slide-50
SLIDE 50

Language Characteristics

 Functional or applicative

 Treat solutions as an aggregate application of mathematical

functions - logic programming

 LISP, APL, SNOBOL

 Object-Oriented

 As extensions

 C -> C++, Pascal --> Modula 2

 Fundamentally OO

 SIMULA, Smalltalk

slide-51
SLIDE 51

Language Characteristics

 Special purpose/general purpose

 Do you determine this based on design, use, or potential use?  All-Purpose

 Commercial – COBOL  Scientific – FORTRAN  System development – C  String manipulation – SNOBOL

 Special-Purpose

 Command – JCL, UNIX  Editors – SCRIBE, TeX

slide-52
SLIDE 52

Language Characteristics

 Query Languages (4GLs)

 Special-purpose to allow abstract (high-level) data

specification and retrieval from structured data files (databases)

 SQL (Structure Query Language)  QBE (Query By Example)

 Environment used in

 Batch  Interactive  Real-time

 Compiled/Interpreted

 Language feature, or implementation?

slide-53
SLIDE 53

Language Characteristics

 How procedural

 Procedural languages describe solution via an algorithm

(prescriptive)

 Nonprocedural describe the solution and system determines

method (declarative)

Procedural Non-Procedural Imperative Logical Object Oriented Functional Query

slide-54
SLIDE 54

Language Application

 Business  Science/Engineering  Real Time Apps  Embedded systems  Simulation  Expert systems  Teaching  General  COBOL, Query languages  FORTRAN,Pascal, C, C++  ADA, Modula-2, C, Assembly  ADA  Smalltalk  LISP, PROLOG, M1  Pascal, BASIC, LOGO  C, Pascal