The latest weird obsolete piece of technology I’ve decided I enjoy is the Ada programming language, an older imperative language, developed at the request of the Department of Defense in the late 70s, and named after Augusta Ada King, Countess of Lovelace. The CS655 text Advanced Programming Language Design uses Ada-like syntax for its examples, so I invested a few minutes in reading some of the Ada Spec while working the first homework: its really a pretty cool language, especially the concurrency features that are actually integral to the language instead of half-baked in after the fact now that we’re rubbing up against the limits of single-thread CPU designs, and various compile-time and runtime self-checking features.
I’ve been exposed to an Ada-like language once before; VHDL, with which I’m fairly familiar, is derived from Ada’s syntax in the same way Verilog is derived from C. The advantages aren’t so obvious there; Verilog has a lot of the more idiomatic behavior cleaned out…and you can tear Verilog’s amazing array slicing features from my cold, dead hands.
I’m coming to appreciate that there are two distinct design philosophies in computing; incidental, haphazard, and/or organically grown designs which tend to become extremely quirky over time (ex: C, LaTeX, both of which I love dearly, largely for their quirks), which I will call “idiomatic designs” (the phrase is occasionally used elsewhere, not always for the same thing), and painstaking, careful “intentional designs” like Ada and that tend to be kind of unwieldy in real world applications. Unlike a lot of intentionally designed technologies, which tend to exhibit design-by-committee syndrome, the objection to Ada seems to be more because there was an attempt by the Department of Defense to mandate Ada for defense projects before it was fully mature, which bred considerable resentment, rather than any deficiencies in the language itself. I suspect Ada might actually make a comeback as a result of the elegant concurrency support, unless there is a miracle breakthrough in automatically parallelizing compilers in the near future. (I’d bet on the lack of usable generalized parallel programming models being the next big issue in computing.)
Probably more interesting than the dichotomy is the fact the organic approach is winning in most sectors. A lot. C and it’s various descendants are going strong; Ada is almost a dead language. UNIX is spreading; VMS is dying out.
In general, it seems like Idiomatic designs are idiomatic to suit themselves to what people actually use and enjoy using, even when they don’t objectively make sense.
Clearly I’m already learning useful things from CS655.
Side note: the best resource on C weirdness ever. It will hurt your head.