Skip to content

Comment on The demise of the low level Programmer.

Comments

I have conflicting feelings about this. The low-level programmer is disappearing because the abstraction layers are getting better, which means the complexity we deal in is "how do I get a 30 machine cluster to map-reduce efficiently" instead of "how do I optimize these instructions so I don't blow out my L1 cache".

But...all abstractions in computing are leaky, and not having an understanding of lower levels of abstraction will come back to bite you.

The simplest example is floating point: how many pennies have been mis-appropriated because a developer used a float instead of a fixed-decimal number. If you understand how the underlying floating point abstraction leaks, you would never use an IEEE float for anything requiring exact decimal values; if not, you feel comfortable using the native type that has the ability to represent decimal values. You don't need to actually know how the float is represented to achieve that.

The real trick is understand how much of each layer of abstraction you need to know. A generalist needs to know enough about computer architecure, the network stack, security, etc., that he knows when he either needs to consult an expert (Google often counts ;) or when he is ok to rely on that abstraction, but if you try to learn too much, well, you aren't a generalist anymore.

Great generalists are, by definition, great at figuring that out. As a result, they are incredibly valuable because they are really good at just getting stuff done.

As an aside, this is one of IBM's secret tricks - hardware accelerated money datatype http://www.ibm.com/developerworks/data/library/techarticle/d... . No other major vendor has this.

It's not exactly secret. Most "big iron" architectures had packed decimal support in the past, and IBM pushed to get decimal floating-point added to IEEE 754-2008.

Well obviously, since they have a web page about it :-) But "secret" in the sense that not all devs seem to be aware of it yet, if anyone is still using classical floats (or even ints) for handling money.

Packed decimal predates the idea of "big iron" even. The original driver was control applications: doing user output on machines with tiny memories that couldn't spare the conversion logic to produce a decimal value. Check the BCD instructions that still exist (albeit in very slow microcoded form, and I think they still work only on the 8 bit registers) on your 8 core Sandy Bridge monster.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.