evolution and history of programming languages software/hardware/system

31
History of Programming Languages Software/Hardware/System

Upload: nataly-truesdell

Post on 15-Dec-2015

244 views

Category:

Documents


1 download

TRANSCRIPT

Evolution and History of Programming

LanguagesSoftware/Hardware/System

Software Programming

Language

History Timeline

• Machine languages

• Assembly languages

• Higher-level languages

To build programs, people use languages that are similar to human language. The results are translated into machine code, which computers understand.

Programming languages fall into three broad categories:

The Evolution of Programming Languages

• Machine languages (first-generation languages) are the most basic type of computer languages, consisting of strings of numbers the computer's hardware can use.

• Different types of hardware use different machine code. For example, IBM computers use different machine language than Apple computers.

The Evolution of Programming Languages - Machine Languages

• Assembly languages (second-generation languages) are only somewhat easier to work with than machine languages.

• To create programs in assembly language, developers use cryptic English-like phrases to represent strings of numbers.

• The code is then translated into object code, using a translator called an assembler.

The Evolution of Programming Languages - Assembly Languages

Assembler

Assemblycode

Object code

• Third-generation languages

• Fourth-generation languages

• Fifth-generation languages

Higher-level languages are more powerful than assembly language and allow the programmer to work in a more English-like environment.

Higher-level programming languages are divided into three "generations," each more powerful than the last:

The Evolution of Programming Languages - Higher-Level Languages

FORTAN CCOBOL C++BASIC JavaPascal ActiveX

• Third-generation languages (3GLs) are the first to use true English-like phrasing, making them easier to use than previous languages.

• 3GLs are portable, meaning the object code created for one type of system can be translated for use on a different type of system.

• The following languages are 3GLs:

Higher-Level Languages - Third-Generation Languages

A Typical C Program Development Environment

1. Edit

2. Preprocess

3. Compile

4. Link

5. Load

6. Execute

Disk

Disk

Loader

Linker

Compiler

Preprocessor

Editor

Disk

Disk

Disk

Primary Memory

CPU

Primary Memory

1. Program is created in the editor and stored on disk

2. Preprocessor program processes the code

3. Compiler creates object code and stores it on disk.

5. Loader puts program in memory.

4. Linker links the object code with the libraries

6. CPU takes each instruction and executes it, possibly storing new data values as the program executes

•Phases of C Programs:

Visual Basic (VB)VisualAgeAuthoring environments

• Fourth-generation languages (4GLs) are even easier to use than 3GLs.

• 4GLs may use a text-based environment (like a 3GL) or may allow the programmer to work in a visual environment, using graphical tools.

• The following languages are 4GLs:

Higher-Level Languages - Fourth-Generation Languages

• Fifth-generation languages (5GLs) are an issue of debate in the programming community – some programmers cannot agree that they even exist.

• These high-level languages would use artificial intelligence to create software, making 5GLs extremely difficult to develop.

• Solve problems using constraints rather than algorithms, used in Artificial Intelligence•Prolog

Higher-Level Languages - Fifth-Generation Languages

Summary

Hardware Description Language

HDL

HDL What and why HDL??

Hardware Description Language (HDL) Basic idea is a programming language to

describe hardware Initial purpose was to allow abstract

design and simulation Design could be verified then implemented in

hardware Now Synthesis tools allow direct

implementation from HDL code. Large improvement in designer productivity

HDL HDL allows write-run-debug cycle for

hardware development. Similar to programming software Much, much faster than design-implement-

debug Combined with modern Field

Programmable Gate Array chips large complex circuits (>100000s of gates) can be implemented.

HDLs There are many different HDLs

Verilog HDL ABEL VHDL

VHDL is the most common Large standard developed by US DoD VHDL = VHSIC HDL VHSIC = Very High Speed Integrated Circuit

Verilog HDL is second most common Easier to use in many ways = better for teaching C - like syntax

Verilog HDL Verilog constructs are use defined

keywords Examples: and, or, wire, input output

One important construct is the module Modules have inputs and outputs Modules can be built up of Verilog primatives

or of user defined submodules.

Example: Simple Circuit HDL

module smpl_circuit(A,B,C,x,y);

input A,B,C;

output x,y;

wire e;

and g1(e,A,B);

not g2(y, C);

or g3(x,e,y);

endmodule

HDL Summary Hardware Description Languages allow

fast design and verification of digital circuits.

Accurate simulation and testing requires delays and inputs to be specified.

There are three different levels of abstraction for modelling circuits.

System Design Language

Hardware and Software Co-design

26

Traditional Design Flow

27

HW/SW Codesign Flow

Concurrent design between hardware and software using Co-simulation Co-synthesis

Codesign Language Hardware Description

Language (HDL) Software Description

Language (SDL)

People know C, so how about languages built on C/C++? SystemC SpecC Handel-C

Has no tool support. Only useful for influencing other languages.Lacks CAD tool support

Proprietary: Not universally available

SystemCv0.90

Sep. 99

SystemC History

SynopsysATG

Synopsys“Fridge”

Synopsys“Scenic”

UCIrvine

1996

Frontier DesignA/RT Library

1991

SystemCv1.1

Jun. 00

Abstract Protocolsimec

1992

CoWare“N2C”

1997

VSIA SLD Data Types Spec

(draft)

SystemCv1.0

Apr. 00Fixed Point Types

SystemC Highlights

Modules Processes Ports Signals Rich set of port and signal

types Rich set of data types

Clocks Cycle-based simulation Multiple abstraction levels Communication protocols Debugging support Waveform tracing

Features as a codesign language

Current System Design Methodology

C/C++ System Level Model

Analysis

Results

Refine VHDL/Verilog

Manual Conversion

Simulation

Synthesis

Rest of Process

Problems Errors in manual conversion from C to

HDL Disconnect between system model

and HDL model Multiple system tests