Social-Ethical

advertisement
Social and Ethical Issues in
Programming Language Design
• Can harm be done by designers of programming
languages?
• Support for system safety in P.L.
• Security policies.
• Who gets to program?
• Should languages be easy to learn or easy to use?
• Is there a right to literacy in programming? (to read
programs? to write programs?)
• What part do programming languages play in ethical
and unethical uses of technology?
CSE 341 S. Tanimoto
Social/Ethical Issues -
1
Can harm be done by
designers of programming
languages?
• Direct harm ?
• Indirect harm ?
CSE 341 S. Tanimoto
Social/Ethical Issues -
2
Software Can Kill:
The Yakima Software Bug
• “On Saturday, January 17, 1987, the second patient of
the day was to be treated for a carcinoma. This patient
was to receive two film verification exposures of 4 and
3 rads plus a 79 rad photon treatment (for a total
exposure of 86 rads)... The console displayed ‘beam
ready,’ and the operator hit the B key to turn the beam
on... the patient...reported ‘feeling a burning sensation’
in his chest. Later in the day, the patient developed a
skin burn over the entire treatment area...The patient
died in April from complications related to the
overdose.” [from N. Leveson: Safeware, pp54-1542].
CSE 341 S. Tanimoto
Social/Ethical Issues -
3
The Yakima Software Bug (cont)
• “The software problem ... is fairly well established.
...Every pass through the Set Up Test routine
...increments... a shared variable called Class3. If
Class3 is nonzero, there is an inconsistency and
treatment should not proceed. A zero value for Class3
indicates that the relevant parameters are consistent
with treatment and the software does not inhibit the
beam.”
• Problem: Class3 was a 1-byte variable. Adding 1 to
255 produced 0.
• Being treated with the Therac-25 radiation treatment
machine was a bit like playing Russian roulette.
CSE 341 S. Tanimoto
Social/Ethical Issues -
4
Who is responsible for damage
caused by bugs in a program
?
•
•
•
•
(a) the user
(b) the author of the program
(c) the compiler writer
(d) the designer of the programming language
• the patient? the hospital? the manufacturing
company? the software designer? coder? tester?
CSE 341 S. Tanimoto
Social/Ethical Issues -
5
Emergent Language Properties
That Relate to Human Errors
•
•
•
•
•
Masterability
Fault proneness
understandability
maintainability
checkability
• [J. J. Horning: Programming languages for reliable
computing systems, 1979].
CSE 341 S. Tanimoto
Social/Ethical Issues -
6
Language Features Found to be
Prone to Error:
•
•
•
•
•
pointers
control transfers of various kinds
defaults
implicit type conversions
global variables
• Overloading variable names
CSE 341 S. Tanimoto
Social/Ethical Issues -
7
Defensive Programming
• Design thoroughly
• Design for testability
• Design for safety by identifying, preventing, and
checking for dangerous conditions
• Design test methods into the system
• Test during development
• Keep a log of testing activities
• Maintain testing tools as well as product code
CSE 341 S. Tanimoto
Social/Ethical Issues -
8
Is There a Right to Program?
• Literacy as a human right in the
21st century
• Computer literacy ...
• What forms of programming should
be accessible?
CSE 341 S. Tanimoto
Social/Ethical Issues -
9
Learning to Program
• Several important programming languages developed from
efforts to make programming easier to learn.
• Logo: Lisp-like, interpreted language + turtle graphics
• BASIC -- developed by Kurtz and Kemeny at Dartmouth Univ. to
help undergraduates learn about computing.
• Karel the Robot (a pre-Pascal teaching tool by Richard Pattis)
• Smalltalk -- envisioned by Alan Kay as a programming language
for kids.
• Visual-rule based simulations (KidSim, Stagecast Creator,
AgentBuilder, Visual AgenTalk)
• Color XFORM (Image processing system) + scripting language
(e.g., Lisp) -- a visual & symbolic approach at U of Wash.
CSE 341 S. Tanimoto
Social/Ethical Issues -
10
Is Language Learnability
Important from an Ethical
Standpoint?
• Some professions create barriers to entry. Should
programmers or language designers ever do this?
• If they do, is it ethical to do it by making languages difficult to
learn?
• Software written so that no one but the author can maintain it
can pose a risk for those who depend on the software being up
to date.
CSE 341 S. Tanimoto
Social/Ethical Issues -
11
“Religious” Attitudes in
Programming
• Should programmers be dogmatic about language features or
philosphies?
• Can a programmer be pluralistic about language and still hold
strong convictions?
• How should programmers respect the tradeoffs between
idealism and practicality in the choice and uses of
programming languages?
CSE 341 S. Tanimoto
Social/Ethical Issues -
12
Using Computer-Based
Languages for Human
Communication
•
•
•
•
•
Social issues in language design
Cultural biases
Limited ontologies
Visual vs non-visual (symbolic)
Interface biases
CSE 341 S. Tanimoto
Social/Ethical Issues -
13
Download