1 / 27

A Vision for the Science of Programming

A Vision for the Science of Programming. Tony Hoare. New Horizons of Computing October 2008. The Vision. Computer software contains no more errors. The Vision. Computer software contains no more errors it is the most reliable component of any device that contains it. The Vision.

platt
Télécharger la présentation

A Vision for the Science of Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A Vision forthe Science of Programming Tony Hoare. New Horizons of Computing October 2008

  2. The Vision Computer software contains no more errors

  3. The Vision Computer software contains no more errors • it is the most reliable component of any device that contains it

  4. The Vision Computer software contains no more errors • software is the most reliable component of any device that contains it Programmers make no more mistakes

  5. The Vision Computer software contains no more errors • software is the most reliable component of any device that contains it Programmers make no more mistakes • programs work the first time that they run • and forever after, even when changed .

  6. The Vision • Programming is an Engineering discipline

  7. The Vision • Programming is an Engineering discipline • respected for its delivered benefits • and for its foundation on basic science

  8. The Vision • Software is a branch of Engineering • respected for its delivered benefits • and its foundation on basic science • Semantics is the science of programming • explores the meaning of computer programs

  9. The Vision • Software is a branch of Engineering • respected for its delivered benefits • and its foundation on basic science • Semantics is the science of programming • explores the meaning of computer programs • operational: correctness of implementation • algebraic: correctness of optimisation • axiomatic: correctness of application programs

  10. The Insight • Computer programs are mathematical formulae • they do not suffer from rust, fatigue, wear, decay, pollution,… • Their correctness is a mathematical conjecture • to be proved by logic and calculation • checked by the computer itself

  11. History of the idea • Aristotle 350 bc syllogistic logic • Euclid 300 bc geometry • Leibnitz 1700 ad calculus • Boole 1850 ad laws of thought • Frege 1880 ad predicate logic • Russell 1920 ad principia • Hao Wang 1956 computer checks

  12. Basic Science • answers fundamental questions • what? how? why? • pursues scientific ideals • accuracy, purity, correctness • formalises unifying theories • expressed in the language of mathematics • accumulates convincing evidence • by repeatable scientific experiment

  13. Basic Science driven by curiosity to ask simple questions: What does it do? How does it work? Why does it work? How do we know?

  14. Questions about programs • What does it do? • answered by its behavioural specification

  15. Questions about programs • What does it do? • answered by its behavioural specification • How does it work? • answered by its internal interface contracts

  16. Questions about programs • What does it do? • answered by its behavioural specification • How does it work? • answered by its internal interface contracts • Why does it work? • answered by programming theory

  17. Questions about programs • What does it do? • answered by its behavioural specification • How does it work? • answered by its internal interface contracts • Why does it work? • answered by programming theory • How do we know? • confirmed by logical/mathematical proof

  18. Ideals in Basic Science Physics: accuracy of measurement Chemistry: purity of materials pursued for the sake of scientific glory far in advance of commercial need

  19. Ideals in Basic Science Physics: accuracy of measurement Chemistry: purity of materials Computing Science: zero defect programs pursued for the sake of scientific glory far in advance of commercial need

  20. Unifying theory basic science seeks unifying theories • the four fundamental forces of physics explaining diverse phenomena • gravitation in planets and apples on trees supported by evidence • accumulated from all the unified theories

  21. Software Engineering Toolsets based on unified theory covering all aspects of program lifecycle • domain models, requirements, specifications, • program generation, patterns, re-use, • architectures, designs, interfaces, • coding, inspections, testing, delivery, • maintenance, modification, evolution, • de-commissioning,...

  22. Tools in Microsoft • PREfix and PREfast • Static Driver Verifier • ESP

  23. Big Science Projects in big science • last for decades, • involve thousands of scientists, • theorists, tool-builders, experimenters • pursuing a coherent vision • for the advancement of science.

  24. Big Science Physicists build colliders Astronomers build telescopes Biologists decode the human genome. Computer Scientists build tools to prevent intrusion of error at any stage in development and use of computer programs

  25. The hope (2020 - 2050) Software will contain no more errors • than any other engineering product Programmers will make no more mistakes • than any other professional engineer

  26. The hope (2020 – 2050?) Software will contain no more errors • than any other engineering product Programmers will make no more mistakes • than any other professional engineer Cost of program error will be reduced • saving $billions per year, worldwide

  27. $100 billion (approx) is the annual cost of software error. 60% falls on developers, 40% on users. Estimate based on survey of US industry Planning report 02-03, prepared by NIST for US Department of Commerce, May 2002 ‘The economic impacts of inadequate infrastructure for software testing.’

More Related