On Sunday, 12 October 2014 at 19:40:56 UTC, Walter Bright wrote:
Programming languages are always imperfect models, it's like the 2x4's you buy at the hardware store are never straight. You just learn to deal with it, because perfectly straight ones would be prohibitively expensive.
Well... some of them are straight. If you're building something that's built from near full-length boards then you search for the straight ones. Otherwise you just take whatever. In fact, the last time I was sifting through 2x4s at Home Depot, one of the people working there asked me to set the warped ones aside so they could take them out. I'm sure they chip them and make press-board or whatever out of them instead.
The other tricky thing about selecting 2x4s is that once you get to the center of the palette the boards tend to be damp, and so there's a chance that they'll be straight when you buy them but they'll warp as they dry. There's kind of an art to selecting wood for a building project.
So I guess the point is that you use the proper materials for the job. With physical jobs, the leftovers can almost always be repurposed or remade into something suitable for a different job. So there's very little actual waste. Competent builders can even use salvaged materials to create an entirely new thing. I have a set of record shelves that are built from salvaged deck beams. Aged wood tends to be really beautiful because colors and textures emerge as it ages.
What I've learned about building is that, just like programming, there's an established process for everything. And building new structures is largely a matter of assembling the pieces and joining them in the proscribed manner. So you quickly start thinking about projects in terms of the larger problem rather than the complexity of constructing an individual wall section or whatever.