…coded in an outdated assembler language…
Voyager 1 is an important vessel. It’s the fastest spacecraft we’ve got, traveling at around 11 miles per second. It’s also the farthest. Its twin, Voyager 2, is nearly 11 billion miles away from the Sun, pushing through the last layer of our host star’s influence on the space around our system. But Voyager 1 is over 13 billion miles away from the Sun, and has the incredible distinction of being the first human-made object to enter interstellar space.
Yet even from that great distance, the probe still sends messages back to Earth. That’s where the thrusters come in. For decades, a set of thrusters has served to set out tiny, split-second pulses to keep the craft’s antenna pointed toward us. Now those thrusters are getting old, and it’s taking more effort to make Voyager 1 move. The solution? See if the TCM thrusters—which on the one hand haven’t been worn out by constant use over the last few decades, but on the other hand haven’t even been turned on — could take on some of the legwork.
“The Voyager flight team dug up decades-old data
and examined the software that was coded in an outdated assembler language, to make sure we could safely test the thrusters,” Chris Jones, chief engineer at NASA’s Jet Propulsion Lab, said in a statement. It takes 19 hours and 35 minutes for a signal from Voyager 1 to bounce back to Earth, but after a day of waiting the scientists confirmed that the hardware had fired right up.
I feel dated. I started out in my career doing nothing BUT programming in assembler. Sure, most people have hear of COBOL, FORTRAN, PL/1 (if you are of my generation) and nowadays it is C, C++, C#, Java, Ruby on Rails, SQL (and thousands of others). However, they are abstractions above “the metal” – the actual bit sequences that are the actual instructions that a computer’s CPU actually operates on. Assembler is just one level above that. It turns out blazingly fast programs that take up very little room (had to be small – RAM was REALLY expense back then!). If you aren’t familiar with it, here’s a taste of what I used for a number of years (start at page 4-1) for a Honeywell Level 6 minicomputer (it WAS a cool device in its time – but I was working with a much earlier model that had to be rack mounted).
The tradeoff is, of course, time. Assembler is very time consuming and back then, not easy to debug but that latter part taught me a lot of tricks that I later used in 3GL and 4GL products later on. But fast it was! I’m betting it took them a long time to figure it out unless they got one of the original programmers.
Back to what caught my attention: coded in an outdated assembler language. Outdated? I do wonder if they grabbed a current programmer and said “learn this” or had to bring someone out of retirement?
(H/T: PopSci via Instapundit)