4 ms·
Aren't you being overly optimistic about the engineering disciplines' ability to compute things? How does engineering work: do you sit down with a spec (say, "c
by agent327 3y ago
Aren't you being overly optimistic about the engineering disciplines' ability to compute things? How does engineering work: do you sit down with a spec (say, "create a wing that can lift a passenger plane"), and then run some formulas, and end up with a wing? Or do you propose a wing, based on past experience (rough shape and size), and _then_ bring in computation to make sure it provides the correct amount of lift, iterating through designs as you go?
Because I think it's really the last one. There is no formula to design a bridge: you design the bridge, and then use formulas and lookup tables to validate it is strong enough. Same for pretty much anything else produced by any engineering discipline.
So in that sense, engineering and programming aren't all that far apart: both start from past experience, and use various validation methods after a design has been proposed, iterating through designs to reach an optimal state. Software engineering, being a younger discipline, is still working on validation methods, and many practitioners find they simply have no budget to apply them (nor any life-or-death constraints that force them to). That's ok though. If you design a new can opener you aren't going through all the processes that apply to an airliner either.
- corethree 3y agoNo. theory is very much part of the creation of the bridge. It is not just for verification. If you read more carefully. What I am saying is that in software engineering, there is no theory. It's all Design. All made up. There's also no verification of the design itself.
- nuancebydefault 3y ago> There's no verification of the design itself. I think this is mostly a philosophical statement, but it certainly has truth to it. Code reviews / rework tackle mostly the code, but not the fundamental design. However the execution of the code tackles the design as well: - If the design is wrong, the result is bad, that is detected at the execution phase. - If the design is suboptimal (hard to maintain or extend, bad cpu load, hard to reuse...), well that is usually not solved. IMO that matches your point.
- corethree 3y ago>I think this is mostly a philosophical statement, but it certainly has truth to it. It's fact. What theory is there to prove that the following design is the best possible design? What does "best" even mean? We can't verify formally in anyway how good a design is overall. We can verify, efficiency, we can verify speed, and we can verify correctness. But design? We can't verify that.
- agent327 3y agoHow do you prove that a bridge is the 'best' design? What does 'best' mean, for a bridge?
- corethree 3y agoThat's what a full formal theory encompasses. We need to define the term formally. It can be done for software organization. We've defined it for algorithmic complexity. Turns out it's two metrics.. speed and memory. Best means the lowest N, with primitives being algorithmic loops. What are the primitive modules used in program organization? Given 3 of the smallest possible primitive modules we can define in computing and all the ways possible to compose those three modules. What composition would be best? What is the metric that fits most well with our notion of best? There may be several metrics here. These questions are the ones that are asked when formalizing a theory derived from intuition. For the bridge it's likely balancing several metrics we already know. Safety, cost, length, etc. Once those metrics are quantified a theory exists to find the best. It's called optimization theory.
- agent327 3y agoThose formulas are not reversible. You can compute load bearing capacity of a design, and you can compute cost of a design, but you cannot start with load bearing capacity and cost, run those through a formula, and get a bridge. Or even a sketch of a bridge. Design comes first, always, whether it is for real-world items or for software. The design is then validated using formal methods, and iterated until it meets the required goal. If you still want to maintain your position that you can compute a bridge, feel free to point out a source that describes the formula for bridges. Or any object that takes significant engineering, really.