Code-Reuse A Historic Perspective - PowerPoint PPT Presentation

1 / 40
About This Presentation
Title:

Code-Reuse A Historic Perspective

Description:

Title: Applet Graphical User Interface Event-driven Programming Author: xiao Last modified by: xiao Created Date: 3/4/2002 2:50:11 AM Document presentation format – PowerPoint PPT presentation

Number of Views:67
Avg rating:3.0/5.0
Slides: 41
Provided by: xiao
Category:

less

Transcript and Presenter's Notes

Title: Code-Reuse A Historic Perspective


1
Code-Reuse A Historic Perspective
  • Yingcai Xiao

2
  • Want to know?

What is a computer? (From a programmers point of
view).
Why we have to write programs to run a computer?
Why an error in a program is called a bug?
Why there are so many programming languages?
How do those languages support code reuse?
3
  • Programming a Computer

4
  • Programming a Computer

Types of Computers Analog Analog Device,
1.2345678 Digital Binary Device, 0 or 1
Programming a Computer Wiring Hardware, Bug,
Ada Coding Software
  • Modern Computers Voneumann Machines
  • Run stored programs (code reuse) to process
    stored data.
  • Components Memory, IO, CPU, Secondary Storage.

5
  • What is a program and what is programming?

Programs stored instructions for data
processing. Programming Data Structures
Algorithms Professor Donald E. Knuth
http//www-cs-faculty.stanford.edu/knuth/
6
  • What is a program from a computers point of view?
  • Programs
  • Stored binary opcodes
  • Different types of computers have different
    opcodes
  • Opcodes are not reusable on different types
    computers
  • Programs in binary codes are not reusable on
    different types of computers

7
  • How data are stored on a computer?

Bits (0/1) and bytes (0-255)
0 0 0 0 0 0 1 0
Short Int (2 bytes)
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
Endian (byte ordering) little (Intel), big
(Moterola, Sun), bi (DEC Alpha, MIPS),
big-to-bi (Sun SPARK v9)
8
  • Is data reusable?

Is data saved on one type of computers reusable
on another type of computers?
No, in general.
Yes, for ASCII text or any type of a byte in
size.
ASCII text (ISO/IEC 8859-1) is platform-independen
t.
0 1 0 0 0 0 0 1
A (65)
9
  • What is a program and what is programming?

Programs stored binary opcodes
Punch Card Programming punch card
machines converts instructions typed into binary
codes (0 no hole, 1 hole) on a stack of cards.
10
Programming Languages
11
  • Assembly Languages
  • English-like load, add, save
  • Assembler a program that translates code written
    in an assembly language into opcodes.
  • Assembly languages are machine-dependent. An
    assembly language is only valid for a specific
    CPU architecture.
  • Programs written in an assembly language are
    machine-dependent and not reusable on a different
    types of CPU architectures.

12
  • High-level Programming Languages
  • English-like if, for, switch,
  • Compiler a program that translates code written
    in a high-level programming language into
    opcodes. The input is called the source code and
    output is called the object code (.obj).
  • Linker a program that links object codes
    together to make an executable (.exe).
  • Object-codes and executables are
    machine-dependent.
  • High-level languages are machine-independent.

13
  • High-level Programming Languages
  • Object codes (from different high-level
    programming languages) can be put together to
    make a library (.lib).
  • Binary codes are reusable as libraries on
    computers of the same architecture.
    (compile-time sharing).
  • Libraries and object files on a computer are
    linked together to form an executable.
    (compile-time sharing of binary code).
  • A dynamically-linked library (.dll) can be shared
    by all programs on the same computer and by all
    the running processes on the same computer
    (run-time sharing).
  • Libraries (.lib and .dll) are machine-dependent.

14
  • High-level Programming Languages
  • To use a library, one needs to include the header
    files (.h) for the library in the source code.
  • The header files contain the header (not the
    implementation) of user defined data types and
    related methods (functions), i.e., describe
    whats in the library.
  • The compiler use the information in the header
    files to make type checking.
  • Before compilation, the preprocessor of the
    compiler copies everything in the header files
    into the source code and generate an intermediate
    (.I) file.

15
  • High-level Programming Languages
  • Source codes written in a high-level programming
    language are reusable on different types of
    computers.
  • Binary codes (.obj, .lib, .dll, .exe) compiled
    from a high-level programming language are
    reusable on the computers of the same
    architecture but not reusable on computers of
    different architecture.

16
  • Traditional Compilation

17
  • Common Binary Code?
  • (Binary Code Reuse Cross System Architectures)

18
  • Traditional Compilation

19
  • OS-Independent Code Intermediate Languages
  • The trend to support machine-independent binary
    code is to compile the source code into the
    binary format of an intermediate language.
  • And to provide an interpreter for the
    intermediate language on each OS to translate the
    binary code of the intermediate language into the
    native binary code of the OS.

20
  • OS-Independent Compilation Intermediate Language

Source Code for Language 1
Language 1 Compiler on OS1
Language 1 Compiler on OS2
Intermediate Binary Code for Language1
Intermediate Code Interpreter OS1
Intermediate Code Interpreter OS2
Binary Code for OS2
Binary Code for OS1
OS1
OS2
21
  • Java Intermediate Language Java Bytecode

Java Source Code (.java)
Java Compiler (javac) on OS1
Java Compiler (javac) on OS2
Java Bytecode (.class)
Java Interpreter on OS1 (java)
Java Interpreter on OS2 (java)
Binary Code for OS2
Binary Code for OS1
OS1
OS2
  • Program statements are interpreted one at a time
    during the run-time.

22
  • JIT Compiler
  • An interpreter interprets intermediate code one
    line at a time. Slow execution.
  • A JIT (Just-In-Time) compiler compiles the
    complete code all at once just into native binary
    code before execution. Faster execution.

23
  • JIT Complier Java Bite Code Compiler

Java Source Code (.java)
Java Compiler (javac) on OS1
Java Compiler (javac) on OS2
Java Bytecode (.class)
Java JIT Compiler on OS1
Java JIT Compiler on OS2
Binary Code for OS2
Binary Code for OS1
OS1
OS2
  • All programming statements are compiled at
    compile time.

24
  • MSIL Microsoft Intermediate Language (Used by
    .NET)

Source Code for Language 1
Language 1 Compiler on OS1
Language 1 Compiler on OS2
MSIL Code
MSIL JIT Compiler on OS1
MSIL JIT Compiler on OS2
Binary Code for OS2
Binary Code for OS1
OS1
OS2
  • .NET OS-Platform-Independence

25
  • JIT Compilation in .NET
  • All MSIL code are JIT-compiled to native binary
    code before execution. No run-time
    interpretation, faster execution.

26
  • A Common Language?
  • (Source Code Reuse Cross Languages)
  • .NET CTS/CLR

27
  • .NET Common Language Runtime
  • To make .NET language independent, CLR (Common
    Language Runtime) is defined as the runtime
    environment.
  • CLR defines CTS (Common Type System) which
    should be followed by all languages to be used in
    the .NET framework.
  • The code that follows CTS standard and runs
    through CLR is called managed code.
  • Ex. multiple inheritance is allowed in C but
    not allowed in Managed C since CTS doesnt
    support it.

28
  • CLR Common Language Runtime

Source Code for Language 1
Source Code for Language 2
Language 1 Compiler on OS1
Language 2 Compiler on OS2
MSIL Code Confirming CTS (Managed Code)
CLR on OS1
CLR on OS2
Binary Code for OS2
Binary Code for OS1
OS1
OS2
  • .NET Language-Independence

29
  • .NET Architecture for Language and Platform
    Independence
  • (fan-in and fan-out on MSIL)

Source Code for Language 1
Source Code for Language 2
Language 1 Compiler on OS1
Language 2 Compiler on OS2
MSIL Code Confirming CTS (Managed Code)
CLR for OS1
CLR for OS2
Binary Code for OS2
Binary Code for OS1
OS1
OS2
30
  • CLI (Common Language Infrastructure)
  • CLR/CTS for Everyone?

31
  • CLI Common Language Infrastructure
  • A specification defines an environment for
    multiple high-level languages to be used on
    different computer platforms.
  • Created by Microsoft based on .NET, standardized
    by MS, Intel, HP and others, ratified by ECMA and
    ISO.
  • .NET is an implementation of CLI for desktop
    systems.
  • .NET Compact Framework is an implementation of
    CLI for portable devices.
  • Open Source implementations Mono development
    platform (Novell), Portable .NET (dotGNU)

32
  • CLI (Common Language Infrastructure)
    Specification
  • Open Architecture for Language and Platform
    Independent Programming

Source Code for Language 1
Source Code for Language 2
Language 1 Compiler on OS1
Language 2 Compiler on OS2
CIL (Common Intermediate Language) Code
Confirming CTS (Common Type System)
CLR for OS1
CLR for OS2
Binary Code for OS2
Binary Code for OS1
OS1
OS2
33
  • Run-time Binary Code Sharing
  • Cross the Internet

34
  • Web Services
  • Libraries shared over the Internet at run-time.
  • Service interfaces specify what the services can
    do (contracts).
  • Service interfaces are defined in WSDL (Web
    Service Description Language)
  • UDDI Registry Universal Description, Discovery,
    and Integration. (yellow page)
  • Access Standard
  • SOAP Simple Object Access Protocol

35
(No Transcript)
36
  • Web Service Example
  • .NET Passport (one login for the whole Internet)
  • www.passport.com (run by Microsoft)
  • www.ubid.com (An online auction shop using
    Passport web service)
  • Windows Live (one location to get all you need
    from the Internet)
  • http//get.live.com/ (run by Microsoft)
  • Windows Live ID is replacing Passport ID.

37
  • Code Reuse Tools by Microsoft
  • MFC code reuse within an application (process)
  • COM Component Object Model, code reuse across
    applications (processes)
  • DCOM Distributed COM, code reuse across systems
  • COM Internet-based Enterprise COM, code reuse
    across the Internet
  • .NET COM 2.0, all COM services are available
    in .NET, even those not in managed code,
    interoperable with COM-based applications

38
  • A Common Language for the Internet?

39
  • A Common Language for the Internet

ASCII text (ISO/IEC 8859-1) is platform-independen
t.
Tim Berners-Lee
gt HTTP (Hyper Text Transport Protocol)
gt HTML (Hyper Text Markup Language)
gt Everything is presented as text including data
and programs.
gt Recognizable by all types of computers. (World
Wide Web)
40
  • A Common Language for the Internet

gt XML (eXtensible Markup Language), HTML-based
gt WSDL (Web Service Description Language),
HTML-based
gt SOAP (Simple Object Access Protocol),
HTML-based
Write a Comment
User Comments (0)
About PowerShow.com