copyright © 2012 accenture all rights reserved. programming languages generations machine language...

12
Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non- procedural Languages Intelligen t Languages 1GL 2GL 3GL 4GL 5GL 1

Upload: hillary-sherman

Post on 25-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

Programming LanguagesGenerations

Machine Language

Assembly Language

Procedural Languages

Non-procedural Languages

Intelligent Languages

1GL

2GL

3GL

4GL5GL

1

Page 2: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

Programming LanguagesLevels: Overview

Low Level

• Machine specific• Fast execution• Difficult programming and debugging• Long code

Machine Language (1GL)

Assembly Language (2GL)

High Level

• Human language like• Slower execution• Easier programming and debugging• Shorter code

Procedural languages (3GL)

Non-procedural languages (4GL)

Intelligent languages (5GL)

2

Page 3: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

[Portrait image size:10.03cm x 6.67cm,position: 17.5cm x

5.41cm]

Programming LanguagesLevels: Machine Language

• Only language understood by computers– Does not resemble human language– Hardware specific

• Difficult to read and write• Sequence of bits

3

Page 4: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

Programming LanguagesLevels: Machine Language Example

Machine code to calculate the greatest common divisor of two integers for the x86 (Pentium) instruction set.

55 89 e5 53 83 ec 04 83 e4 f0 e8 31 00 00 00 89

c3 e8 2a 00 00 00 39 c3 74 10 8d b6 00 00 00 00

39 c3 7e 13 29 c3 39 c3 75 f6 89 1c 24 e8 6e 00

00 00 8b 5d fc c9 c3 29 d8 eb eb 90

4

Page 5: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

[Portrait image size:10.03cm x 6.67cm,position: 17.5cm x

5.41cm]

Programming LanguagesLevels: Assembly Language

• Hardware specific• Mnemonic symbols – Represent machine code instructions

• Example: Add two numbers – ADD R1, R2, R3

• Requires translator– Assembler– Maps mnemonics to machine

instructions and data

5

Page 6: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

Programming LanguagesLevels: Assembly Language Example

Assembly language code to calculate the greatest common divisor of two integers for the x86 (Pentium) instruction set.

pushl %ebp jle D

movl %esp, %ebp subl %eax, %ebx

pushl %ebx B: cmpl %eax, %ebx

subl $4, %esp jne A

andl $-16, %esp C: movl %ebx, (%esp)

call getint call putint

movl %eax, %ebx movl -4(%ebp), %ebx

call getint leave

cmpl %eax, %ebx ret

je C D: subl %ebx, %eax

A: cmpl %eax, %ebx jmp B

6

Page 7: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

[Portrait image size:10.03cm x 6.67cm,position: 17.5cm x

5.41cm]

Programming LanguagesLevels: High Level

• Computer architecture/hardware independent– Portable

• Resembles natural/human languages– Easy to read, write, maintain

• Require translator– Compiler– Maps statements to machine

instructions and data

7

Page 8: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

Programming LanguagesLevels: High Level Language Example

int gcd (int a, int b) { while (a != b) { if (a > b) a = a – b; else b = b – a; } return a; }

High level language (C language) code to calculate the greatest common divisor of two integers.

8

Page 9: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

Programming LanguagesLevels: Abstraction

• Focus on high level rather than implementation details.

What is abstraction?

• Program statements do not deal with specific computer architecture.• Programming efficiency.

What does it mean to high level languages?

• Variables• Arrays• Expressions• Procedures, subroutines, functions

What sort of statements are used in high level languages?

9

Page 10: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

CompilationMachine Code: Executable

• Compiler: Hardware specific translation software.• Machine Code Generation: High level source code

translated directly into machine language.

CompilerHigh Level Language

Machine Code

10

Page 11: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

CompilationBytecode: Interpreted

Interpreter: Translation / execution software

Intermediate representation: High level source code translated into bytecode

Compiler InterpreterHigh Level Language

BytecodeMachine

Code

11

Page 12: Copyright © 2012 Accenture All Rights Reserved. Programming Languages Generations Machine Language Assembly Language Procedural Languages Non-procedural

Copyright © 2012 Accenture All Rights Reserved.

CompilationJava

Javac compiler: Executable bytecode - filename.class

Java classes and bytecode loaded on first usage.

Stored in cache for future use.

Java SourceCode

Bytecode MachineCode

Javac Compiler

12