---------------------------------------- | |
What Is C? | |
March 28th, 2020 | |
---------------------------------------- | |
What is C? | |
It's 1969, how are you programming? A lot of businesses are | |
using COBOL to process payroll and accounting data. A lot of | |
number crunchers are using FORTRAN for engineering compuations. | |
But a lot of folks are still programming in assembly language. | |
Especially if they are writing operating systems. This is | |
not meant to be an authoritative definition or history of C. | |
There are plenty of good sources for each. I just want to | |
give you a sense of the what their world must have been like. | |
On a computer like the PDP-7 had the equivalent of about 128k | |
of RAM and cost around 500,000 dollars in today's dollars. | |
Programmers were as likely to code in assembly language as they | |
were to run a high level language compiler. It was on the PDP-7 | |
that Unix was first developed by Thompson and Ritchie, in 1969. | |
It was much less capable than a mainframe that might have had | |
up to 4 megabytes of memory, but it was decidedly less | |
expensive and therefore accessible to small teams of users. | |
But there was a problem with the first version of Unix. When | |
it came time to port Unix to other systems like the more capable | |
PDP-11, it required a rewrite. When DEC came out with a new | |
computer, it didn't just make a slightly faster version of the | |
previous model. Instead, companies often came out with a whole | |
new architecture. Meaning the CPU and the instructions were | |
different from model to model. | |
Becuase the new processor had a different set of instructions, | |
assembly language programs had to be re-written. We no longer | |
have this problem. When Dell comes out with a new server, | |
it's the same architecture but slightly faster. A high level | |
language would allow the software to be ported to a new | |
architecture without costly re-writes to assembly language | |
routines. | |
Ritchie and Kernighan created C mostly to make porting Unix a | |
simpler process. The parts of Unix that require asembly | |
language are very small with the bulk of Unix written in C. | |
Even if you came up with a completely different instruction set | |
from anything that came before, it would be posible to write a | |
C compiler for that processor and port Unix to it. With only | |
some small bits here and there that specific to a computer | |
architecture and processor. | |
Maybe that's why C has been so successful. It was built to solve | |
a very real problem, in a world where computing resources were | |
expensive and limited. It wasn't designed by committee of as an | |
academic exercise. And the folks that did create it were | |
incredibly talented and intelligent individuals. | |
____________________________________________________________________________ | |
Gophered by Gophernicus/3.0.1 on Ubuntu/22.04 x86_64 |