Eric C. R. Hehner | |
Birth Date: | 16 September 1947 |
Birth Place: | Ottawa, Ontario, Canada |
Fields: | Computer science Programming |
Workplaces: | University of Toronto |
Education: | Carleton University (B.Sc., 1969) University of Toronto (M.Sc., 1970; Ph.D., 1974) |
Known For: | Predicative programming Formal methods Quote notation ALGOL |
Eric "Rick" C. R. Hehner (born 16 September 1947) is a Canadian computer scientist. He was born in Ottawa. He studied mathematics and physics at Carleton University, graduating with a Bachelor of Science (B.Sc.) in 1969. He studied computer science at the University of Toronto, graduating with a Master of Science (M.Sc.) in 1970, and a Doctor of Philosophy (Ph.D.) in 1974. He then joined the faculty there, becoming a full professor in 1983. He became the Bell University Chair in software engineering in 2001, and retired in 2012.[1]
Hehner's main research area is formal methods of software design. His method, initially called predicative programming, later called Practical Theory of Programming, is to consider each specification to be a binary (boolean) expression, and each programming construct to be a binary expression specifying the effect of executing the programming construct. Refinement is just implication. This is the simplest formal method, and the most general, applying to sequential, parallel, stand-alone, communicating, terminating, nonterminating, natural-time, real-time, deterministic, and probabilistic programs, and includes time and space bounds. This idea has influenced other computer science researchers, including Tony Hoare.
Hehner's other research areas include probabilistic programming, unified algebra, and high-level circuit design. In 1979, Hehner invented a generalization of radix complement called quote notation, which is a representation of the rational numbers that allows easier arithmetic and precludes roundoff error.
He was involved with developing international standards in programming and informatics, as a member of the International Federation for Information Processing (IFIP) IFIP Working Group 2.1 on Algorithmic Languages and Calculi,[1] [2] which specified, maintains, and supports the programming languages ALGOL 60 and ALGOL 68.[3] and of IFIP Working Group 2.3 on Programming Methodology.[1]