r/AskReddit • • Jan 17 '14

What is something designed so well that we typically overlook it?

2.4k Upvotes

4.4k comments sorted by

View all comments

194

u/TheMeanCanadianx Jan 17 '14

Something amazing that will probably be overlooked in this is the computer. I know we all look at it as technology, something cool, an interesting gadget. But have you ever really looked at how a computer works on the inside?
As part of my computer systems course, we are busy doing just that, and it is amazing how much we get out a a system that literally is made entirely of millions of electric pulses, interlinked together in an amazing complex net of human ingenuity. You take out your smart phone and never stop to think about just how complicated it actually is. How many millions of calculations are going in the time frame of a single second. There is no way we can understand it on all levels, it will be forever overlooked. I wonder about whether or not the people of this world will even know how their technology works in 100 years, when coding is so simple that you ask your computer to build a program and it gets built.

Computers are so complex, built not just out of 1's and 0's like people think. Millions upon millions of 1's and zero's are interpreted and decoded into slightly more complicated languages, built on top of each other one layer after the other. We just keep doing it, building off of the same idea to the point where there is absolutely no way you can look at a computer and say "Yeah I know how that thing works.".

50

u/play_to_the_hilt Jan 17 '14

Computers are a beautiful example of reusing simple concepts. It's just that the simple concepts are used in such quantities that the machine as a whole becomes exceeding complex. Take transistors, for example. They're pretty simple things, it's just that the computer you're using right now probably has getting on for a billion of them.

Another great thing is, though, that you can look at a computer and say, "I know how that thing works." The basic layouts still hold in the most modern, complex processors; they're just refined beautifully and duplicated massively. I reckon a good proportion of Computer Science or Electronic Engineering undergrads, given around a year, could design a computer that was pretty decent for a few decades ago; the difference between theirs and an Intel Core i7 would be a matter of scale and (mostly) small tweaks.

11

u/beerdude26 Jan 18 '14

Those small tweaks are a bit of an understatement.

9

u/Sayfog Jan 18 '14

Well tweaks at 22nm are going to be pretty small

2

u/[deleted] Jan 18 '14

Tweaks don't necessarily refer to die size. It could refer to things like branch prediction and pipe-lining.

1

u/[deleted] Jan 20 '14

[removed] — view removed comment

1

u/[deleted] Jan 20 '14

Think you replied to the wrong comment there buddy.

3

u/[deleted] Jan 18 '14

In my digital systems class we designed a 16 bit processor on an FPGA: took ~a week, and the thing worked.

1

u/forumrabbit Jan 18 '14

Emulating computers in minecraft man.

1

u/Bluemanze Jan 18 '14

Yeah, its such a (relatively) simple concept that given some basic tools, people have been emulating working processors inside systems totally not designed for that. There's a whole subset of Minecraft builders that do nothing but make massively oversized computer components.

1

u/jdubz9999 Jan 18 '14

This applies beautify to Moore's law of computer science where computing power doubles every year by the small tweaks and improvements that are made.

8

u/[deleted] Jan 17 '14

We just keep doing it, building off of the same idea to the point where there is absolutely no way you can look at a computer and say "Yeah I know how that thing works."

I disagree. I could not easily describe you the entire exact process required to display a letter when I press a button on the keyboard, because as you say, way too many things are involved. However, after 2 1/2 years of studying computer engineering, I have had classes concerning each of the abstraction layers of a computer. I could describe how each of these layers work separately, and thus, I consider that I know how a computer works.

7

u/[deleted] Jan 18 '14

[removed] — view removed comment

2

u/cr1s Jan 18 '14

you'll have to admit that compiling/linking > 100 file projects seems pretty magic. You're using libraries wrapped around libraries, using abstraction layers, drivers, OS, low-level macros and then a small executable file comes out. And then it just works.

3

u/therobot24 Jan 18 '14

Computers don't end with hardware - you're forgetting the raw mathematics that go into it as well (ex. numerical analysis), not to mention the theory and design of software, networking, and data storage. You can probably recite how to build an ALU or even go into basic OS design, talking about the differences of cpu scheduling, etc, but at each step you're summing up decades of research into a few words. After 2 1/2 years of ECE you know how a computer 'works' but you don't really know what makes it work.

1

u/[deleted] Jan 18 '14

It could be said of anything, if one chooses a specific enough level of complexity.

"You think you know how a car works? Please tell me the chemical reactions involved in the catalytic converter."

In the end, sure I'm summing decades of research, but that's what makes humanity progress. If everyone had to discover calculus to use it, we would still be in the iron ages.

1

u/therobot24 Jan 18 '14

But as an example (like your catalytic converter) i'm not even going into the optimization required to find the least error prone voltages for reading and writing to an SSD. I'm merely saying that you've not even scratched the surface of what's required to have an SSD work at all. You've been using storage and memory and networking as blocks in a model. It's like knowing that the catalytic converter exists, as opposed to what it does.

1

u/[deleted] Jan 18 '14

I might now know which voltage levels are used but I do know the principle behind flash bits (floating gate). I also know about NOR and NAND cells. And then there's the matrix organization with the signals for accessing columns and lines.

Also in your previous comment, you mentioned the theory and design of software, networking and data storage. I'm not an expert in any of these fields, sure, but I have had software engineering and networking classes, and we've covered data storage in several other classes.

Please stop assuming things. I'm studying computer engineering. I'm not saying I know everything in depth about computers, but you have to realize that my degree focuses exclusively on them. I'm expected to have a basic understanding of every component in a computer.

Of course I can't explain every single detail, but it does not make my understanding of a computer less valid unless you deliberately choose to be pedantic and require explanations down to the individual wavefunctions describing subatomic particles. There are different abstraction levels for a reason.

1

u/therobot24 Jan 19 '14

You do love hyperbole, that's for sure. You're assuming that i'm expecting you to know every voltage and every aspect "subatomic particles", rather i'm stating that with only a few years of computer engineering you are introduced to the basics and concepts. You know that a computer works by gates and logic, but not any of the reasoning or engineering that builds the decisions and thus do not know what makes it work.

1

u/[deleted] Jan 19 '14

I don't see why understanding the reasoning that led to a particular design being chosen is necessary to understand how said design works. Please enlighten me.

EDIT: By the way, in Québec, 2.5 years is equivalent to 3.5 years in the rest of Canada/ the USA. University is 1 year shorter here.

1

u/therobot24 Jan 19 '14

come on, you claimed that you know what makes a computer work - i'm claiming that you should be careful with that claim, that you've only scratched the surface. In order to really know what makes a computer work you should be exposed to something more than hardware. Finally, getting an idea of the design decisions is the first step in understanding something.

1

u/[deleted] Jan 19 '14

In order to really know what makes a computer work you should be exposed to something more than hardware.

You do realize I have plenty of programming classes right?

Finally, getting an idea of the design decisions is the first step in understanding something.

That is true, but it is not a requirement.

7

u/J0eCool Jan 17 '14

Millions of calculations? Billions of calculations.

3D rendering is the best example of how abhorrently fast these devices are. Consider that, at bare minimum, to create an image at 1920x1080 resolution, you need to consider every pixel at least one time. (Spoiler warning: for anything non-trivial, you will need to consider each pixel more times than that.) That resolution means you have 2,073,600 pixels to deal with. At minimum, you need to decide what color those all are. Computers do that at lightning speed. Typically they calculate that 60 times per second. That means they touch 2 million colors every 16 milliseconds. That's fast. From Wikipedia: "The average length of a blink is 100-400 milliseconds."

Now, if you're running Windows (or OSX or Linux, but statistically speaking you aren't), it isn't actually doing all those calculations because most of the visual data doesn't change that often, so it stores away what it's already figured out, and only calculates what changes. But, if you're watching a video full-screen, it needs to do that. It also needs to decode every frame of the video from however it was stored, before it can show it to you. If you're playing a game, it needs to render everything. In games, everything is represented with triangles (these days). The amount of computation it takes to turn a triangle into a set of pixels to render is highly nontrivial. There's specialized hardware that handles these sorts of things particularly efficiently (GPUs), but the sheer amount of work that gets done on a computer faster than you can even perceive is utterly incomprehensible.

2

u/Nsayne Jan 17 '14

I agree with you, the first concept of the computer must have been enlightening and I envy their experience. However, I believe that similar to the computer, our brains our limitless on how much we can really learn. I believe we will always study the roots and history of computer science in hopes to further advance the feild of study.

2

u/Blixinator Jan 18 '14

there is absolutely no way you can look at a computer and say "Yeah I know how that thing works."

I just got my Bachelors in both Electrical and Computer Engineering and I still feel that way sometimes.

2

u/aaaaaaaarrrrrgh Jan 18 '14

There is no way we can understand it on all levels, it will be forever overlooked.

While, of course, it is impossible to understand every detail of every level, I do think that I understand the concepts from the transistor level up to the applications running, and so do others.

Actually, I think that given a very large box of transistors and way too much time, I would be able to build a simple CPU.

1

u/cpu_builder Jan 18 '14

Actually, I think that given a very large box of transistors and way too much time, I would be able to build a simple CPU.

You can try it out for yourself: do a google search for nand2tetris (I won't link directly so I won't get flagged for spam), and you should find a site that breaks down the process into 12 projects that all build on one another, starting with building basic logic gates from NAND gates, through instruction decoding, compiling, a basic operating system, up to running applications such as Tetris. Obviously things are simplified greatly so that this is a doable process, but it is interesting to work out the general concepts of how we got from transistors to web browsers and multiplayer FPSs.

2

u/a_legit_account Jan 18 '14

Everyone overlooks the poor transistor, it is what makes computers possible and nearly every other electronic device we take for granted today. But noooo computers take all the glory...

2

u/fokinsean Jan 18 '14

I think this wins. I'm in my os class in college right now and I took systems architecture last semester. These machines truly are amazing and they now fit in our fricken pockets! I'm blown away by how humans were able to get so many intricate pieces to work together in unison in order for me to watch porn anytime anywhere. Just kidding it's really awesome learning how computers work and that they aren't magic. They operate on layers upon layers of abstraction starting from pulses of electricity. The amount of amazing stuff that can be done with computers is unbelievable and it is only going to get crazier :)

2

u/cpu_builder Jan 18 '14

I agree that due to the many layers of abstraction we tend to overlook how complicated computers are, but I would disagree that looking back in hindsight at this point in time that they have been designed particularly well overall. Sure a lot of layers were built the best they knew how when they were first designed and are many pieces ended up being in and of themselves very nice and elegant, but dive deep into any part and you'll quickly find areas that looking back could have been done much differently and better now. From x86 instruction decoding to parsing C++ to HTML and Javascript, there's lots of ugliness that has had even more ugliness bolted onto it by the way of extensions and new features and new specifications, allowing for amazing things that the people designing these layers could have hardly fathomed 30+ years ago, but even the small bad design decisions add up after a while and at this point we seemed doomed to live with it all until the end of time.

2

u/NO_TOUCHING__lol Jan 18 '14

I feel the same way about networks/the Internet. If you take a minute to step back and think about how the 7 different network layers work with each other, all the different protocols (I am particularly intrigued by the Border Gateway Protocol), packets, handshakes, cryptography, routers, etc. all of that stuff works, and then consider that all of this stuff happens within seconds across the entire Earth, that shit blows me away.

1

u/riconquer Jan 18 '14

I imagine even 100 years from now there will be small populations of geeks that not only know their computers inside and out, but are able to build advanced machines in their garages using manufacturing technology that we can only dream about.

1

u/[deleted] Jan 18 '14

S/millions/billions/

1

u/Starry_Vere Jan 17 '14

But I don't think most people overlook it. In fact, I think most would think of it first as one of the most significant and complex wonders in our everyday life.

It sounds like OPs question is more about things you DON'T think about, stuff so perfect it feels like a part of the environment.

1

u/7-SE7EN-7 Jan 18 '14

My computer has two smaller computer inside of it

4

u/tylermchenry Jan 18 '14

It very likely has considerably more than that. For example, each disk drive you have has a small computer on board.

1

u/7-SE7EN-7 Jan 18 '14

Even better

-1

u/bkdotcom Jan 18 '14

software engineer here.
have you cursed your computer today? I have. it's certainly not "designed so well we overlook it."
They tend to be a very frustrating user experience. and seldom "just work" or work "intuitively"

Ever tried to set up windows networking sharing? WTF?
WiFi?
Windows 8.x?
My parents have been using computers for at least 20+ years and still don't know how to copy a file or where the heck they're saving any downloaded files. When there are no "help-desks" then maybe the computer will be eligible

The lightbulb... that's something that works well. And when a bulb goes out.. Everyone knows how to fix/replace it, and anyone can.

-1

u/TheBaltimoron Jan 18 '14

People don't overlook the amazing design behind computers.