We have come to understand that developer time is vastly more valuable than computing resources in the overwhelming majority of applications - the only real disagreement is how many orders of magnitude of inefficiency we consider tolerable. Even the most resource-constrained applications are using higher-level languages and computationally inefficient designs, because it's much easier to spec a faster chip than a smarter dev team.
Most applications aren't getting significantly slower. Web browsers are a perfect example of this; Almost every aspect of their performance has improved vastly over the past few years, but as a result we're building much more sophisticated web apps and doing things in the browser that were once purely the domain of highly optimised native apps. It's a near-perfect example of Jevons Paradox. Improving the efficiency of a process reduces the cost of the output, which leads to increased demand for the inputs to that process.
My current computer has 700,000x more RAM than my first computer. If 99% of that memory is wasted, I'm still doing pretty well.
>We have come to understand that developer time is vastly more valuable than computing resources
I get that, but still, 30 servers is pretty expensive. Having a full time engineer just to manage the cluster and write load balancing code is pretty expensive. Having down time because of a usage spike is pretty expensive. I'd rather pay for the smarter dev team myself, but I'm an engineer, so I'm biased.
Though fundamentally I wasn't talking about servers above. I was talking about desktops, and mostly Windows desktops. And having to install Python because that's what one developer prefers, and .NET because of another preference, and Perl because of a third, and Ruby because of a fourth, and Java because of a fifth...where does it end?
My own "scripting language" of choice is Lua. It's TINY, it's faster than all of the above (except, under some circumstances, Java -- but give Mike Pall another year or two and I bet LuaJIT will be beating Java in all the benchmarks instead of just many of them), and using it gives developers that productivity boost you're rightly saying is important.
And if you need more speed than Lua can give you, Go is a good option, if it comes to that. But as you point out, not every app needs every cycle.
[1] http://blog.iron.io/2013/03/how-we-went-from-30-servers-to-2...
Chrome, in particular, is generally be used for far more tabs (I have like 30 open right now on a MacBook Air) and increasingly complex web sites every year. It's easy to look at memory usage and complain, but the fact is that our usage and the size of the pages we're loading is also rising rapidly. If you loaded Chrome from two years ago and used it how you work today, you might not find the memory footprint that much better than the current version.
That's assuming you're using a computer with user upgradeable RAM, and not a new macbook pro.
But if you have to buy a whole new machine every two years when they only pieces of hardware that are getting better should be upgradeable (ram & display) it's pretty disheartening.
The ram upgrade procedure for the new MBPs is backup, Craigslist, Apple Store, restore.
[1] One can't easily buy a 64GB DIMM today, but Moore's Law is swift and mighty.
It objectively doesn't make your program run better to waste RAM.
If RAM usage goes up 2x every two years but RAM and hard drive speed go up 20% in the same time period, then using more RAM when you don't need it is making programs more sluggish to start and to suspend to disk, and it's making computers draw more power while sleeping (to keep that much RAM alive -- the D in DRAM means every bit in the RAM needs to be refreshed continuously).
From what I've read, an SSD has an expected life of about 1-2 years. Aside from not being able to afford $2500 JUST for an SSD to hold my data [1], I can't fathom paying that much every 1-2 years as the drives die. Not to mention downtime and potential lost data (between the back-up and the failure).
I'd love to have an SSD. In a year or two, I probably will, as the costs will likely drop.
But until then, yes, the performance has objectively dropped.
[1] http://www.amazon.com/OCZ-Technology-2-5-Inch-Performance-OC...
Quality is measured on multiple axes. RAM use is only one of them. CPU use is another, for example, and it's often the case that reducing CPU use requires increasing RAM use.
http://httparchive.org/trends.php?s=All&minlabel=Mar+15+...
And yes, that's pure raw bloat. Sites haven't gotten richer content the past 2 years, they've just put on some weight.
Sure I don't use it for modern gaming and sure I've delegated tasks to much stronger uni machines a few times in the past but other than the occasional hw problems due to age it still works and is mostly enough...
Shared Objects are not too bad, since they are shared between all processes that use (the same version of) them. In fact, the apparently worst case of linking them "into every app" is only slightly worse than having them appear in one app each. Assuming they are not all in the working set of every app at once, the overhead is small. Great OS technology!
I think the main technical problem with code/feature bloat is the increased likelihood of bugs with every additional line of code.
The problem is that one app wants the Mono/.NET runtime, another wants Python, another is using Java, another is using a huge pile of Visual Basic libraries...and then every app ECOSYSTEM has its own pile of dependencies and libraries. And on Windows, to avoid DLL-hell, everyone pretty much ships their own version of libraries to ensure compatibility (and if you're on Mac, the story is pretty much the same there -- apps don't share anything but OS services -- it's only on Linux where you can rebuild everything that people dare share versions, and even then another commenter just pointed out there are bugs with that too).
Java/Eclipse is probably my current worst offender, and Firefox is still greedy (though it's gotten better -- and Chrome is just completely broken on my system right now for whatever reason). Both are actually worse than the (bloated) Visual Studio that I need to run to develop Windows apps. And then of course there's Firefox (which has gotten better) and other various apps I'm running just to do basic development.
Eclipse makes Visual Studio look lean by comparison -- but if I want to develop for Android, I have to work a lot harder to get an alternate environment ALMOST working as well as they've got Eclipse configured to work.
Sounds like you're on Linux or Mac, and not doing as much GUI development as I choose to do. Looking right now Eclipse (the GUI from hell) alone is using 608Mb of memory. I know it has a lot of useful features, but 608Mb is a crazy amount of memory to use for a fancy text editor.
I'm also using Notepad++ with tons of plug-ins, and it takes up <10Mb. Eclipse does more, but really, does it do THAT much more?
And SKYPE is taking 90Mb to sit idle. I use Skype to chat with business clients, so I can't easily just toss it, despite that Pidgin is using 21Mb to connect to 4 different chat networks simultaneously and Skype only connects to one...
The list goes on. And I need to upgrade to 16Gb soon (though looking at the memory usage right now, shortly after a reboot, I'm "only" at 4.1Gb, so it's not critical yet). Sigh.
I used to carry around a laptop with 128MB RAM. In 2010-2012, I had 1GB and was happy with it, but I had to adapt:
- Try a tiling window manager. You'd be surprised how many resources it takes to draw those window decorations, which not only saves RAM but also helps you focus better.
- Try a lightweight browser like LuaKit, dwm, surf, etc. Most of them are Webkit-based anyway, so there's not many problems. Plus, a keyboard-driven web browser is a hoot
- Try using emacs/vim instead of Word or OpenOffice. Thanks to LaTeX, I haven't touched a huge office suite in ages.
- Instead of having lots of programs open in the background, why not try some command-line equivalents? If you're not on windows, you have access to a world of utilities: music players, todo lists, file managers, etc.
Now I'm on an 8GB machine, and even under heavy load, I don't think I've ever come close to reaching that limit in the six months I've owned this box. (I don't have any swap space either)
This is Not A Good Thing. This is people throwing every last feature -- even if it has a pile of 800kb of DLLs/SOs attached -- into every app, with no regard for memory.
I find my system thrashing almost daily at this point. I need to upgrade. Two years ago, running predominantly the same software, 4Gb was just barely not enough, and I upgraded to 8Gb. And two years before that, cut the memory requirements in half again. And again, and again, until you get back to the 1Mb of RAM I had in 1990.
There has been a trend to do exactly what you say you want for 30+ years. And you know, some of that extra memory has been used to great effect -- we can do a ton more now than we could in 1990. But a lot of it is wasted, just Because It's Easy.
And that wasted RAM means pointless upgrades every two years; 99% of the bloat at this point is for something I don't need or want. The ONLY valid reasons to need 16Gb+ are if you're actually using that much data in one place -- a server that needs to scale, for instance, or editing video, or maybe a game that uses crazy amounts of data and/or video.
That the same apps are bloating 2x every two years -- and as a result get slower, since hard drive and memory speeds certainly aren't doubling every two years -- is really unacceptable laziness on the parts of companies and developers in general. It's pretty much the opposite of a Good Thing.