140
votes
What was the point of separating stdout and stderr?
Because you might not want error messages in your output. According to computer scientist Stephen C. Johnson:
One of the most amusing and unexpected consequences of
phototypesetting was the Unix ...
125
votes
Accepted
Why wasn't ASCII designed with a contiguous alphanumeric character order?
Why is ASCII this way?
First of all, there is no one best sorting order for everything. For example, should UPPER or lower case be first? Should numbers be before or after letters? Too many choices, ...
116
votes
Accepted
Why is Windows using CR+LF and Unix just LF when Unix is the older system?
This is covered largely in the history section of Wikipedia’s entry on newlines. Basically there are two primary lineages of operating systems leading to modern-day desktop usage: Windows on the one ...
113
votes
Accepted
What was the point of separating stdout and stderr?
You are thinking that all output is for human reading.
For instance, take the Unix cpio command. It writes the archive to stdout, which is always redirected to a device or file. It writes the ...
109
votes
Why was `!` chosen for negation?
Since the few document trails on this topic quickly run cold, I contacted Ken Thompson. He confirmed that if there was anything he would have been influenced by at the time, it would have been BCPL ...
100
votes
Accepted
Why didn't the 8086 use linear addressing?
For once, I do have a direct source for a "Why didn't they ...?" question. Eric Isaacson, back in the late '80s and '90s, wrote a commercial assembler for the 8086, called A86. (His ...
85
votes
Accepted
Why did the NES not allow rotated sprites?
For each sprite displayed on a scanline, the hardware fetches two bytes from memory, and then clocks the pixels out one by one. The sprite is eight pixels wide, and each pixel is two bits, which is ...
70
votes
Why did old IBM-PC-compatible computers only have 16 colors available?
The original IBM Color Graphics Adapter (CGA) for the first IBM PC introduced the "80x25 at 16 colors" text display mode for use with output to color monitors like the IBM 5153 (as opposed ...
62
votes
Why wasn't ASCII designed with a contiguous alphanumeric character order?
According to ASA X3.4-1963 Appendix A, one of the design considerations was:
(7) Ease in the identification of classes of characters
Furthermore:
A4.4 The character set was structured to enable ...
57
votes
Why was `!` chosen for negation?
The ! was around as part of the B programming language, according to the "User's Reference For B" (K Thompson, Jan 1972).
Somewhere between BCPL and B, the decision was made to use !.
In the ...
52
votes
Could we have avoided the whole UTF-16 fiasco?
The designers of Unicode did consider whether 16 bits would be sufficient, and decided that they would be, based on their assumptions:
Unicode gives higher priority to ensuring utility for the ...
52
votes
Accepted
How was the clock frequency of the PS/2 keyboard protocol chosen?
Why is the clock frequency of the PS/2 keyboard protocol so high?
I wouldn't call it high. It's quite in line with similar keyboard speeds - like Amiga operating a 17 kHz.
At 11 bits per scancode, ...
52
votes
Accepted
Why were single quotes ('…') chosen for characters, and double quotes ("…") for strings?
For type system reasons, and for compatibility with B.
B is a programming language that served as the immediate ancestor of C. The salient thing about B is that it had no type system: all values in B ...
51
votes
Accepted
Did they forget to add the physical layout to the USB keyboard standard?
They didn’t forget to add such a function, they chose not to add one. The HID Usage Tables explain this as follows (section 10, page 88):
Note: A general note on Usages and languages: Due to the ...
49
votes
Why didn't Microsoft use a well-known encryption algorithm like RSA for telephone activation?
My question is why didn't Microsoft simply use RSA or another proven algorithm?
Because they thought it was important to minimize the signature. That is, in the use case:
For those who don't know I ...
48
votes
Why are the Nintendo 64 memory cards' batteries *soldered* on?
It's cheaper and possibly more reliable than providing a connector. These are disposable consumer products designed to be sold at the lowest price and highest margin.
Your question assumes devices ...
40
votes
Accepted
Why did post-8008 CPUs not keep the on-chip stack idea?
In short, to better support interrupts, because interrupts were
arguably broken (or at least very limited in usability) on the 8008.
The direct answer to the question of why you'd move the stack off-...
40
votes
Accepted
Why did mainframes have big conspicuous power-off buttons?
Yes, huge safety concerns as I remember engineers sitting inside the cabinets of large mainframes while it was running, fully powered, large currents in each cabinet powering fans. Cooling water being ...
39
votes
Why do variable names in BASIC need type suffixes?
TL;DR:
Most straight answer: Because it's BASIC
A trailing '$'-sign is the syntax BASIC defined when adding strings.
Also, the suffix is not only a type marker, but part of the name. In BASIC A and A$ ...
39
votes
Why couldn't early C compilers handle variable declarations between statements?
Some early compilers, such as the ones described in the 1974 C reference manual, required that all automatic object declarations within a function precede the first executable code therein. Imposing ...
38
votes
Accepted
Why did some CPUs use two Read/Write lines, and others just one?
What reasons would CPU designers have for choosing these different approaches?
It depends on what the designers intended to mark a valid bus cycle, which is the 'leading' signal for decoding. In a ...
38
votes
Why did the original design of COM on Windows rely on the Registry?
At that time, developers at Microsoft were still dreaming the dream of version independent management of libraries, so newer, more powerful libraries could replace older, less powerful or buggy ...
38
votes
Was leaving all xxxxxx11 opcodes unused on the 6502 a deliberate design choice?
The instruction decode is quite simple on the 6502.
If we call the bits in the opcode byte aaabbbcc, then one of the first things that happens is that cc, the two bits you're talking about, gets ...
38
votes
Why did the stock Amigas not have a battery for keeping the time/date?
You specifically mention the Amiga 1200 in your question, but your statement about real-time clocks is not true for Amigas, in general.
From 1987, the Amiga was offered in at least two versions aimed ...
37
votes
Twist in floppy disk cable - hack or intended design?
This was a good piece of production engineering.
IBM expected to sell lots of twin-floppy PCs, even after the launch of the XT (personal experience in a UK reseller in late 1984).
To assemble a twin-...
35
votes
Accepted
Were the dungeons in Legend of Zelda designed to fit together?
As seen in that incorrect† image, the levels seem to merge well. This wasn't a case of "Let's take these shapes, and see if they... whoa! They fit together!"
It was more like, "Here's ...
35
votes
Why wasn't ASCII designed with a contiguous alphanumeric character order?
man 7 ascii of Linux Programmer's Manual says,
Uppercase and lowercase characters differ by just one bit and the ASCII character 2 differs from the double quote by just one bit, too. That made it ...
35
votes
Accepted
What aspect of portable floating point did Java back down on?
The range of intermediate results.
The Java Language Specification, 2nd Ed. relaxed the evaluation rules for floating-point expressions by introducing the notion of an ‘FP-strict’ expression, defined ...
34
votes
Accepted
Why are the magnetic floppy disk drives (FDD) heads not frictionless?
TL;DR:
"Frictionless" Floppies are called Hard Disks (*1), consisting of a hard media platter and a head in distance of the media (flying or otherwise)
Floppies are 2D tapes. While slower ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
design-choices × 74history × 30
hardware × 11
programming × 9
6502 × 5
keyboards × 5
c × 5
amiga × 4
unix × 4
ms-dos × 3
ibm-pc × 3
floppy-disk × 3
basic × 3
nes × 3
memory-layout × 3
instruction-set × 3
compilers × 3
architecture × 3
commodore-64 × 2
memory × 2
commodore × 2
cpu × 2
mainframe × 2
intel × 2
x86 × 2