Is computing science? is software engineering? the answers Tony Hoare argues must be the same!
In the extremes:
- Scientist interested in the long term and scientific truth which has no finite lifetime.
- Idealism, general theories and certainty (theory supported by multiple items of evidence)
- separate of work into individual elements which can be formulized
- originality and perfection leading to reward by fame
- Engineer works to a fixed time scale and maybe with a fixed budget, often limited lifetime.
- Compromise, based on specific circumstances managed by risk management
- integration of diverse elements which often rely on experience and intuition
- best practice and adequate delivery rewarded with financial benefit
Why then is computing a science?
a computer scientist asks what a program does? how it works? why it works? and how do we know? and gets the answers through a specification, splitting into modules and interfaces, understanding that if you assemble again it will have the same result (program semantics) and we can prove it is true through calculations and mathematical proof.
one day software will be the most reliable component of any product, software engineering will be the most dependable engineering professional and this will come about through the scientific research fueling the engineering profession.