4 ms·
Using the word 'blueprint' is a bit deceptive. Source code is not a blueprint, because it is the end result. A blueprint provides all the information we need
by gdp 17y ago
Using the word 'blueprint' is a bit deceptive. Source code is not a blueprint, because it is the end result. A blueprint provides all the information we need to build the house, but we can't live in a blueprint (i.e. a blueprint does not fulfil the same needs as an actual house, even though they describe the same thing). We can 'validate' our (now-built) house against our blueprint using a tape measure and a spirit level.
In software, the only analogous process we have is formal specification and mechanical verification.
Just to be entirely clear, code is not a "specification" because to suggest that it is would be like building a full-scale model of a house as a 'blueprint'. If the blueprint is functionally identical to the thing it is describing (i.e. you can live inside the blueprint just as well as you can inside the house it describes), then it's not a "specification" (or a "blueprint") in any useful sense.
So I don't even really have an opinion on the "software is design" explanation. I don't think of software like that, because I don't generally do "exploratory coding". Rather, I'm just objecting to the (often abused) notion of software having anything analogous to a blueprint.
- wpietri 17y agoSource code is in fact not the end result. If it were, we wouldn't care so much about non-functional aspects, like spacing, variable and method naming, and code organization. It's a design document. It's special, though, because it is the only design document that the computer can, after processing, understand. The end result is not the code. It's what happens on people's screens, and in people's worlds after we tell the computer what to do.