
The Development of the C Language (2003) - peter_d_sherman
http://www.bell-labs.com/usr/dmr/www/chist.html
======
peter_d_sherman
Excerpt:

"Thompson was faced with a hardware environment cramped and spartan even for
the time: the DEC PDP-7 on which he started in 1968 was a machine with 8K
18-bit words of memory and no software useful to him. While wanting to use a
higher-level language, he wrote the original Unix system in PDP-7 assembler.
At the start, he did not even program on the PDP-7 itself, but instead used a
set of macros for the GEMAP assembler on a GE-635 machine. A postprocessor
generated a paper tape readable by the PDP-7.

These tapes were carried from the GE machine to the PDP-7 for testing until a
primitive Unix kernel, an editor, an assembler, a simple shell (command
interpreter), and a few utilities (like the Unix rm, cat, cp commands) were
completed. After this point, the operating system was self-supporting:
programs could be written and tested without resort to paper tape, and
development continued on the PDP-7 itself.

 _Thompson 's PDP-7 assembler outdid even DEC's in simplicity_;

it evaluated expressions and emitted the corresponding bits. There were no
libraries, no loader or link editor: the entire source of a program was
presented to the assembler, and the output file—with a fixed name—that emerged
was directly executable. (This name, a.out, explains a bit of Unix etymology;
it is the output of the assembler. Even after the system gained a linker and a
means of specifying another name explicitly, it was retained as the default
executable result of a compilation.)"

~~~
pjmlp
As excerpt I prefer:

"Although the first edition of K&R described most of the rules that brought
C's type structure to its present form, many programs written in the older,
more relaxed style persisted, and so did compilers that tolerated it. To
encourage people to pay more attention to the official language rules, to
detect legal but suspicious constructions, and to help find interface
mismatches undetectable with simple mechanisms for separate compilation, Steve
Johnson adapted his pcc compiler to produce lint [Johnson 79b], which scanned
a set of files and remarked on dubious constructions."

Since 1979, fighting for good practices adoption in C.

------
ruffrey
> Thompson went a step further by inventing the ++ and -- operators, which
> increment or decrement; their prefix or postfix position determines whether
> the alteration occurs before or after noting the value of the operand.

This man has given programming so much.

------
danbolt
It's really interesting hearing about the language designs were looking at
floating-point hardware as an optional feature back then. These days I barely
think about its usage, and I love seeing my perspective challenged on what
comes "in the box".

~~~
FigBug
Floating point hardware was optional for a long time. 486 in 1989 was first
Windows PC CPU with floating point standard. Before that it was an add on co-
processor for the 386. New 386 models were coming out until 1992, so it took a
long time before you could count on floating point support being there.

There are still a lot of embedded microprocessors without floating point
support.

~~~
jandrese
Even the relatively expensive Motorola 68k chips didn't have built-in floating
point until the 68040 in 1990.

~~~
ci5er
I'd forgotten it was that early. The Sun box on my desk was a 68020 with a
68881. Everything having to do w/ FP, certainly on our DSPs (which is silly),
we had to implement a knock-off of IEEE 754 in software ourselves.

