TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

So what’s wrong with 1975 programming? (2006)

163 pointsby nethuntersabout 4 years ago

14 comments

ajarmstabout 4 years ago
I find this to be a bit of an oversimplification. It&#x27;s certainly not the case that there&#x27;s only one type of storage, at least from a hardware perspective: there will always be storage that is faster than other storage, and managing that will always be required to optimize performance. I agree with the author that you should program against the simplest abstraction you can, but that&#x27;s not always clear. Just because your environment is one in which you <i>don&#x27;t have to</i> doesn&#x27;t mean you <i>can&#x27;t</i> or <i>shouldn&#x27;t</i> in the right circumstances.<p>I&#x27;d argue that it&#x27;s actually <i>more</i> complex now. I programmed in the early 1980s, and did have to worry about where my data physically resided inside the machine, but I never had to worry about whether it was in a different room on a different machine, or sitting on a hard drive in some Amazon Data Center a continent away.<p>As others here note, the idea of using the same abstraction for all storage is at least as old as MMUs and Multics (mid 1960s). What <i>is</i> different is that programmers in the 60s and (early) 70s were usually coding pretty close to the bare metal. Nowadays, Moore&#x27;s law has allowed us sufficient power to permit programming on top of a big pile of abstractions that try very hard to hide the actual hardware from us.<p>That&#x27;s a luxury afforded by the sheer power of what we&#x27;re working with, but the people writing those abstraction layers still have to pay attention to the layer beneath them, and if you go down far enough, you&#x27;ll find some code that needs to pay attention to what class of memory something is stored in and how to optimally move it around. It&#x27;s just that work was probably done for you by someone else who wrote your operating system.<p>Just because your programming language doesn&#x27;t require you to use pointers doesn&#x27;t meant that indirection isn&#x27;t being used. You just don&#x27;t have to deal with it (until it rears up and reminds you it&#x27;s still there). Joel Spolsky&#x27;s Law of Leaky abstractions (<a href="https:&#x2F;&#x2F;www.joelonsoftware.com&#x2F;2002&#x2F;11&#x2F;11&#x2F;the-law-of-leaky-abstractions&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.joelonsoftware.com&#x2F;2002&#x2F;11&#x2F;11&#x2F;the-law-of-leaky-a...</a>) is relevant here.
评论 #27101389 未加载
评论 #27101030 未加载
dangabout 4 years ago
Some past threads:<p><i>What&#x27;s wrong with 1975 programming?</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13435988" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13435988</a> - Jan 2017 (3 comments)<p><i>So what&#x27;s wrong with 1975 programming? (2006)</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9260169" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9260169</a> - March 2015 (20 comments)<p><i>So what&#x27;s wrong with 1975 programming? (2008)</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=4874304" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=4874304</a> - Dec 2012 (128 comments)<p><i>What&#x27;s wrong with 1975 programming?</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=1760811" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=1760811</a> - Oct 2010 (12 comments)<p><i>What&#x27;s wrong with 1975 programming</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=1554656" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=1554656</a> - July 2010 (115 comments)
flakinessabout 4 years ago
The post should be marked as [2006]. A lot has changed since then. For example it doesn&#x27;t talk about NUMA but it should, if it were written today.<p>I would love to hear some opinions from the authors of more contemporary web servers like one of H2O or Envoy. (The latter may have slightly different use cases though.)
评论 #27096515 未加载
评论 #27096247 未加载
评论 #27096109 未加载
评论 #27095689 未加载
评论 #27095731 未加载
评论 #27097394 未加载
kensabout 4 years ago
As a historical note, I&#x27;ll point out that 1975 computers weren&#x27;t as primitive as the article implies. Virtual memory was introduced commercially in 1961 with the Burroughs B5000. Cache memory was introduced on the IBM System&#x2F;360 Model 85 in 1969.
评论 #27097705 未加载
评论 #27098006 未加载
评论 #27098030 未加载
wpietriabout 4 years ago
Just from the title, I would have expected the opposite approach: not treating RAM as a disk cache, but using RAM only and ignoring the disk. One of the biggest differences between now and then is that we&#x27;ve gone from RAM deficit to RAM surplus. (The VMs that contain so much of today&#x27;s software can be seen as a way of cutting too-big physical RAM back down to slices that match problems.)<p>This means that batch orientation makes sense for a much smaller slice of problems. Compilers, for example, come from a world of scarce RAM. When my dad started coding, one iteration of change-the-code-and-watch-it-run took days. Now that loop can be seconds: if I pause typing, my IDE starts running my unit tests automatically. It seems to me that things like compilers and runtimes should by default keep everything hot, incrementally updating as fast as possible.
评论 #27096458 未加载
评论 #27096595 未加载
评论 #27096487 未加载
eternalbanabout 4 years ago
This post elicited a response from antirez back in the day. Then he and &quot;the varnish guy&quot; &#x2F;g had a meeting of geek minds. You&#x27;ll learn quite a bit from both.<p><a href="http:&#x2F;&#x2F;oldblog.antirez.com&#x2F;post&#x2F;what-is-wrong-with-2006-programming.html" rel="nofollow">http:&#x2F;&#x2F;oldblog.antirez.com&#x2F;post&#x2F;what-is-wrong-with-2006-prog...</a>
mondoshawanabout 4 years ago
This article is a bit strange and conflates disk storage with swap and RAM. Modern systems don&#x27;t necessarily even have swap (looking at you, k8s), so the whole article falls on its face.<p>&gt; And then there were the secondary store, paper tape, magnetic tape, disk drives the size of houses, then the size of washing machines and these days so small that girls get disappointed if think they got hold of something else than the MP3 player you had in your pocket.<p>This is also written terribly.
评论 #27097192 未加载
评论 #27095569 未加载
kstenerudabout 4 years ago
This is probably the thing that annoys me the most about golang: It abstracts everything as if you were on a 1975 computer, so there&#x27;s allocations, allocations everywhere! And trying to keep them under control requires intimate knowledge about go&#x27;s implementation details. Failure to do so dooms your program to run 3-4x slower since allocations are horribly slow to begin with, and now your data is spread all over the place. And even then, there are still some things (like []byte &lt;-&gt; string) that you simply can&#x27;t get around (unless you want to delve into unsafe land and risk your code blowing up once the runtime implementation changes).
评论 #27095834 未加载
评论 #27096787 未加载
评论 #27096030 未加载
CrLfabout 4 years ago
Varnish seemed really popular a decade ago, but I wonder how it fits the modern web and who&#x27;s using it today and for what purpose.<p>The lack of built-in HTTPS seems killer to me. On the client-facing side it needs a separate daemon for TLS termination and on the upstream side there&#x27;s no TLS support at all unless you&#x27;re using the paid version.
评论 #27096316 未加载
评论 #27095635 未加载
评论 #27096358 未加载
评论 #27096041 未加载
评论 #27095765 未加载
评论 #27102194 未加载
throwaway879about 4 years ago
&lt;&lt; girls get disappointed if think they got hold of something else than the MP3 player you had in your pocket&gt;&gt;<p>Sexist B.S.
评论 #27095425 未加载
评论 #27095725 未加载
评论 #27095736 未加载
评论 #27095256 未加载
评论 #27089453 未加载
zbentleyabout 4 years ago
Arenas are great for latency sensitive programming. But some of the advice in this piece is a bit limited in that it assumes the presence of swap (often disabled on server hardware) and programs whose important &quot;hot&quot; datasets are likely to fit in memory (i.e. the memory use is nice and predictable--an enviable but not always achievable property).<p>When working with bursty memory demands and code&#x2F;data you don&#x27;t always fully control (think a big thick runtime with its own allocation decisions, some of them decidedly &quot;1975&quot;) on a system whose swapping behavior you can&#x27;t predict, hand managing on-disk versus in-memory data residency in userland (via manual memory mapping or something like sqlite&#x2F;lmdb to take care of it for you) becomes necessary.
slverabout 4 years ago
TLDR; Varnish is very proud they use memory-mapped files for cache, instead of managing RAM and disk cache separately.<p>That said, don&#x27;t overestimate the OS ability to understand your usage of RAM. The entity with highest insight on that usage is the application.<p>Maybe there&#x27;s some fortunate overlap in the case of a caching service (Varnish) using a caching service (OS disk cache &#x2F; virtual memory). Varnish itself has little clue how their entries will be used beyond what the OS sees.<p>But in more complex applications that&#x27;s decidedly not the case. Photoshop for example to this day uses a &quot;scratch disk&quot; separate from virtual memory. In fact you better hope you never use swap file with Photoshop, because it becomes unusable.
评论 #27099335 未加载
antiheroabout 4 years ago
Amazing until you need persistence.
评论 #27095486 未加载
评论 #27096665 未加载
geofftabout 4 years ago
Since the moderators seem to have collapsed the subthread about it (but not flagged it, so I can&#x27;t vouch for it), I&#x27;d just like to say that the random puerile joke in this article detracts from its technical merit.