Computer

{{cquote|To err is human, to really foul things up requires a computer.|||Bill Vaughan<ref>http://quoteinvestigator.com/2010/12/07/foul-computer/</ref>}}
[[File:AVIDAC -- First Argonne Computer (1953).jpg|right|thumb|165px|The great-granddaddy of the thing you're using now.]]
{{technav}}
A '''computer''' is a device capable of automating vast amounts of [[Mathematics|mathematical]] computation to solve all kinds of problems, both mathematical and non-mathematical. While early digital computers from the 1930s and 1940s generally were used for numerical computations such as data encryption/decryption and weather simulations, over the next sixty or so years computer technology (helped along by the invention of the transistor at Bell Labs) would advance to the point where computers could be used to enhance or enable activities such as text processing, games, and [[pr0n]]. Today's computer is often small enough to fit in a small space on someone's desk (or even in their pocket, in the form of a PDA or a smartphone), and is capable of downloading and viewing a ''whole lot'' of 
porn
 useful information in a very short time.

A very small computer optimized for interactive use is called a calculator, and is a great way to give a math educator fits trying to figure out what to do with it.

==A brief history==
Computers broadly fall into two types: analog and digital. Analog computers rely on continuous calculations whereas digital computers carry out discrete calculations.

The earliest known analog computer, the ''Antikythera mechanism'', dates to between 150 and 100 BCE, and was found in a shipwreck in 1901. Following its re-discovery, its function was not fully understood until around 2006. The device was a sophisticated &mdash; though somewhat lacking in engineering precision &mdash; astronomical and calendrical calculator.<ref>[http://www.antikythera-mechanism.gr/system/files/0608_Nature.pdf Decoding the Antikythera Mechanism: Investigation of an Ancient Astronomical Calculator by T. Freeth ''et al.'']</ref> People have used many types of navigational and astronomical analog computers since that time, including the planisphere and the astrolabe. One of the first purely mathematical calculators was the slide rule, which was invented in the 1600s, following the publication of the concept of the logarithm upon which it relies.

The digital computer era began in 1936 with a theoretical paper by [[Alan Turing]], ''On Computable Numbers''. [[World War II]] (1939-1945) hastened the development of digital computers, with Konrad Zuse building the first modern computer in 1941. Digital computers' utility, speed and eventual cheapness have largely made analog computers redundant in all but limited, specialized uses.

==Things computers ''cannot'' do==
*A computer cannot hold an intelligent conversation with a human being (see [[Turing test]]). It can, however, malfunction and lock the pod bay doors shut, so you might have an issue with that.
**Some computers have been able to reach the point where they can confuse, for some limited period of time, a few horny cybersex addicts on IRC and/or creationists.
*A computer cannot successfully upload viruses to alien operating systems. (At least not without the right network card and protocol stack. Good thing the wireheads at [[Area 51]] are [[Mac]] users.)
*A computer cannot spontaneously become self aware, take over every computer in the world, launch a massive nuclear attack to wipe out humanity, then send artificially intelligent killer androids back in time to prevent someone from stopping it. Under the right circumstances, however, it can assume total control of the state of [[California|Caulyforneeya]].
*A computer cannot do anything at all without being told what to do — and the task of telling a computer what to do is so complex that there are scientists and megacorporations that make most of their living researching better ways to do it.

==Basic workings==
A computer can be seen as a set of layers that progressively abstract the complexity of the underlying ones:
===Physics===
* At the lowest level, a network of {{wpl|Transistor|transistors}} is printed on a chip. Each transistor is in the scale of few nanometers<ref>[http://www.itrs.net/Links/2006Update/FinalToPost/04_PIDS2006Update.pdf 2006 industry roadmap], Table 40a</ref> and acts as a switch: it conducts electricity or not depending on the voltage that is applied to its other input.
===Electronics &mdash; basics===
* That basic building block makes it possible to create {{wpl|Logical gate|logical gates}}, that is, pieces of circuitry that implement the ''AND'', ''OR'', ''NOT'' functions (and other minor variations): for example, the output of an AND is 1 only if both inputs are 1 as well (1 representing a higher level of voltage compared to 0).
* These blocks can be used to implement various functionalities:
** {{wpl|Adder (electronics)|Adders}}, that sum two binary numbers with a predetermined number of binary digits (bits) (eg. 32, which corresponds to 9 decimal digits, or 64, 20 decimal digits).
** {{wpl|Multiplexer|Multiplexers}}, that select a particular input among many, according to the value specified in another input. Or demultiplexers, that forward an individual input value to a specific output among many.
** By creating loops in these circuits, it's possible for a circuit to "remember" a value. For example, a {{wpl|Flip-flop (electronics)|flip-flop}} can, depending on its two inputs, keep the current output, change it to 1, change it to 0, or switch it. Groups of these can be used to create a {{wpl|Hardware register|register}}, that is, a place where to store (or read) a numeric value or other information.
** When multiplexers and flip-flops are used together, it's possible to create an addressable memory: depending on the input data values, input address values, and control values (read/write), it's possible to ask the memory to read or write data from a particular region.

===Electronics &mdash; processor===
* Memory can store data or code (both are represented as opaque sequences of bits, or bytes (groups of 8 bits)). Code is composed of a sequence of instructions, each represented by a numeric code and zero or more operands/parameters. Various instructions exist:
** instructions that perform arithmetical operations: addition, subtraction, multiplication… (with either constants, or values in addressable memory &mdash; RAM, or in use by other parts of the processor &mdash; "{{wpl|Hardware register|registers}}");
** instructions that compare two values (that come from some of the above sources);
** instructions that jump, either conditionally or unconditionally, to a predetermined portion of code.
** instructions that write or read data from the RAM of from an input/output device.
* The task of the CPU is to follow the instructions in the code. This is achieved with a complex set of the above components, along with some registers that let the processor "keep track" of what it is currently supposed to do:
** A register called {{wpl|Program counter|instruction pointer}} specifies the numeric address of the instruction that is supposed to be executed next. This value is sent to the RAM, that returns back the instruction at that position.
** Based on the numeric code of the instruction, the processor decides what to do and orchestrates which gates are supposed to be open, which closed, and which control values should be sent (or not sent) to each sub-component or external device. For example, if the instruction is ADD, data from the first and second operands should flow into the adder, and the output of the adder should also be forwarded to the appropriate location (for example, an intermediate register that will be later used to replace the contents of the first operand, so that the first operand is "incremented by" the second operand).
** Because it's often required to perform some common operations (like doing something complex like writing a piece of text on the screen), functions can be used to write this repetitive code once. Since the "write text to the screen" function needs to know where to jump back when it has finished its job, a {{wpl|Call stack|stack of functions}} currently being executed is kept in RAM. When a function is called, the address where to jump back when it's done is added to the top of the stack. When a function finished, it removes and jumps to whatever is at the top of the stack. In this way, many functions can be called recursively.

===Software &mdash; operating system===
* Writing machine code by hand is very complicated, slow and error-prone. A variety of {{wpl|Programming language|programming languages}} has been developed so that textual, friendly, and humanly comprehensible code can be automatically converted to machine code understandable to the processor.
* An {{wpl|operating system}} can now run on the computer. It is a special program that abstracts the underlying resources and provides a more friendly programming experience for developers, and for final users too:
** For developers, it provides a wide variety of commonly used functions for interacting with the machine. For example, <code>CreateFile("C:\\Path\\Example.txt")</code> is easier to use rather than organizing a hierarchical store of data addressed by name on the disk and issuing low-level control commands to the hard disk by yourself.
** It orchestrates the execution of multiple applications at the same time. Each application is given a few milliseconds of time to run. If the application hasn't finished whatever it had to do within that time, a pre-programmed timer in the CPU gives the control back to the operating system, that then decides who's the next application that has pending tasks to do.
** Applications are prevented by the CPU from executing special instructions that allow low-level access to some devices or to some memory areas. These tasks can however be executed by the operating system on behalf of the application (after the operating system has checked the application can do something, eg. the current user has actually the permissions to read/write a specific file) by invoking a "system call".
** Some applications for commonly-required tasks can be included in the operating system (eg. a tool for managing files, browsing the web and so on).
===Software &mdash; apps===
* You can now download your favorite Angry Birds application, or visit your favorite [[Pornography|"sports"]] site.

==Quantum computer==

The idea of quantum computers is basically that, once things get small enough, physics go out the window, meaning that there IS a physical limit to how small silicon transistors get before everything becomes chaos (about 7 nm). Though they are working on making transistors out of different materials, which would allow them to get smaller, it still means that at one point or another it will become physically impossible for [[Moore's Law]] to continue, meaning that the growth of computing power will stop, inhibiting scientific progress and causing a global [[recession]] due to the computer industry shrinking dramatically. However, a quantum computer would take advantage of the laws of physics going out the window at this size to produce far more powerful computers. This has been claimed possible by [https://www.dwavesys.com/ D-Wave Systems,] which claimed to have created two models, but as yet has not demonstrated a quantum speed increase through independent tests.<ref>[http://science.sciencemag.org/content/344/6190/1330.full Quantum or not, controversial computer yields no speedup] by Adrian Cho (2014) ''Science'' Vol. 344, Issue 6190, pp. 1330-1331. DOI: 10.1126/science.344.6190.1330.</ref> Quantum supremacy is the point at which a quantum computer can be demonstrated to faster than a "classical" (or non-quantum) computer for any particular problem. It is expected that a quantum computer will reach quantum supremacy once it reaches the size of 45 qubits (or quantum bits).<ref>[https://www.sciencenews.org/article/quantum-computers-are-about-get-real?mode=magazine&context=193345 Quantum computers are about to get real. As the first qubit-based machines come online, scientists imagine the possibilities] by Emily Conover (7:00am, June 29, 2017) ''Science News''.</ref>

Quantum computing is not expected to enter the PC market in the foreseeable future due to the bulk of cooling and vacuum systems needed for superconductivity. They also would be prohibitively expensive (and no quantum PCs exist yet), and wouldn't really help anything until Moore's Law ends. However, supercomputers and servers will be drastically improved by them, able to do calculations that take a classical supercomputer far longer, and drastically increasing server speed for the same reason.

Then in 2025, [https://news.microsoft.com/source/features/ai/microsofts-majorana-1-chip-carves-new-path-for-quantum-computing/ Majorana-1] was invented. Unlike previous quantum computers, it's ''actually reliable'', and works on principle what could be minimized ("a path to a million qubit"). As such, in the foreseeable future, we could finally get ''practical'' quantum computers, capable of doing things normal computers can't.

The main problem with personal quantum computers, is that they require extreme cooling and vacuum systems. There are experimental cooling systems on liquid nitrogen used by overclockers - but those are novelties used just to determine limits of overclocking, not for practical jobs. As such, to invent personal quantum computers, it's first required to make liquid nitrogen cooling systems cheap, compact and reliable enough to be used in PC's on regular basis for practical tasks (i.e. if ''average user'' would have ≈10000 MHz overclocked processor on liquid nitrogen cooling, working ''for years straight'').

== Miscellaneous Ultra-Advanced computers ==
Quantum Computers aren't the only type of advanced {{wpl|Unconventional computing|unconventional computers}}. There are also:
#Optical Computers: Instead of using electricity, they use light photons, what are many orders of magnitude faster. As such, they work quicker and produce less heat.{{cn}}
#Bio-computers: Work on neurons. Most current models use very small numbers of neurons, though are still promising. If scientists managed to re-purpose ''whole'' rat brain for computations - not to mention ''[https://www.livescience.com/53751-brain-could-store-internet.html whole human brain]'' - it would vastly out-compute all modern computers.{{cn}}
#Pintronics: Uses magnetic intrinsic spin and magnetic moment of electrons for processing.{{cn}}
#Atomtronics: Uses atoms of metal cooled to extremely low temperature.{{cn}}
#Fluidics: Used in places, where normal electronics can't work properly.{{cn}}
#Microelectromechanical systems: Use parts the size of micrometers to nanometers.{{cn}}

==See also==
* [[Computing woo]]
* [[Dvorak Simplified Keyboard]]

==References==
{{reflist|2|80%}}

[[Category:Computer science|*]]
[[Category:Technology]]

Categories: Computer science, Technology