3
$\begingroup$

I'm not sure this is on-topic or even the right website, please point me in the right direction if not.

I was wondering why computers are so incredibly complex. This question is as naive as it sounds, I'm really just looking for a nice explanation of why computers can't be like the airplane from Blyton's The Faraway Tree, where you push a button to go up, down, left or right.

$\endgroup$
17
  • $\begingroup$ Fair enough drive-by downvoter. I'd at least appreciate direction if there is a better website to ask this question. $\endgroup$
    – Lou
    Jul 8, 2014 at 18:56
  • 2
    $\begingroup$ They are complex because we desire that they do complex things. If we wanted to only do 4 things we could easily build one that does just that. $\endgroup$
    – lPlant
    Jul 8, 2014 at 18:56
  • $\begingroup$ Okay, I guess the question is most broadly applicable to operating systems. For example, say I want to ping Google (even "pinging" doesn't seem an obvious concept to someone who has never used a computer,) I must open command prompt (not simple if you don't know how to run cmd,) and type ping google.com (not simple if you don't understand commands), but before I can do any of that I have to set change the PATH environment variable to system32 (so many degrees of not simple). $\endgroup$
    – Lou
    Jul 8, 2014 at 19:02
  • 2
    $\begingroup$ Depending on your definition of a computer, they are in fact as simple as you say. A Turing machine just has an tape-memory which it can move left and right, and determines its next action purely by some internal finite state, and by the tape currently on the symbol. This model is equal in computational power to every other computer. Most of the complexity comes from real-life need for speed and security, but in principle a very simple device has all the power of a computer. $\endgroup$ Jul 8, 2014 at 19:25
  • 2
    $\begingroup$ If you want an OS which is (moderately) simple, take a look at Harvard OS161, a teaching-OS which is linux-like in structure. $\endgroup$ Jul 8, 2014 at 19:42

2 Answers 2

5
$\begingroup$

This is actually an excellent question.

The fast answer is that we are not good enough yet to make them simple.

As Pascal said in his 16th Provincial Letter : "Je n'ai fait celle-ci plus longue que parce que je n'ai pas eu le loisir de la faire plus court". In English: "I wrote a longer letter, because I did not have time to make it shorter".

Similarly, computer scientists did not yet have time to make computer easier to use. Though they have done much better than you think.

But there are really many ways to understand your question:

  • one concerns the complexity computer hardware, and that was answered previously by Vitalij Zadneprovskij.

  • why is it so hard to use computers as a programmer?

  • why are computers complicated to run my favorite game, or to use such and such application?

The second question is easy to answer: you just look at the kind of task that you expect from computers. Some of them require considerable work that can be incredibly complex, like running a nuclear power-plant, or like flying an airplane so that you have simple commands even for complex and unstable situations (some unstable planes cannot be flown without a computer), or driving a car automatically, and many other problems that you most likely would not be familiar with, some of them being purely mathematical. Computer can manage tasks that would swamp any human mind by their complexity.

We are tranferring to computers all sorts of complex tasks that were suppose to require (more than) human intelligence and abilities. It is not surprising that you end up with very complex devices, very complex machines, complex at least for the people who make them and are responsible for setting them to these complex tasks, whether through hardware or through software.

The point that was made by Vitalij Zadneprovskij is that the hardware, the physical part of the machine could be actually very simple, but that complexity comes from the need to make if efficient at a great variety of tasks, and to connect them to sensors and effectors, which are physical devices. This means that much of the ability to handle complex tasks comes from the software. Very elementary models of computers have been devised by mathematicians and logicians. They are all able to perform the same computational tasks as highly sophisticated modern computers ... but not necessarily with the same performance.

So we have two kinds of complexities at work. One complexity is due to the efficiency requirements of the hardware, and the need to connect to various devices. The other comes from the very complexity of the tasks we set them to, which is largely to be found in the software.

But you want simplicity of use.

For example, you do not need to know much about the inner working of your car: no mechanics, no thermodynamics, no chemistry of combustion engines, no differential gears (that helps taking turns), etc. Most people do not know any of these things, and yet they can drive their cars.

So you would expect the same for lots of other machines, including the computer. But your home computer is complex.

Well, the problem is that a computer is not analogous to your car, but to the engine of your car. The engine in your car is a very complex machine, but it is under the hood, and you do not really have to know about it when you drive.

As it turns out, you can very easily use a lot of computers with two or three buttons as you are asking. When you drive your car, you have a brake pedal (that is just one button) that runs a computer that does the braking, much better that you would, using the ABS technology, giving better braking by relaxing the brakes for tiny periods. Then, when you accelerate, I guess that another computer will increase the fuel input in just the right way. Then, on my car, I have a no button computer (well there is a button to turn it on) that will chide me if my wheels step on a line without the car lights blinking to indicate the move.

I also have a computer in my washing machine, but I find it a bit harder to use. Then there are computers in the TV. Well to be honest, we are surrounded by computers that are so easy to use that we do not even know there are there. That is why you are not even aware that computer are so easy to use. It is so easy you no longer notice them.

So why is it that you still have a home computer that is hard to use? The main reason is that you have closer access to various functions, so that you can put it to a wide variety of tasks. We are not yet very good at preserving the flexibility while making it easy to use, though that is improving all the time. See for example how easy it has become (well, most of the time) to use a tablet. Smartphones are more complex than phones, but do so many things.

We are not yet good enough to make computers very simple, while preserving their innate flexibility, though we made enormous progress. But many computers have become (at the expense of flexibility) so simple to use as to be invisible.

You are right to ask for simplicity. But as Pascal might say today: simplicity requires considerable work that can be very complex. The same Blaise Pascal who invented one of the first arithmetic machines, and gave his name to a programming language.

$\endgroup$
5
  • $\begingroup$ Is this answer a work-in-progress? You mention two questions, you've addressed only the first one in your answer. But there are some nice points here already. $\endgroup$
    – Lou
    Jul 8, 2014 at 21:16
  • $\begingroup$ @LeoKing Yes, it is in progress ... I was interrupted and just did the wrong thing as I was typing. I am finishing it off-line to avoid changing it into a story with episodes. PLease give me a bit of time. Soory for that. $\endgroup$
    – babou
    Jul 8, 2014 at 21:21
  • $\begingroup$ No problem, take your time. $\endgroup$
    – Lou
    Jul 8, 2014 at 21:58
  • $\begingroup$ Apologies for the five years late response, but I've just been redirected to this question and seen that your answer is complete and excellent. Thank you. $\endgroup$
    – Lou
    Oct 28, 2019 at 20:09
  • $\begingroup$ No harm ... I am still alive to read it :) thanks. $\endgroup$
    – babou
    Oct 29, 2019 at 16:12
8
$\begingroup$

The main reason why computers are complicated is because they are really optimized to deliver the maximum speed. There are a lot of places in a computer where information is stored:

  • processor registers: here the speed of memorization is really high, but this memory is very expensive;
  • random access memory: slower and cheaper then processor registers, but more expensive and faster then hard disk memory
  • hard disk: one of the cheapest and slowest kinds of computer memory

There are also cache mechanisms in between of these levels.

The first definition of computer is that of a person computing some arithmetical operation. So a person could be seen as a very familiar kind of computer, or a biologically very complex one.

Not all computer models are complicated. It has been proved that the following models can compute the same types of problems:

  • Turing machines: just a tape and a finite state automata;
  • lambda calculus: few definitions are enough to achieve a system to manipulate symbols;
  • Godel's general recursive functions
$\endgroup$
2
  • 1
    $\begingroup$ Yes, this is exactly the right answer. However, also note that many other machines are conceptually very simple, but complex in practice because they need to be efficient and/or safe. Why are modern washing machines full of sensors and computers? All you need to wash your clothes is something with water in it, and an agitator (e.g. a washboard, but even a rock will do). The reason why it's complex is to save water and power, and to make your clothes last longer, and to prevent it from injuring you if you try to stick your hand in it. $\endgroup$
    – Pseudonym
    Jul 9, 2014 at 1:46
  • 2
    $\begingroup$ By the way, the safety aspect applies to computers as well. Modern CPUs would be a lot less complex if they didn't need to provide memory and I/O protection (e.g. distinguishing between "user" and "supervisor" code), or to give you the illusion of precise interrupts. $\endgroup$
    – Pseudonym
    Jul 9, 2014 at 1:48

Not the answer you're looking for? Browse other questions tagged or ask your own question.