Remix.run Logo
ratelimitsteve a day ago

This. Software hypothetically can permit unlimited complexity. There are only so many ways you can try to build a bridge such that it won't collapse. There are an infinite number of ways that a set of instructions can reach a desired state given enough time, processing and memory resources. This, combined with our relative naivete in how to design and build software that does not approach infinite complexity compared to other engineering disciplines means that the primary thing about building software is managing complexity.

intrasight 21 hours ago | parent [-]

Look at the evolution of any complicated human-made thing - for example jet engines or even better computer hardware. Managing complexity in physical things is different and harder I think - because you're putting a stake in the ground deeper and earlier, as opposed to a software which, as the phrase goes, is just a collection of bits being fed into a machine.

bluegatty 19 hours ago | parent | next [-]

Totally agree jet engines are hard for that reason, but that's an argument as to why 'software is more complex' ... because it can be. Anyone can knock out unbelievably complicated nonsense.

Much of it is.

I think the complexity arising from 'laminar flows' etc. is just a different thing.

ratelimitsteve 19 hours ago | parent | prev [-]

I came to the opposite conclusion using similar logic. If software is just bits being fed into the machine then there is no limit to the number of bits or the complexity of their arrangement beyond the feed rate of the machine. The bits that make up software do not have any weight to them. There is a strong limit to how much concrete and steel you can add to a bridge. There is a limit to how many neutrons you can shove into the nucleus of an atom, or how many carbon rings you can chain together. Software is unique in that it escapes almost the entirety of physics as a limiter to what can be done, being really only subject to the speed of light as a limit to the rate at which things can be done.

bluegatty 4 hours ago | parent [-]

Software is not the bits in the machine, it's the language of expression. "let z = 1" is software. It has a lot of implications at the bit level, yes, but that's well handled by compilers. But just at the level of expression, it's very complicated.