Issue #47: Rust

The Double Denim Of Software Engineering

I am told that I am irresponsible. Why? Because I continue to use and maintain working software. I am told that my plan—to use my experience, along with the library of well-tested functions that I and my colleagues have built up over the decades—barely counts as a plan at all.

Ideas of what is “correct” in software development evolve more like trends in lapel width and shoulder pad size in men’s suits than like best practice (or “state of the art”) in an engineering discipline. Firstly there is the practical coveralls of machine language, and then the stylish but expensive higher-level compilers. Subsequently, people like Backus, Naur, Perlis and their friends say that no, you are not cool.

If you want to look great and feel great you need some procedural vogue in your wardrobe. And so it goes. Procedural programming is the blue jeans of computing fashion: robust workwear for a narrow category of occupations that soon finds itself sold to every office clerk and football dad in the land.

Dijkstra tries to introduce a more formal variant: programming’s equivalent of a Canadian tuxedo—by suggesting that not only might programmers want to create procedures but that those procedures might ought to be correct. It does not catch on, except in a loud and opinionated niche subculture that—just like the double denim wearers of thrash metal—everybody else assumes is probably a Satanist. And so it goes.

Fads come and go but the dependable old blue jeans of procedural programming never quite go out of style, simply by never quite being in style anyway.

Alan Kay turns up at the end of the 1970s like some New Romantic-looking alien with his Smalltalk, and people pair his look with their comfortable blue jeans. Thus Java is the Spandau Ballet of programming: New Romo enough to be identifiable but mainstream enough not to worry your parents.

James Martin shows people how to open their own fourth-generation fashion houses, but that seems like hard work so they just carry on buying blue jeans.

RAD, codeless, functional: each tries and fails to become the new fashion paradigm. This decade, the school having its tilt at programming’s invincible windmill is type supremacy. Type supremacy offers safety: write software the way we say and if the compiler likes it, it means it is not going to crash! What type supremacy actually delivers is safyness: write software the way we say and feel like it might not crash so much.

Leading the charge for full-on ripping up the rulebooks, discarding the “square” denim your parents wear, and embracing the safyness fashion as the new paradigm for reality is not so much the Rust community per se as their self-proclaimed paramilitary vanguard, the Rust Evangelism Strikeforce. The RESF, or “jerk rs”, a sadly all-too-real subculture, believe that computers will not be safe and computing will not be realised upon this world of mortal humans until all of existing software is written in Rust.

While others are saying that you should (almost) never rewrite your software, the RESF would like you to rewrite your software and everyone else’s. You wrote your web application in Rust? I mean, that is okay… but if you are still running it on that lame old insecure, unsafe OpenBSD written in lame old C then you (and your customers) only have yourself to blame.

The RESF ignore that the rest of society is perfectly comfortable in blue jeans and do not want to give them up—and gets a lot out of its blue jeans. Giving folks new implementation tools is a good way to get them to get their implementations wrong, when what they need to do is to understand a certain category of unsafe behaviours and ensure those behaviours are not realised. A plethora of tools can help us with that: type checkers yes, but also provers, testers, static analysers, symbolic executors, safe libraries, and more. For every Rust rewrite that is still in progress, there are a hundred JavaScript programmers extending their existing software using TypeScript. A hundred C programmers adding scan-build and KLEE to their tooling. A hundred C++ programmers adopting concepts.

They still put their blue jeans on in the morning, but now they have both belt and braces to keep them up.

Cover photo by Ricardo Gomez Angel on Unsplash.

Donate using Liberapay

Graham is a senior Research Software Engineer at Oxford University. He got hooked on making quality software in front of a NeXT TurboStation Color, and still has a lot to learn.