15
Propr ietar y University of Houston-Clear Lake S oftware Development Evolution of Programming Languages Basic cycle of improvement Experience software difficulties Theory - develop new concepts Evaluation - build new languages History Machine language Assembly language FORTRAN, COBOL Pascal, C, Smalltalk Ada, C++, Java

University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Embed Size (px)

Citation preview

Page 1: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

Evolution of Programming LanguagesEvolution of Programming Languages

• Basic cycle of improvement

– Experience software difficulties

– Theory - develop new concepts

– Evaluation - build new languages

• History

– Machine language

– Assembly language

– FORTRAN, COBOL

– Pascal, C, Smalltalk

– Ada, C++, Java

Page 2: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

JavaJava

• Simple

• Object-oriented

• Distributed

• Interpreted

• Robust

• Secure

• Architecture neutral

• Portable

• High performance

• Multi-threaded

• Dynamic language

Page 3: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

Object-Oriented LanguagesObject-Oriented Languages

• Abstraction

• Encapsulation

• Inheritance

• Polymorphism

Page 4: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

AbstractionAbstraction

Real World Object

Abstraction of the Object

ColorPriceOptions

PositionVelocityForces

WidthHeightWeight

Object-oriented

Page 5: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

EncapsulationEncapsulation

Data

Operationsand

Access to object’s data is controlled

Object-oriented

Page 6: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

InheritanceInheritance

Object-oriented

Page 7: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

PolymorphismPolymorphism

• Object-specific operations

• Overloading of method names

“abc” “de” “abcde”

3 4 7 float float float

String String String

Object-oriented

Page 8: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

DistributedDistributed

• High-level support for networking

• URL and other classes from java.net package

• Easy to read a remote file or other resource

• Can invoke remote methods

• Can download and run code from across the Internet

Distributed

Page 9: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

InterpretedInterpreted

• Java compiler generates byte-code for the JVM– the Java Virtual Machine

Interpreted

Java Virtual Machine

Java byte code

Computer XYZ

Page 10: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

Architecture-Neutral and PortableArchitecture-Neutral and Portable

• The Java byte-code is architecture neutral because

it can be executed on any machine that supports

the Java Virtual Machine

• No implementation-dependent aspects to the language

– size of each of the primitive data types is specified

• Few platform dependencies

• Write - Once - Run - Many

Portable

Page 11: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

SimpleSimple

• Number of language constructs has been kept small

• Language is similar to C and C++

• No header files

• No preprocessor

• No struct statement

• No goto statement

• No pointers

• Automatic garbage collection

Simple

A B C

Page 12: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

RobustRobust

• Strongly-typed

• Better compile-time error checking

• No pointer-related bugs

• No memory leaks

• Support for exception handling

• Explicit method declarations are required

• Casts of objects are checked at compile time

Robust

Page 13: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

SecureSecure

• Several layers of security protection to protect

against malicious code

• Pointers cannot be forged

• Memory cannot be accessed beyond the limits of an

array or string’s dimensions

• Byte-code verification prevents stack overflows and

illegal byte-codes

• Sandbox model - applets cannot access local file

system

• Support for digital signatures for untrusted code

Secure

Page 14: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

High-PerformanceHigh-Performance

• Although about 10 times slower than C coded

applications, Java 1.1 is about twice as Java 1.0

• Common operations like string concatenation are in

native code

• Many interpreter systems include just-in-time compilers

to allow code to run faster on a particular CPU

• Faster than many other interpreted languages and than

most scripting languages like Tcl or Perl

High-Performance

Page 15: University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory

Proprietary© 1997

University of Houston-Clear Lake

Software Development

Multi-ThreadedMulti-Threaded

• Multiple threads of execution are possible

• Could have audio file playing, image file downloading,

and graphical animation going on simultaneously

• Java syntax support threads directly with synchronized

keyword

• Can easily start threads, stop threads, and assign

priorities

Multi-Threaded