Language Evaluation Writability Reliability Cost COS 301 Summary - - PowerPoint PPT Presentation

language evaluation
SMART_READER_LITE
LIVE PREVIEW

Language Evaluation Writability Reliability Cost COS 301 Summary - - PowerPoint PPT Presentation

P rogramming L anguages Language Evaluation COS 301 Readability Language Evaluation Writability Reliability Cost COS 301 Summary School of Computing and Information Science University of Maine Fall 2018 COS 301 Language Evaluation


slide-1
SLIDE 1

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Language Evaluation

COS 301

School of Computing and Information Science University of Maine

Fall 2018

COS 301 Language Evaluation

slide-2
SLIDE 2

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Outline

1

Readability

2

Writability

3

Reliability

4

Cost

5

Summary

COS 301 Language Evaluation

slide-3
SLIDE 3

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Language evaluation criteria

Readability Writability Reliability Cost

COS 301 Language Evaluation

slide-4
SLIDE 4

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Readability

COS 301 Language Evaluation

slide-5
SLIDE 5

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Readability

Early (pre-1970s): more important for machine to “read” code easily After: realized SW maintenance cost ≫ development cost ↑Memory helped ↑readability: Compilers/interpreters need system memory Ones for more readable languages can be large Aspects of readability: Simplicity Orthogonaility Syntax

COS 301 Language Evaluation

slide-6
SLIDE 6

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Simplicity

↑Size of language feature set ⇒ ↓readability Subsets: Can ↓readability E.g., writer & reader familiar with different ones Canonical features vs feature multiplicity: i=i+1; i++; ++i; i+=1; i=+1; Operator overloading ⇒ ↓readability E.g., + for floating point, integer, string concatenation ⇒ j = "hi" + 4; Especially confusing: user-defined overloading

COS 301 Language Evaluation

slide-7
SLIDE 7

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Orthogonality

Large feature set or small “primitive” constructs that can be combined? Canonical: one and only one way to express something Primitive constructs all treated alike All combinations legal with all constructs All combinations behave same way More canonical ⇒ ↑readability Example: IBM instruction set had 2 opcodes for addition (reg–reg, reg–mem) DEC VAX had one Non-orthogonality in C C functions: can return struct but not array Struct member: can be anything except void or struct

  • f same type

Array elements: can be any data type except void or function Parameters: passed by value. . . except arrays

COS 301 Language Evaluation

slide-8
SLIDE 8

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Syntax

Identifiers impact readability Length Characters allowed Compound statement syntax: Deeply-nested {} (C-like) or () (Lisp-like) Deeply-indented Python code Choice of delimiters (spaces in Python, e.g.) Different meaning for same keyword ⇒ ↓readability static used inside C function → variable retains memory/value across function invocations static used outside C function → variable/function visible only within same file

COS 301 Language Evaluation

slide-9
SLIDE 9

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Writability

COS 301 Language Evaluation

slide-10
SLIDE 10

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Writability

How easy is it for a programmer to write a program? Could depend on purpose, level of language: e.g., C vs Python for writing a graphics-intensive game writing an embedded controller Also depends on: Simplicity and orthogonality Support for abstraction Expressivity

COS 301 Language Evaluation

slide-11
SLIDE 11

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Simplicity/orthogonality

Generally ↑writability Large feature set, non-orthogonality may ⇒ accidental use

  • f unknown/inappropriate features

E.g., C++ cout « (1 «2); cout « 1 « 2;

COS 301 Language Evaluation

slide-12
SLIDE 12

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Simplicity/orthogonality

Generally ↑writability Large feature set, non-orthogonality may ⇒ accidental use

  • f unknown/inappropriate features

E.g., C++ cout « (1 «2); ⇒ prints 4 (20 shifted 2 times = 22) cout « 1 « 2;

COS 301 Language Evaluation

slide-13
SLIDE 13

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Simplicity/orthogonality

Generally ↑writability Large feature set, non-orthogonality may ⇒ accidental use

  • f unknown/inappropriate features

E.g., C++ cout « (1 «2); ⇒ prints 4 (20 shifted 2 times = 22) cout « 1 « 2; ⇒ prints 12

COS 301 Language Evaluation

slide-14
SLIDE 14

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Abstraction

Abstraction allows treating complex structures/operations as “black boxes” Support for abstraction ⇒ ↑writability Procedural abstraction: Output specified in terms of its relationship to inputs

  • nly

Internals of procedure are opaque E.g.: sin(), cos(), user-defined procedures, etc. Data abstraction: Use representation of data appropriate for problem, regardless of implementation An interpretation of the underlying bits E.g.:

floating point instead of bits arrays instead of contiguous integers

  • bjects

user-defined data types

COS 301 Language Evaluation

slide-15
SLIDE 15

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Expressivity

Can language express what is needed for problem? Does language have convenient ways to specify operations? ↑Number, power of operators ⇒ ↑expressivity ↑Number predefined functions ⇒ ↑expressivity E.g.: COBOL: lots of operations for different file types APL: lots of math operations, convenient for mathematicians

COS 301 Language Evaluation

slide-16
SLIDE 16

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Reliability

COS 301 Language Evaluation

slide-17
SLIDE 17

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Reliability

Is the program produced by the language reliable? Reliability: safety correctness Language features: type checking exception handling aliasing readability/writability interactions

COS 301 Language Evaluation

slide-18
SLIDE 18

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Type checking

Type checking: insuring that

  • perands compatible with operator

data compatible with variables variables compatible with variables arguments compatible with formal parameters Compile-time or runtime? Runtime checking: expensive (e.g., C, etc.: none) Compile-time checking: may ↓writability (e.g., Python, Lisp: little→none) Strong, compile-time type checking ⇒ ↑reliability, ↑readability Runtime type casting (Python, Lisp, others) ⇒ ↑writability, ↓reliability

COS 301 Language Evaluation

slide-19
SLIDE 19

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Exception handling

Ways to handle runtime errors Most languages have some way of handling exceptions Some don’t (e.g., C) Security, correctness impacted by lack of exception handling

COS 301 Language Evaluation

slide-20
SLIDE 20

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Aliasing

Two more more names for or pointers to same thing memory location (e.g., pointer, name)

  • bject (reference, name)

Aliasing ⇒ ↓reliability Most languages suffer from this pass-by-reference parameters assigning references to multiple variables assigning pointers to multiple variables pointer computation arriving at same values Problem: multiple accesses to same location/object May not be obvious: change one, other “magically” changes Could lead to race conditions (in shared, multiprogramming environment)

COS 301 Language Evaluation

slide-21
SLIDE 21

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Readability/writability interactions

Lack of expressiveness in language ⇒ unnatural/convoluted algorithms and programming Leads to ↓reliability, ↓readability Poor readability itself ⇒ ↓reliability ↓readability makes it hard to catch/fix bugs, logic errors E.g.:

APL, Perl – facetiously: “write-only” languages C: “R2D2’s diary”

COS 301 Language Evaluation

slide-22
SLIDE 22

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Cost

COS 301 Language Evaluation

slide-23
SLIDE 23

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Cost

Not what a compiler costs – most are free anyway Cost includes Time costs Direct monetary costs Other

COS 301 Language Evaluation

slide-24
SLIDE 24

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Cost

Not what a compiler costs – most are free anyway Cost includes Time costs :

Training programmer or programmer’s time to learn Time required to write programs using the language Compilation speed (wastes time) Efficiency of execution Reliability issues ⇒ bugs/security flaws ⇒ time to fix Maintenance time

Direct monetary costs Other

COS 301 Language Evaluation

slide-25
SLIDE 25

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Cost

Not what a compiler costs – most are free anyway Cost includes Time costs :

Training programmer or programmer’s time to learn Time required to write programs using the language Compilation speed (wastes time) Efficiency of execution Reliability issues ⇒ bugs/security flaws ⇒ time to fix Maintenance time

Direct monetary costs :

Programmer’s/maintainer’s pay Lost opportunity due to delays selling product Not getting time-critical solution on time Reliability issues ⇒ bugs/security flaws ⇒ lost money

Other

COS 301 Language Evaluation

slide-26
SLIDE 26

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Cost

Not what a compiler costs – most are free anyway Cost includes Time costs :

Training programmer or programmer’s time to learn Time required to write programs using the language Compilation speed (wastes time) Efficiency of execution Reliability issues ⇒ bugs/security flaws ⇒ time to fix Maintenance time

Direct monetary costs :

Programmer’s/maintainer’s pay Lost opportunity due to delays selling product Not getting time-critical solution on time Reliability issues ⇒ bugs/security flaws ⇒ lost money

Other :

Privacy breaches Data loss Injury/death

COS 301 Language Evaluation

slide-27
SLIDE 27

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Other evaluation criteria:

Is the language portable? Is it general? Is the language well-defined?

COS 301 Language Evaluation

slide-28
SLIDE 28

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Summary

COS 301 Language Evaluation

slide-29
SLIDE 29

Language Evaluation COS 301 Readability Writability Reliability Cost Summary

P L

rogramming anguages

Summary

Readability, writability, reliability, and cost are all important However, trade-offs sometimes necessary: Readability vs writability

Polymorphism/operator overloading (+ in Python, e.g.) Special-purpose operators (e.g., APL) Complex language (e.g., PL/I)

Writability vs reliability

Pointers in C, C++ Untyped languages

Reliability vs cost

Quicker to build applications in Python, Lisp Runtime type checking, exception handling

COS 301 Language Evaluation