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