Hacker News new | ask | show | jobs
by Existenceblinks 2415 days ago
Maybe it's power of simplicity. When I coded 8086 assembly program, it's less likely to have bugs. There are just a few registers to use, most things are next to bare metal. Like what could go wrong moving hex around if we know exactly what we are doing.
1 comments

Yeah...the stuff we do in most industries today is so complex that if we used Assembly or even C, nothing would ever get done. The problem is the abstractions we need (OS, high level langs) create many additional layers of complexity that can fail and bite you.

I might have a rudimentary understanding of electronics and digital design and could write Assembly and kind of understand the full toolchain from A to Z, but on a modern computer (hardware, BIOS, OS, programming language...etc) there is no hope.

Everything is a trade-off. If I had to write code for a probe today I would opt for the absolute simplest hardware and software so there is a lot less room for error.

Yeah, I agree with you.

A lot of modern complexity is kind of incidental. We need to deal with GUIs, protocols, out of order execution, parallel and concurrent programming. The core of things didn't change that much, you store a bunch of things in memory, you sort then, you search things, you move them to disk storage, you retrieve them and so on.

If you wanted to run a factory floor and the machines in it just by using either assembly or C and our knowledge of a bunch of algorithms, it would probably work, but without all the advantages we leverage by modern technologies. Instead of "Select ProdOrders where....", considering we once have done a bunch of "create table" and "create index", we would have to manually define the disk structures layouts by hand, hand write sorting routines for each one. It would take armies of programmers, but a single iphone would suffice for all IT needs of a large multinational bank. The user interface would be terrible, you'll need speacialized operators for simply entering data on the system, or extracting results.

But in a space probe, you don't need to care about user interfaces, ever-changing business requirements, nice integration points, so you could probably get away with a very simple and primitive time-sharing os, in a single-threaded CPU, by using only C and a barebones standard library, dropping from time to time to inline assembly.

Actually it is an interesting imagination exercise. It makes me think that even if a catastrophic event happened like an EMP, we would probably be using computers again to help rebuild the world in less than 20 years. As long as we had people with the knowledge to deal with the basics.

Does NASA never change their requirements mid-project? I've been dreaming of such a job ever since I started working.
IMHO, a much more reasonable approach would be to have a minimalistic bootloader running on a separate hardware with some kind of redundancy + a more or less regular system for the rest of the logic. If the cost of error is simply deploying a patch using a dedicated high-reliability channel, you don't need to suffer and restrict yourself to stone-age technology.