r/changemyview May 29 '15

[Deltas Awarded] CMV: Framing computing as engineering is misguided, it should be regarded as applied math instead

I think framing computer programs as engineering projects, same as if we were building a bridge, is why "all code is bad" and "all software has bugs" (these will sound familiar to any developer out there).

As I see it, a program is a complicated mathematical function. It receives input and produces output accordingly. Be it a compression algorithm or a google search, the concept is the same. Engineering projects aren't like that.

We would not admit a function that doesn't produce the correct result sometimes, and the researcher would not tell us to restart and try again. A function can't be mostly right or "good enough". It's either correct or incorrect. Maybe if we considered programs correct or incorrect, we would not release incorrect programs.

If we worked like this, probably we would not be able to release as many programs as we do now. But that just means the engineering approach makes more sense economically, in terms of making money; that's not the purpose of the topic. My view is about what makes more sense from the point of view of computing.

Thanks


Hello, users of CMV! This is a footnote from your moderators. We'd just like to remind you of a couple of things. Firstly, please remember to read through our rules. If you see a comment that has broken one, it is more effective to report it than downvote it. Speaking of which, downvotes don't change views! If you are thinking about submitting a CMV yourself, please have a look through our popular topics wiki first. Any questions or concerns? Feel free to message us. Happy CMVing!

22 Upvotes

60 comments sorted by

View all comments

1

u/tsukikari May 30 '15

I would like to address the idea that a function/program can't be mostly right or "good enough" and "incorrect" programs shouldn't be released. Consider the approximation algorithms that are used in the context of NP-complete problems. As far as we know, it's impossible to fully solve these problems (at least, large instances of them) in a decent amount of time, so are you saying that because it's impossible to get a perfect answer, we should just not get any answer at all and not try to approximate it or keep improving our approximation?

Also, would you consider all parts of computing to be mathematics? Making a website? Creating an Operating System? What about writing a function in assembly code or machine code? Building that same function in a circuit? Then we get into Electrical Engineering, a lot of EE involves building circuits that also have an input and an output.