← Back

Musings: Computers and People, People and Algorithms

Musings: Computers and People, People and Algorithms

Some variables only mean something once they are assigned, and what they eventually output depends on the algorithm. As everyone knows, a computer is perfectly rational: the result is always a reflection of the algorithm. Even if the algorithm has bugs, some inputs will still produce the correct output in special cases.

The algorithm might also be completely wrong. Either way there is a process of correction and optimisation, and that holds even when it’s right. Your optimisation might make the bug bigger, or it might shrink it, fix the problem, or make things more efficient. It is a perfectly rational process: once a computer handles it, 1 is 1 and 0 is 0.

But a person is not a rational machine. A person is a creature born impure, carrying all sorts of complicated genes, and some ways of thinking are written into those genes. Even so, everything mixed in after birth keeps shaping the brain. The human mind is bound to live in a complicated, contradictory world, and the most obvious part of that is emotional conflict and its ups and downs.

You can’t run an algorithm flawlessly the way a computer does. In all that swinging, the algorithm’s space complexity will slowly creep up, sometimes trending better, sometimes worse. Correcting yourself is really fixing bugs; improving yourself is really optimising the algorithm.

Making complicated changes on top of an algorithm can change its whole nature. Bugs you patched with clever tricks will cause more bugs. For a computer, as long as the output is always correct, whatever tricks your program uses count as cleverness, because a computer runs algorithms without flaws and remembers every step you take. Its memory is unlimited and never fails or forgets.

For a person, a problem you solved with a clever trick might set off a whole chain of explosives because of one decision made during an emotional swing or a lapse of memory.

So you should fix the bugs in your algorithm at the root and optimise your inefficient algorithms. What you need to optimise and fix are the problems of yourself as a person: willpower, follow-through, resilience, attitude, stamina, and so on, not a tangle of fragile relationships, deceptions and lies that shatter at a touch. Then you can accept any possible input and output the correct result, and even when it isn’t fully correct, it will never bring the whole system crashing down.

Of course, deception and lies are also a kind of great wisdom. Keep them out of your algorithm: create a hack.h, call it from hack.cpp, compile it into a separate DLL, but never let it appear in your main program. Hide your hack.dll well and inject it whenever you need. It is your skill and your charm.