The death of optimization

Back in 1995, I remember the conversations I was in about the “death of x86 assembly”. New programmers straight out of college did not learn assembly anymore. Back then we were noting how strong C was in the market. Today, it is the end of C itself. Most new programmers never learn to code in C anymore, and some of them never even learn C++. My husband has a hard time finding good C programmers to hire for example. It is all about .NET and Java these days.

While personally I am a proponent of .NET & Mono for desktop applications, I still prefer my heavy and CPU-demanding applications to be written in C++ with some assembly optimizations when needed (e.g. 3D Studio Max). And then, Sansa is just releasing an mp3/mp4 player that its UI is all written in Mono. While this is cool for the project, I just can’t stomach the fact that they used something as heavy as Mono (or .NET or Java or PyGTK for that matter) to do an embedded device. For me, when I hear the word “embedded device”, I can only accept assembly and C (and maybe some C++ if the compiler they used is good). But anything more than that, it is a waste of speed and RAM, which is something that I, the consumer, will have to pay for.

I mean, come on, if my husband had to develop their web browser in Mono or Java, they would have had ZERO customers right now, because the browser would need a lot of RAM and cpu speed which is something that does not fly in the cellphone industry (and no, Opera Mini is not a Java-based browser, it is a java-based client). Even on the desktop Java apps are slower to load and consume lots of RAM, and similarly pyGTK apps do too (and in fact the maintainers know of this issue but it’s nothing they can do, as they say).

Ah, where are the days where everything was optimized to the bone? The ’80s might have bad music to offer, but programming was really an art and meant full commitment.


Dave wrote on April 9th, 2007 at 8:37 AM PST:

Back in the day, hardware was expensive and programmers were cheap. Between then and about five years ago, hardware got way less expensive and programmers got somewhat more expensive. Hardware is still getting cheaper, but the demand for smaller, more functional devices is mitigating that trend somewhat. It’s all about tradeoffs.

I’d have zero job if I wrote everything optimally because I’d get way behind and the whole project would slip.

This is the admin speaking...
Eugenia wrote on April 9th, 2007 at 8:44 AM PST:

What you say is absolutely right. If you sit down and optimize like hell, the project will indeed slip.

But for me, the consumer, this is not my concern. I don’t care how much money programmers are paid or if the projects are going to slip (and remember, that’s the occupation of my family, but I am talking as a consumer here). As a consumer, I like bug-free, fast embedded devices.

Back in the ’80s and ’90s, I don’t remember to have ever stumbled upon a buggy TV or VCR or anything else embedded. Everything just worked, and it worked fast enough — even if the chips used were much slower. Today, there is no DAY passing by that I don’t stumble on low-quality software in embedded devices. From our Comcast DVR, to our slow-booting DVD player, to the gazillion CRAPPY Asian mp3 players that companies have sent me for reviews.

Sorry, but even if the MARKET demands such sacrifices because that’s how things have evolved to become, me as a consumer I am not ready for it. You can call me a purist if you like, but I like my hardware to work in its 100% capacity. I am a bit soft regarding software bugs or slowness or high requirements in my desktop applications, but when it comes to embedded devices, I want them to be Perfect (with a capital P).

This is the admin speaking...
Eugenia wrote on April 9th, 2007 at 8:54 AM PST:

This reminds me of the AEG laundry machine that my aunt bought in Germany in 1969. It worked perfectly until 1998. Today’s (home) laundry machines don’t last more than 5 years without major repairs in their belt. My mother bought her first laundry machine in 1996, and she bought two more since then because they were crappy and got broken all too easily.

Same for our fridge! Our old fridge in my Greek home was alive and well from 1973 to 1997. My father bought that fridge as a present to my mother for my birth. Since 1997, my mother had TWO more fridges, because they were going bad all too easily.

They don’t make hardware as they used to. Sure, this particular comment has nothing to do with software in embedded devices, but my point is, that the OVERALL quality of embedded devices/hardware in the past 10 years has dropped to the floor. And this encompass software quality too, not just construction quality. It seems that in order to bring down costs any way they could, they have significantly decreased quality.

Dave wrote on April 9th, 2007 at 10:48 AM PST:

I’m completely in your camp. I would prefer stuff work well or not at all. Devices like the Palm Pilot and the iPod were good examples. Eventually the Pilot got overrun by devices with better specs on the box, and market pressure made later Palms (ie. Treo phones) as sucky as everything else.

In my experience (firmware engineer, security specialist, C/C++/perl/python programmer) it’s faster to develop quality software in a high level language, and more and more of the user experience is software based these days. Electronics are just a container for software anymore, so whatever is necessary to further software quality is good in my book.

You said in the post that you don’t want to pay for electronics (RAM, CPU) and in your comment that you want bug-free and fast devices. If you want both of those, just buy something that came out two years ago, because you can only have two of [quality, cost, schedule]. Actually, buy something from a company that went out of business two years ago because the competition put better specs on the box and beat them in the market. Believe me, I agree with you, but it’s a sad (but true) state of affairs that customers put quality at the bottom of the list for deciding which product to buy.

Richard wrote on April 10th, 2007 at 5:01 AM PST:

I totally agree, I would even love to pay more for a device that is SIMPLER, yet more reliable and durable. And btw. I hate firmware updates. Devices should not be updated, they should work.

mario wrote on April 10th, 2007 at 1:36 AM PST:

I agree with eugenia, it’s all about business ,the designers appear to have no control over some parameters like working temperature, even more, call me a paranoic, but I think they make the ICs run hot just because that makes them live a short live and it is on purpose, not random.

Sardaukar wrote on April 11th, 2007 at 3:52 AM PST:

Richard: Firmware updates are a VERY good thing – I updated my mp3 player last week to support FLAC and OGG. Added functionality – rules. :D

This is the admin speaking...
Eugenia wrote on April 11th, 2007 at 6:12 AM PST:

Well, the problem is not the firmware updates, but the fact that new updates are also not as well debugged. Comcast is updating our DVR over the air, automatically. They indeed fixed some bugs in their latest update, only to introduce 4 new more.

Same for one of my PMPs. I updated it so I can get OGG support, and guess what, they broke WMA support plus a new visual artifact bug.

So firmwares are not the panakea or the problem. It’s the quality of the software in general.

KCorax wrote on April 12th, 2007 at 1:37 AM PST:

I think the issue of performance in managed memory languages is greatly exagerated. It’s not like .net/mono/java are orders of magnitude slower than c/c++ like say php/python/perl are. While they certainly lead to a much greater memory footprint the speed of execution is usually only 2-3 times slower.

Most commonly it’s the fact that they encourage developers to use structures that are terribly inefficient but easy to code, like xml serialization, for which noone ever understood what it’s good for. Even then you can usually get by that by replacing busy components with native code etc. Especially for the sansa device I cannot imagine that they did it 100% managed.

Anyway crappy software can be made on any platform. Relieving the developers of problems is certainly a step to the right direction, and granted that their design & dev process is right, there is no reason why such a product won’t rock. Even with a perceived waste of resources.

thebluesgnr wrote on April 13th, 2007 at 11:02 AM PST:

Once upon a time people said the same thing about C.

Comments are closed as this blog post is now archived.

Lines, paragraphs break automatically. HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

The URI to TrackBack this blog entry is this. And here is the RSS 2.0 for comments on this post.