Brian Kernighan on possible historical alternatives to C

Dan Cross asked, if not C, then what language might have been used… full question reads in part

…this got me thinking, what would possible alternatives have been? In the context of the very late 1960s heading into the early 70s, and given the constraints of the PDP-7 and early PDP-11s, what languages would one consider for implementing a system like early Unix?

Brian Kernighan answered partly as follows:

…an interesting question. I don’t have a good answer, but there are possibilities.

Typeless languages like BCPL were in the air; Bliss, from CMU in 1970, was a significant example, used mostly on the PDP-10 but it could run on a PDP-11. It was definitely a contender for doing systems work.

… MAD… EPL… Fortran… Pascal… Jovial… Algol/W… Mesa…

There’s a lot of history, and I have no idea how to get on top of it all. But still interesting to look at and speculate about.


Image from a QL thread " UNIX - a history and a memoir book"

via DragonFly Digest.

2 Likes

I don’t know the subtleties, but I know AmigaOS was BCPL and Macintosh was prototyped in Pascal.

So, I would guess BCPL and maybe Pascal would be doable (the original Mac OS was single tasking single user, while AmigaOS at least had pre-emptive multitasking from the start).

1 Like

The hardware has great impact on software, and if we are doing a alternative to C
what hardware is after the pdp-7?
Multi-tasking was hot item at the time, and the one of the things that got funding for.
Only by chance did the PDP-11 have a large MMU that let one multi-task. Only did
C succeed because it could 1) handle byte data 2) could generate compact machine code
3) self compile.
DG Nova I think was the only other option for hardware.and the extended algol it had,
Other people may know about other little known hardware and software options.
I have nice 18 bit cpu design, that seems possible late 1973 with standard TTL.
(mostly for 4K DRAM and PROM’s to be around), so constructing alternative hardware
could have been a option.

1 Like

BLISS was certainly sufficient for arcade games. It was used for Atari’s Paperboy, 720°, Super Sprint, Championship Sprint and
APB : All Points Bulletin. DEC sold them on the merits of the T-11 chip which they then based their “System 2” arcade machine architecture around.

Atari had already been using the 68000 with similar supporting hardware. I heard they used it because it was cheaper and that the programmers and hardware people were not happy about it.

2 Likes

BLISS was very weakly typed. Did it have the equivalent of structs? Apparently the addition of structs to C made a big difference in coding UNIX.

When I hit university in '81 UNIX was not yet very popular, and most OSs were coded in proprietary languages behind closed doors. OS code was considered very confidential. BCPL for Xerox, BLISS for DEC, Assembler and PL1 for IBM. Pascal for PERQ. It was all over the place but only a few developers were actually involved in OS work.

1 Like

I don’t know. I didn’t look at the source code much beyond how it might help extracting game state from an emulation. Without any reference material it was hard to make any deep sense out of it.

As far as I can tell from the manuals, yes … and no. It did not have the syntactic sugar that C has, but it did have the functionality of accessing a contiguous block of memory at certain offsets. And memory was measured in units of “fullwords”, which could be 16, 32, or 36 bits. Also apparently Bliss had extensive macro support, so you could define your own syntax for accessing the “fields” (offset, size pairs).

Note: the “Structures” in 1.4.8 is false hope, it means a block of memory.

Thanks, that’s interesting. DEC wrote some serious operating systems and a lot of serious support applications in BLISS. I always found it a little surprising that BLISS was virtually unused outside of DEC.

Well I think of the book about it , and how ‘goto’ were eliminated with a million new ways to exit a block, rather than programing with it.
‘The design of an optimizing compiler’