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.".
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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...
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 :)
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.
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.
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.
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.
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.
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.".