Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special...

36
Chapter 1 Preliminaries Thursday, 6 September 2012

Transcript of Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special...

Page 1: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Chapter 1

Preliminaries

Thursday, 6 September 2012

Page 2: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-2

Chapter 1 Topics

• Reasons for Studying Concepts of Programming Languages

• Programming Domains• Language Evaluation Criteria• Influences on Language Design• Language Categories• Language Design Trade-Offs• Implementation Methods• Programming Environments

Thursday, 6 September 2012

Page 3: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-3

Reasons for Studying Concepts of Programming Languages

• Increased ability to express ideas• Improved background for choosing

appropriate languages• Increased ability to learn new languages• Better understanding of significance of

implementation• Better use of languages that are already

known• Overall advancement of computing

Thursday, 6 September 2012

Page 4: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Reasons for Studying Concepts of Programming Languages

• Increased capacity to express ideas– Learning new data structures, algorithms, and other language features will allow a programmer to create more efficient programs• Example: after learning object-oriented programming in Java, a C programmer could simulate objects using structures and functions. • Improved background for choosing appropriate languages– Without having studied several different languages, programmers will tend to stick with the first language they learned• Example: A C programmer might implement a binary tree with arrays, instead of using the object- oriented capabilities of Java.

• Increased ability to learn new language– Knowing the basic concepts of programming languages allows one to learn a new language easier• Example: C++ or Ada programmers, who already understand the concept of object-oriented programming, will have an easier time of learning Java then programmers have never used these concepts.

Thursday, 6 September 2012

Page 5: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Reasons for Studying Concepts of Programming Languages

• Better understanding of the significance of implementation– Knowledge of the basic concepts of programming languages enables the programmer to make more efficient choices with implementation and to find bugs easier in a program• Example: A C programmer who understands pointers can create the binary tree using structures and pointers, instead of with arrays, and will have an easier time debugging programs that use pointers

• Overall advancement of computing– Knowing the advantages & disadvantages of different languages helps “those in charge” to choose better languages over poorer ones• Example: In the early 1960s, Fortran was used much more than ALGOL 60, even though ALGOL 60 had much better control statements than Fortran

• Better use of languages that are already known

Thursday, 6 September 2012

Page 6: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Programming Domains• Scientific applications– The first computers (1940s) created for scientific applications– Used mostly arrays, matrices, counting loops, and selections– Most efficient language for this is Fortran (1959)– Also ALGOL 60 (1960) and its descendants designed mainly for this purpose

• Business applications– Began to be used for business in 1950s– First language for this was COBOL (1960)– Used to create reports, storing decimal numbers & character data, and calculation decimal operations– More recently, microcomputers are used for spreadsheet systems & database systems

• Artificial intelligence– Uses symbolic rather than numeric computations– Uses linked lists of names– The functional language LISP was developed for AI applications in 1959– In 1970s, logic programming using Prolog appeared

Thursday, 6 September 2012

Page 7: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Programming Domains

• Systems programming– Operating system + supporting tools = systems software– Must be efficient & interface with external drivers– In 1960s & 1970s, PL/S, BLISS, & Extended ALGOL were first used for this– Currently, the UNIX operating system is written mostly in the C language

• Scripting languages– Early scripting languages were simply a list of commands (called a script) in a file to be executed– Scripting languages grew to include variables, control flow statements, functions, etc.– Perl is a primitive programming language used for Common Gateway Interface (CGI) programming for the World Wide Web– JavaScript & PHP are embedded in HTML documents for use on Web server systems

Thursday, 6 September 2012

Page 8: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-5

Language Evaluation Criteria

• Readability: the ease with which programs can be read and understood

• Writability: the ease with which a language can be used to create programs

• Reliability: conformance to specifications (i.e., performs to its specifications)

• Cost: the ultimate total cost

Thursday, 6 September 2012

Page 9: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-6

Evaluation Criteria: Readability• Overall simplicity

– A manageable set of features and constructs– Minimal feature multiplicity – Minimal operator overloading

• Orthogonality – A relatively small set of primitive constructs can be combined in a

relatively small number of ways– Every possible combination is legal

• Data types– Adequate predefined data types

• Syntax considerations– Identifier forms: flexible composition – Special words and methods of forming compound statements– Form and meaning: self-descriptive constructs, meaningful keywords

Thursday, 6 September 2012

Page 10: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-7

Evaluation Criteria: Writability• Simplicity and orthogonality

– Few constructs, a small number of primitives, a small set of rules for combining them

• Support for abstraction– The ability to define and use complex structures or

operations in ways that allow details to be ignored

• Expressivity– A set of relatively convenient ways of specifying operations– Strength and number of operators and predefined functions

Thursday, 6 September 2012

Page 11: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-8

Evaluation Criteria: Reliability

• Type checking– Testing for type errors

• Exception handling– Intercept run-time errors and take corrective measures

• Aliasing– Presence of two or more distinct referencing methods for the

same memory location

• Readability and writability– A language that does not support “natural” ways of expressing

an algorithm will require the use of “unnatural” approaches, and hence reduced reliability

Thursday, 6 September 2012

Page 12: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-9

Evaluation Criteria: Cost

• Training programmers to use the language

• Writing programs (closeness to particular applications)

• Compiling programs• Executing programs• Language implementation system:

availability of free compilers• Reliability: poor reliability leads to high

costs• Maintaining programs

Thursday, 6 September 2012

Page 13: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-10

Evaluation Criteria: Others

• Portability– The ease with which programs can be moved

from one implementation to another• Generality

– The applicability to a wide range of applications• Well-definedness

– The completeness and precision of the language’s official definition

Thursday, 6 September 2012

Page 14: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-11

Influences on Language Design

• Computer Architecture– Languages are developed around the prevalent

computer architecture, known as the von Neumann architecture

• Program Design Methodologies– New software development methodologies (e.g.,

object-oriented software development) led to new programming paradigms and by extension, new programming languages

Thursday, 6 September 2012

Page 15: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Influences on Language Design

• Computer architecture- von Neumann (“von Noyman”) architecture• Data & programs are stored in memory • CPU executes instructions • Instructions & data are piped between memory & CPU- Imperative languages designed around this• Variables model memory cells • Assignment statements model piping operation • Iterative form is most efficient form of iteration

Thursday, 6 September 2012

Page 16: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-13

The von Neumann Architecture

Thursday, 6 September 2012

Page 17: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

The von Neumann Architecture

• von Neumann bottleneck

– Fetch-execution cycle•Fetch the instruction pointed to by program counter • Increment program counter •Decode the instruction•Execute the instruction

Instructions can be executed faster than they can be moved to the CPU for execution

Thursday, 6 September 2012

Page 18: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-14

The von Neumann Architecture

• Fetch-execute-cycle (on a von Neumann architecture computer)

initialize the program counterrepeat forever fetch the instruction pointed by the counter

increment the counter

decode the instruction

execute the instructionend repeat

Thursday, 6 September 2012

Page 19: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-23

Von Neumann Bottleneck

• Connection speed between a computer’s memory and its processor determines the speed of a computer

• Program instructions often can be executed much faster than the speed of the connection; the connection speed thus results in a bottleneck

• Known as the von Neumann bottleneck; it is the primary limiting factor in the speed of computers

Thursday, 6 September 2012

Page 20: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-15

Programming Methodologies Influences

• 1950s and early 1960s: Simple applications; worry about machine efficiency

• Late 1960s: People efficiency became important; readability, better control structures– structured programming– top-down design and step-wise refinement

• Late 1970s: Process-oriented to data-oriented– data abstraction

• Middle 1980s: Object-oriented programming– Data abstraction + inheritance + polymorphism

Thursday, 6 September 2012

Page 21: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-16

Language Categories• Imperative

– Central features are variables, assignment statements, and iteration

– Include languages that support object-oriented programming– Include scripting languages– Include the visual languages– Examples: C, Java, Perl, JavaScript, Visual BASIC .NET, C++

• Functional– Main means of making computations is by applying functions to

given parameters– Examples: LISP, Scheme, ML, F#

• Logic– Rule-based (rules are specified in no particular order)– Example: Prolog

• Markup/programming hybrid – Markup languages extended to support some programming– Examples: JSTL, XSLT

Thursday, 6 September 2012

Page 22: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-17

Language Design Trade-Offs

• Reliability vs. cost of execution– Example: Java demands all references to array elements

be checked for proper indexing, which leads to increased execution costs

• Readability vs. writabilityExample: APL provides many powerful operators (and a large

number of new symbols), allowing complex computations to be written in a compact program but at the cost of poor readability

• Writability (flexibility) vs. reliability– Example: C++ pointers are powerful and very flexible but

are unreliable

Thursday, 6 September 2012

Page 23: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-18

Implementation Methods• Compilation

– Programs are translated into machine language; includes JIT systems

– Use: Large commercial applications

• Pure Interpretation– Programs are interpreted by another program known as

an interpreter– Use: Small programs or when efficiency is not an issue

• Hybrid Implementation Systems– A compromise between compilers and pure interpreters– Use: Small and medium systems when efficiency is not the

first concern

Thursday, 6 September 2012

Page 24: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-19

Layered View of ComputerThe operating system and language implementation are layered over machine interface of a computer

Thursday, 6 September 2012

Page 25: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-20

Compilation

• Translate high-level program (source language) into machine code (machine language)

• Slow translation, fast execution• Compilation process has several phases:

– lexical analysis: converts characters in the source program into lexical units

– syntax analysis: transforms lexical units into parse trees which represent the syntactic structure of program

– Semantics analysis: generate intermediate code– code generation: machine code is generated

Thursday, 6 September 2012

Page 26: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-21

The Compilation Process

Thursday, 6 September 2012

Page 27: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-22

Additional Compilation Terminologies

• Load module (executable image): the user and system code together

• Linking and loading: the process of collecting system program units and linking them to a user program

Thursday, 6 September 2012

Page 28: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-24

Pure Interpretation

• No translation• Easier implementation of programs (run-time

errors can easily and immediately be displayed)• Slower execution (10 to 100 times slower than

compiled programs)• Often requires more space• Now rare for traditional high-level languages• Significant comeback with some Web scripting

languages (e.g., JavaScript, PHP)

Thursday, 6 September 2012

Page 29: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-25

Pure Interpretation Process

Thursday, 6 September 2012

Page 30: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-26

Hybrid Implementation Systems

• A compromise between compilers and pure interpreters

• A high-level language program is translated to an intermediate language that allows easy interpretation

• Faster than pure interpretation• Examples

– Perl programs are partially compiled to detect errors before interpretation

– Initial implementations of Java were hybrid; the intermediate form, byte code, provides portability to any machine that has a byte code interpreter and a run-time system (together, these are called Java Virtual Machine)

Thursday, 6 September 2012

Page 31: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-27

Hybrid Implementation Process

Thursday, 6 September 2012

Page 32: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-28

Just-in-Time Implementation Systems

• Initially translate programs to an intermediate language

• Then compile the intermediate language of the subprograms into machine code when they are called

• Machine code version is kept for subsequent calls• JIT systems are widely used for Java programs• .NET languages are implemented with a JIT system• In essence, JIT systems are delayed compilers

Thursday, 6 September 2012

Page 33: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-29

Preprocessors

• Preprocessor macros (instructions) are commonly used to specify that code from another file is to be included

• A preprocessor processes a program immediately before the program is compiled to expand embedded preprocessor macros

• A well-known example: C preprocessor– expands #include, #define, and similar

macros

Thursday, 6 September 2012

Page 34: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-30

Programming Environments

• A collection of tools used in software development• UNIX

– An older operating system and tool collection– Nowadays often used through a GUI (e.g., CDE, KDE, or

GNOME) that runs on top of UNIX• Microsoft Visual Studio.NET

– A large, complex visual environment• Used to build Web applications and non-Web applications in

any .NET language• NetBeans

– Related to Visual Studio .NET, except for applications in Java

Thursday, 6 September 2012

Page 35: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

Copyright © 2012 Addison-Wesley. All rights reserved. 1-31

Summary

• The study of programming languages is valuable for a number of reasons:– Increase our capacity to use different constructs– Enable us to choose languages more intelligently– Makes learning new languages easier

• Most important criteria for evaluating programming languages include:– Readability, writability, reliability, cost

• Major influences on language design have been machine architecture and software development methodologies

• The major methods of implementing programming languages are: compilation, pure interpretation, and hybrid implementation

Thursday, 6 September 2012

Page 36: Chapter 1 · PDF file6.09.2012 · object-oriented programming, ... – Special words and methods of forming compound statements ... number of new symbols),

• Assignment #1

Evaluate the C & Java languages using the criteria just described.

What kind of problem-solving domain would C be useful for?

What about Java?

C vs. Java

1. Readability

2. Writability

3. Realiability

4. Costability

Thursday, 6 September 2012