Hacker News new | past | comments | ask | show | jobs | submit login

That is an urban legend perpetrated by C fans rewriting history.

Extended Algol was available in 1961.

PL/I and PL/M variants are older than C.

Mesa was already being used at Xerox PARC when C was born.

There are quite a few other examples that anyone that bothers to read SIGPLAN papers and other archives can easily find out.




  > Extended Algol was available in 1961.
What extension was that? Burrough's ESPOL (the notable use of an Algol extension for system programming, on a processor designed to be an Algol target) had what we would now call inline assembly.

  > Mesa was already being used at Xerox PARC when C was born.
Close; C ~ 1972 (started 1969), Mesa ~ 1976 (started 1971). The Alto system software was mostly BCPL; Mesa arrived with the commercial D series. Mesa also targeted a virtual instruction set (i.e. like Java or p-code) designed specifically for it, run by an interpreter on the bare metal.


ALGOL68: The language Thompson, Ritchie, and Pike basically cloned when they made Go. Nothing went in there unless everyone agreed on it. Final was every feature they had wanted in a language. Most of which was already in ALGOL68 with key aspects in use by Burroughs since their 1961 designs. Had they just subseted or simplified ALGOL68, they'd have quite the head start and we'd be stuck with a language that's a lot better than C. I imagine the implementation would've been more suitable for OS development, too. ;)


Burroughs had Extended Algol and ESPOL, yes.

It still doesn't invalidate the fact that it had more memory safety features as C, one decade earlier.

Regarding Mesa that is like calling x86/x64 firmware an interpreter for Intel bytecode.

Most literature in those days used bytecode to refer to Assembly processed by CPU microcode.


The point was that those machines had the benefit of instruction sets co-designed with the language. (And Mesa had strong default type safety, but basically the same memory model as C, allowing pointer arithmetic, null pointers, and dangling pointers.)


Of course Mesa had pointer arithmetic, null and dagling pointers.

Any systems programming language has them.

However there is a difference between having them as an addition to strong type features and them being the only way to program in the language.

For example, using arrays and strings didn't require pointer arithmetic.

In C all unsafe features are in thr face of the programmer. There is no way to avoid them.

In Mesa and other similar languages, those unsafe are there, but programmers only need to use them in a few cases.

C was designed with PDP-11 instruction set in mind. For many years that the C machine model no longer maps to the hardware as many think it does.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: