Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

Practical language manifesto

Name: Tiberius 2017-12-23 18:11

It has come to my attention that the Rust programming language will never be suitable for practical systems development. Theo de Raadt offers as evidence the very convincing arguments that it is used in web-facing application stacks; that command line tools written in it are not certifiably POSIX compliant; and that the compiler can build itself only on a minority of microarchitectures because it consumes more memory than is available in a 32-bit address space. While the first and second failures can be remedied, and thus eventually forgiven, the third is a mortal sin that instantly consigns Rust to the void along with all who dare speak well of it, however conventionally they might style their hair.

That is not to say the software industry is a perfect, finished world with no room for innovation in language design. However, those of us who hope to escape Rust's grisly fate must brand our own tender flesh with the inviolable laws of language implementation:

  1. A language must never be used in production if its compiler is not self-hosting.
  2. A compiler is not genuinely self-hosting unless it is portably self-hosting.
  3. A program does not qualify as portable if it cannot be made to run on a PDP-11.

Perhaps to younger ears this sounds extreme. Certainly, the venerable PDP-11 series is no longer in demand to the extent it once was, and production has reportedly declined. On the other hand, that makes it all the easier to procure a cabinet for testing purposes. Those of us who have spent a lifetime in the industry, and not simply arrived hat in hand for the latest passing fad, know well that these machines are indestructible, and perhaps remember, fondly, Digital's efficient means of installation via catapult. An aspiring language designer in search of a device to build on need only locate its current owners and wait for them to die, secure in the knowledge that someday, someone else, in turn, will do the same.

More importantly, architectural characteristics of the PDP-11 are represenative of the typical execution environment still dominant today. Despite the wide availability of phones and laptops with 64-bit buses, multicore CPUs, and many gibibytes of storage space, the overwhelming majority of computation occurs on 16-bit embedded MCUs, some of which are critical components in those very same multicore devices. Many have less RAM and storage space, and slower clock speeds, than the machines on which Unix was birthed.

I propose a path forward for designing modern languages that run on such hardware. In the coming months I will explore such features as scoped GOTO, module-level (not declaration-level) generics, first-class continuations (in case we really need them) and static allocation of procedure activation records. I submit to the reader that a compiler which cannot build itself on my toaster (I use this word literally) is hardly much of a compiler at all.

The world around us is replete with the capacity for computation. We need only find the courage to exploit it.

— Tiberius Linguifex XLIV

Name: Anonymous 2017-12-23 20:14

Did my post get deleted? Why?

Name: Anonymous 2017-12-24 4:54

I have a bigger problem with the idiots designing languages for particular bit sizes. Anyone who assumes numbers must be binary should be shot too.

Name: Anonymous 2017-12-24 5:05

>>3
you can check my binary dubs

Don't change these.
Name: Email:
Entire Thread Thread List