Bill Gates' famous comment isn't really a decision though. As it's usually cited it's just an opinion - '640Kb should be enough for anyone' means "I don't think any programs will need more than that!". If someone at IBM decided that there should be 640Kb of available RAM for programs it's believable that Bill might have simply been agreeing with them.
The main thing that's annoying about the quote is that it's trotted out as an example of how Bill was wrong, as if being wrong is something terrible that he should be ashamed of decades later. That's nonsense. Being wrong is fine so long as you change your mind when you understand that you are wrong.
In 10 years, that might be a hilariously small number, but for right now, it's way more than the extreme vast majority will need.
I can already imagine vr-style videos pushing 8k with huge dynamic range and very high framerates becoming more common if the technology continues to go that direction, and suddenly a full video export in the highest quality becomes a magnitude (or 2!) jump larger.
As videogames become higher resolutions, they require higher res textures, and less compressed audio, and more detailed models. Not just like 50% more detailed, but 10x more detailed.
Sure, we are beyond the point now where it's pretty easy for the average person to store all information they ever could need on spinning disks for pretty cheap, but once that next "thing" comes out that requires a magnitude more, we are right back to looking silly for thinking 5tb should be enough for anyone!
No, even that has a limit. We're getting to the point where humans will be unable to perceive additional improvements in resolution. It's no different from audio. CDs are unchanged from when they were introduced 36 years ago because humans cannot hear the difference between a CD and "higher-qualitY" audio. There is a point where that will happen for video: when you can fill the entire field of view of the human eye with video the same resolution as your fovea at ~100FPS, that's it. There is no more room for improvement.
Not all improvements come with only resolution as the change. It's entirely possible (if somewhat less feasible, based on what I think) that we might start encoding movies as full 3D landscapes, with some preset positions for each scene (e.g. where the director wants the"camera"), but that people could roam around to view it from different aspects at their discretion. This is less or more interesting in certain performances, but imagine some great war film, and you can flit around to see the different people storming the beach or crossing no-man's land. What if you decide to make your own run and see if you would have made it or not?
3D headsets are just now breaking into the mainstream. That's a major shift in medium if taken advantage of, and it could easily create use cases where the media is many multiples of it's current size.
There's a lot of room for improvement in VR though. VR is computationally expensive because you have to calculate 2 sets of high resolution imagery. Not to mention that immersiveness in VR comes at a resolution cost. We're nowhere near 100FPS, high resolution 4k VR imagery.
I mostly agree with you. I wrote a paper during my time at Bose arguing against the rise of 4k which in retrospect I think has only been halfway true so far -- we've known for many years that consumers would not experience a significant improvement upgrading their televisions, but the 4k market is burgeoning anyways. We also didn't anticipate back then how important 4k would be to gaming and VR.
Not to mention that the lack of penetration of higher quality music in the market is mostly a cost problem rather than a storage problem. The average consumer cannot afford the sound setup necessary to truly utilize these higher quality codecs, whereas a 4k television panel can be had for under 500 now a days (!!!!). Netflix offers 4k streaming at 10/month, whereas Tidal's lossless streaming costs 20/month. It is shockingly inexpensive to be into high quality images.
But most of it is 4K works because of the hype. Why buy last year's model?
4K is a resolution for 40 degrees wide and 23 degrees high. That's about 1/45th of a sphere, or about 2% of the total you'd need for a fully immersive 360 degree picture.
From what I've seen, 120fps is a clear improvement over 60fps, and that's just on a normal flat screen.
So even with a fixed focus single image you're looking at needing 400 megapixels. At 30 bits per pixel that's 12GBit per frame, or 1.5TBit/second.
You've then got technology that records depth, and allows people to chose their own depth of field. And why stop at visible resolution - we don't with pictures, because we can zoom in. Imagine a choice of say 100 360 degree cameras around a football stadium that allows you to zoom to a desired level, you could be up Petabit emerging from the stadium.
i would be much more worried about color accuracy than resolution with a $500 tv. could be i'm wrong due to economies of scale from large amount of consumers demanding "the 4K", but my guess is that a $500 1080p tv could look significantly better than 4K at the same price.
Then multiply it by 3 orders of magnitude to bring in temporal detail.
And you're still after a format that records the depth of each pixel, allowing recreation of a true 3d environment.
The numbers would be astronomical. Lets say a single 360 degree picture, using 30 bits per pixel (R,G,B,Depth at 10 bits each), allowing 100x zoom, so 40gpixels, 50 bits per pixel, that's 200GBytes per image.
One image every metre, or 1600 every mile, 4 million miles of roads in the U.S. alone. That's a billion terrabytes.
1Exabyte is 10% of what Randall Munroe estimated google had in 2013. Not that much. Wow.
Fidelity has diminishing returns though.
What more RAM does is allow programmers to "be lazy": slap libraries together and use powerful but resource-hungry abstractions rather than hand-tune details.
We have a similar pattern today with JavaScript and CSS layering in web pages, making them slow and bloated.
It's increasing hardware usage in order to reduce greyware (human programmer) usage. Whether such is "smart" or economical makes for an interesting debate. It appears consumers prefer cheaper software over cheaper hardware for some reason. Software developers who are fastidious over hardware resource usage (RAM & CPU) are not sufficiently rewarded. The group that slaps existing API's together to get their product out quick and cheap seem to come out ahead.
I remember how MS-Office for DOS shipped on 7 floppy disks. I kept wondering why people tolerate loading 7 floppies. It's because the alternatives of the time were harder to use or cost more.
You must be remembering something else because there were no DOS versions of Office.
That's what it always felt like as an Amiga user. Not before DOOM there was much I liked on the PC.
Release Amiga 1000: July '85 Release DOOM: December '94
What was being described is going to programming from a RISC-like design processor to a CISC-like design processor, and how they felt constrained after doing so. It likely does feel more constraining (I don't really remember how I felt about it back when I did it, but I also went the other direction, and only in the context of classwork), but in the end, most people are programming a level removed from that anyways.
There used to be quite a lot of arguments about what design was better (IMO mostly fueled by Macs running a RISC processor and Windows running a CISC processor, at least until Apple switched to x86). I find it slightly comical that both designs ended up in a fairly similar place though (with RISC processors adding extra instructions, and CISC processors adding more registers, even if mostly just logical registers).
The Classic Mac was as well, but PowerPC based macs were RISC, which is what I was recalling in my followup.
68000 has it right!
And once EGA came out, it quickly started to surpass the 8 bits as a gaming platform too.
Even using the 8088 vs. the 8086 was a cost-saving move. A premium IBM PC might well have simply flopped rather than accelerating the industry.
I think the bigger compelling piece for x86 was its continuity with the top-selling 8080/Z80 CP/M machines that were the effective standard at the time. IBM offered both PC-DOS (cheap) and CP/M (expensive), and wasn't sure which was going to win out. And PC-DOS was basically a kind of clone of CP/M, down to the API call names.
David J. Bradley (https://en.wikipedia.org/wiki/David_Bradley_(engineer)) worked on both the Datamaster and the PC projects, and explained the reasoning behind the choice of the 8088 for the latter in an article in the September 1990 issue of Byte (https://archive.org/stream/byte-magazine-1990-09/1990_09_BYT...):
There were a number of reasons why we chose the Intel 8088 as the IBM PC's central processor.
1. The 64K-byte address limit had to be overcome. This requirement meant that we had to use a 16-bit microprocessor.
2. The processor and its peripherals had to be available immediately. There was no time for new LSI chip development, and manufacturing lead times meant that quantities had to be available right away.
3. We couldn't afford a long learning period; we had to use technology we were familiar with. And we needed a rich set of support chips -- we wanted a system with a DMA controller, an interrupt controller, timers, and parallel ports.
4. There had to be both an operating system and applications software available for the processor.
Points 1 and 3 both reference lessons learned from the Datamaster project -- #1 is about the desire for the PC to overcome a limitation the Datamaster's 8-bit CPU had imposed on it, and #3 refers to the fact that the 8086 and 8088 were close cousins of the 8085, so the IBMers wouldn't have to learn a whole new architecture from scratch.
It's not hard to imagine the decision coming down to Bradley (or someone else on the Entry Systems Division team) calling someone they knew at Intel and saying "we need a 16-bit processor as similar to the 8085 as possible that you can deliver in volume tomorrow. Whatcha got?"
"Next came the 8088, the processor for the first IBM PC. Even though IBM engineers at the time wanted to use the Motorola 68000 in the PC, the company already had the rights to produce the 8086 line (by trading rights to Intel for its bubble memory)"
https://www.ibm.com/developerworks/library/pa-microhist/inde...
http://www.old-computers.com/museum/computer.asp?st=1&c=623
But 1981 was just too early for 68000 non workstation machines since the early chips were slow and expensive. The 1983 Lisa was limited to 4MHz, for example, in contrast to the 1984 Macintosh's 8MHz. I remember the price of the chips dropping from over $100 to less than $20 in just one year back then.
The 8086 was thought too powerful and would compete against existing IBM products, so the 8088 was chosen. Other changes to expansion and bus architecture were on the same basis.
I spent over a decade completely failing to understand how it could succeed against Amiga.
Yeah, "640k should be enough for anybody (specifically in the context of a conversation about current hardware of software and not necessarily in perpetuity)"
“8 core CPUs or 32GB of RAM are more than enough for gaming” (c) 2018
Facts change and opinions change with them. Wonder if Moore’s law will get the same treatment now.
Of course that's wrong, and most of the time it is used by people who don't understand the trade offs made in incremental advancements in tech standards.
The 8086 was thought too powerful and would compete against existing IBM products, so the 8088 was chosen. Other changes to expansion and bus architecture were on the same basis.
The PC was not supposed to be the benchmark design on which the entire future of computing was built. If you were looking for one of those better off starting with an Amiga. :)
Hardware had removed the 640K memory limit - but Windows stuck with it for years afterward. Not for any technical reason, but because they dominated the market, and neither needed to change nor wanted to change - no matter how hard that made things for developers.
I worked with Microsoft guys, and they were very blunt about not wanting to change their working OS code if they didn't need to - so Bill held back the entire industry for years.
It's easy to say they put back "the industry" for years, if we define the industry as chip design, but I think it's just as easy to make a case that they greatly expanded the industry over this time by giving people a platform and OS combo that could continue to run their software from a few years back even after upgrading every component. In my opinion, consumer confidence likely greatly outweighed the other benefits, as it allowed economies of scale to really be reached, and spurred the whole industry forward from the massive demand.
If he thought he couldn't make any money implementing it, that means he didn't think there was a market for it that would return the investment. I think it's entirely possible he created that market by driving adoption until the point where that feature it could be supported.
The question can essentially be flipped, and you can ask why Intel didn't create the hardware with those features initially. The answer is likely that it would have taken more research (if it didn't already exist in much more expensive processors) and would have driven the cost of the processors to the point of not being worthwhile. Is Intel then responsible for setting the industry back by years, because they didn't market a processor they likely could if they took longer and/or charged more?
> The Intel guys offered not only to fully fund the development, but to fully staff it and pay Microsoft for all the bother.
In a world where increasing software complexity or having outsiders contribute a sizable or complex piece of code to your private codebase has no cost in future development complexity or runtime, this might have been purely an upside. In the real world, there's there are other considerations, which is likely why it was rejected. Otherwise, why would anyone turn down free development time? Are we to assume Gates was so capricious as to turn down something this beneficial, or that he had resons we haven't adequately covered yet?
> If someone wants to philosophically believe in rational markets and insightful and honest executives, well, that is a choice they can make.
I don't believe in entirely rational markets and honest and insightful executives, but I do believe in people following what they think that market will do, and in executives that turn down things they think are a bad idea, right or wrong. I'm willing to bet Gates had a lot more information than we do when making this decision, and had his reasons. I think it's possible that he could have been right.
1: https://en.wikipedia.org/wiki/Protected_mode#Operating_syste...
So, here's a thought for ya: MS Excel from back then won't run on anymore, 16-bit apps aren't recognized by modern Windows, etc.
But a .XLS created back then sure will. And lots of business logic is codified in Excel spreadsheets.
I posit that .XLS is a more stable platform than Windows itself.
Here's a thought for you: it actually does run on Windows 10.
In particular, Excel 3 for Windows 3 installs and runs on Windows 10 out of the box. Here's a screenshot on my system[1]
Again, let me emphasize: this is software with a GUI written in 1991 for an OS released in 1990 which just works on Windows 10 in 2018 -- no VM required.
This is the second major release of MSOffice for the PC. The previous release, Excel 2, was running under Windows 2.0, which nobody wants to remember, and which is indeed not supported.
On the other hand, its installer - a DOS program - runs fine because DOS programs still run in windows 10.
The compatibility breaks on 64-bit releases of Windows. But all the major versions are available in 32-bit, which you can run on any hardware you can put the 64-bit version on.
They certainly will run, even if only through emulation or API conversion. In fact, that's probably what modern MS Excel does to old XLS docs, which is convert them to an in memory format that probably more closely resembles The Office Open XML format than the Excel Binary File Format (the extension may or may not change, but the format did).
> I posit that .XLS is a more stable platform than Windows itself.
Well, ignoring that we've drifted quite far from hardware, I would say that Excel (which would be the actual platform, not the container format) is not a general purpose computing platform (at least not a feasible one), not something that necessarily defined what architecture is being used, except tangentially.
Entire businesses have been run on systems that have 512k of RAM.
The IBM Series 1 had up to 128k: it was designed by Don Estridge, more famously known as the father of the PC...
The hardware supported more than 1MB, as later CPUs proved. However, MS-DOS didn't really support it, as EMS/XMS proved:
https://www.filfre.net/2017/04/the-640-k-barrier/
I'd say that you've got it backwards, in my opinion. And in the opinion of that fine article I linked.
The 80286 CPUs did support up to 16 MB of RAM, but they needed to be switched into protected mode to be able to use it. The problem was, that there was no way to switch back, except reset. That might be the reason, why MS DOS never supported this mode.
With 80386, it was possible to run in protected mode AND run real mode binaries in VM86 mode, which is exactly what Windows 3.x used.
The 80286 reset thing wasn't a full PC reset, but a CPU reset.
True
> The 80286 reset thing wasn't a full PC reset, but a CPU reset.
That required an extra hardware and BIOS support. The CPU had to be reset externally, and after jumping to FFFF:0000, the BIOS had to recognize that this is a CPU reset, not re-initialize the hardware and return execution to where it came from.
That excuse is valid for 8086, but it's no longer valid for the 386.
Even when expanded memory was an option, loading a bank switching memory extender to work around the cpu’s Address range limitations left less base memory left for non-EMM aware apps to run in. Many times I remember discussing with users the pros and cons of different memory managers and aporoaches, but most of the time in that era, not using them at all and using bare bones MS-DOS was actually the best choice. Some users would have two boot disks. One without EMM386 to run software that wasn’t expanded/extended memory aware to maximise the memory available to them, and another with EMM386 to run one or two apps that were.
The 640K limitation derives from the 1MB address space of the IBM PC, and as the name implies, IBM did the hardware design. They did it around a particular Intel chip, which had a 1MB address space. IBM could've put in hardware support for bank switching (as some EMS/XMS add-in cards later did), they could've used a chip with more than 20 address lines, they could've done a lot of things.
But they didn't. IBM wasn't designing a mainframe-killer, they were designing a personal computer. It was competing with 16k and 64k 8-bit machines, and the first IBM PCs shipped with 64k and later 128k of RAM. Using the top 384K for peripherals and allocating 640K for programs must've seemed insanely generous at the time. But whoever made that decision, it was on the hardware side, not anyone at Microsoft.