Google
 

Aardvark Daily

New Zealand's longest-running online daily news and commentary publication, now in its 25th year. The opinion pieces presented here are not purported to be fact but reasonable effort is made to ensure accuracy.

Content copyright © 1995 - 2019 to Bruce Simpson (aka Aardvark), the logo was kindly created for Aardvark Daily by the folks at aardvark.co.uk



Please visit the sponsor!
Please visit the sponsor!

Time to break out the assembler?

14 January 2020

There was an interesting piece on SlashDot this morning in which it was suggested that as computers hit a brick wall performance-wise, we'll need to go back to more efficient programming.

Anyone who was programming back when microprocessors first came along will recall that all the "fast" code was written in assembly code and run as machine-code. Even today it's quite surprising just how fast and efficient this old code was, given that we were running those programs on 8-bit processors with less than 64MB of RAM and clock speeds measured in just a few MHz.

Believe it or not, despite the incredibly puny hardware, we had very practical and useful word processors, spreadsheets and databases that were fast and fun to use.

So how is it that today, in an age when clock speeds are three orders of magnitude faster, memory is 500 times more plentiful and data-busses are eight times wider, the core functionality of most programs is only a few times faster than in 1979?

It's the way we write software, of course.

A piece of software that was coded by hand and assembled into raw machine code had none of the overhead that slows today's modern highly virtualised programming code.

Instead of talking directly to the CPU, almost all modern applications must weave their way through multiple levels of abstraction and virtualisation to achieve their ends.

In the name of portability and compatibility, many of today's most popular languages are either interpreted or compiled via JIT systems which add additional overhead to all programs written in them.

Sure, modern compilers can be pretty damned smart and apply optimisations that hand-coders would never have the time or skills to perform -- but they also can be pretty dumb and the overheads associated with support libraries and OS interfaces can be very burdensome.

So if, as suggested by experts, we're only a few generations away from hitting some serious roadblocks to Moore's Law, as imposed by the laws of physics themselves, just how will we manage to write faster software if we don't start going back to basics and cut out all the dross that's slowly been added to our systems?

Also, what would it mean to productivity if we started leaning more heavily on bare-metal code rather than the highly virtualised stuff that makes it so much easier to turn a system spec into a commissioned project?

It should be remembered that whilst it's fine for small projects, assembler code can be a nightmare to write, debug and maintain once you start dealing with larger, more complex systems. In fact it was this very problem that spawned some of the first high(er) level languages (HLLs) such as C and BASIC. Using an HLL, development time could be slashed to a tiny fraction of that associated with using assembly code to create the same result.

Time is money and computers were getting faster every year so it was only natural that code-hauses were keen to shift to the more productive development environments and take advantage of newer hardware. "What's that? Our code is running too slowly? You need to upgrade your computers!" was the easy solution.

However, what happens when computers stop getting faster?

What happens when the laws of physics make it impossible to increase chip-density and clock-speeds?

Perhaps "the next big thing" will be AI systems that simply analyse code and work out ways to make it smaller and faster automatically -- maybe even by automatically rewriting large swathes of that code in ways that programmers might never be able to.

In fact, will programmers themselves become redundant, once we teach computers how to turn a system spec into a reliable, efficient, running application?

What an exciting world we live in and the future looks to be even moreso!

Please visit the sponsor!
Please visit the sponsor!

Have your say in the Aardvark Forums.

PERMALINK to this column


Rank This Aardvark Page

 

Change Font

Sci-Tech headlines

 


Features:

The EZ Battery Reconditioning scam

Beware The Alternative Energy Scammers

The Great "Run Your Car On Water" Scam

 

Recent Columns

This can not be right
Society has laws for good reason...

EV Battery trailers - so obvious eh?
Electric vehicles are the future (have I mentioned that before?)...

Soon is the winter of our..
Coronavirus is still a thing...

Why I can't compete with China
The other day I made a video that has created a bit of a stir...

The great teleworking fail
Teleworking has been possible for decades now...

Doom and gloom prevail
If your only source of news and information is the mainstream media you're probably very depressed right now...

Are you young-old or old-young?
How old do you have to be to qualify as "old" these days?...

Is this getting out of hand?
A week or two ago, Kiwis were wowed by a string of satellites that swept across the evening skies like a row of glistening pearls...

A powerful statement
Today I am going to share a video with you...

From bad to worse?
Last week I published a column in which I suggested that the outbreak of Coronavirus in China could have very far-reaching effects on the global economy...

They don't make them like this any more
Over the years I have had a lot of electronics gear...