Hacker News new | past | comments | ask | show | jobs | submit login
“A damn stupid thing to do”–the origins of C (arstechnica.com)
82 points by etrevino on Dec 12, 2020 | hide | past | favorite | 20 comments



The title is total clickbait. That quote has nothing to do with C.


Well, considering CPL is the origin of C, and that developing CPL was indeed « a damn stupid thing to do », it is fair to say the title has something to do with C. Don’t get me wrong, it is clickbait anyway.


How much better or popular would C be if it never had some of its most egregious flaws such as pointer/array decay, unsafe string functions, signed char, switch fallthrough, short/long/int, etc.?


I never tire of recommending Evan Buswell's Undefined Intimacy With the Machine[0]. His argument is that it is exactly that undefined behavior and macroassembler nature which allowed C to be be semi-portable, while still allowing for code bumming on very constrained systems.

Without all that, C would be, well, Pascal. Which was quite popular for its time, but wasn't used to implement Unix, and didn't become the preferred post-ASM way to write software for microcomputers.

[0]: http://thoughtmesh.net/publish/367.php


It was used in Lisa and Mac OS, and after MPW introduction, the focus was a mix of Object Pascal and C++, not C.

UNIX was written in Assembly, C only came later, as the article clearly states.

8 bits were dominated by Assembly and Basic, in 16 bits we kept using Assembly and a mix of languages, where C was one option among many others.


That looked somewhat interesting, but man, my eyes just totally rebelled at the light gray font on a slightly lighter gray background. Especially on a weekend, after too many hours of screen time already this week.

Why do people do this? Do they not want people to read their stuff?

That kind of thing is fine for a large heading in an Apple ad, but is actively user-hostile for long-form text. Note that Apple itself uses proper text contrast for its long-form documents.


I also find web pages like this unreadable. I'd recommend using a browser extension, such as "Dark Reader", to solve this problem. It even lets you adjust contrast/brightness on a per-site basis. It's available for Firefox, Chrome, Edge and Safari. https://darkreader.org


I agree with that, there's a printable version with better contrast but then the margins are too wide for my taste:

http://thoughtmesh.net/publish/printable.php?id=367

I just put this sort of site through reader mode but it shouldn't be a requirement.


Pascal is of almost exactly the same vintage, within a year or two, has all the safety features you could want, and yet never really achieved widespread adoption other than as a language for teaching freshman programming.

The Pascal dialects that did gain some popularity, such as Borland's Turbo Pascal, generally (I'm tempted to say "always") had non-standard ways to do "unsafe" things. Turbo Pascal, in particular, let you put raw asm right in the middle of your code.

"Safe" languages have been invented many times, but programmers always seem to gravitate to powerful, if "dangerous", languages like C and (now) JavaScript.

There's probably a lesson for language designers here.


> There's probably a lesson for language designers here.

When I was learning the code back then the problem with safe languages was you couldn't get outside the sandbox. And for anything practical you needed to. There either weren't API's for things you wanted. Or the API's that existed were insufficient. I remember in the early 80's someone showing me some code for high end medical product. It was written in Pascal and C. With shim functions to dick with the stack so you could call C functions from Pascal. Couple of years later they rewrote everything in C++.

Notable I think C# and Rust both have no seat belt modes.


They were standard in ISO Extended Pascal, the standard that mostly ignored because Modula-2, Turbo Pascal and Apple's Object Pascal.

Cowboy programming tends to attract certain kinds of developers, but not all.


I'm not sure that using dismissive pejoratives ("cowboy programmers") is going to shed any useful light on the issue, especially not when the "cowboy" code represents the overwhelming majority of the commercially successful code that has been written in the last 50 years.


A network effect caused by UNIX having been made available as free beer OS.

When I write C, I write because I am forced to do so due to network effects, and qualitiy is certaintly not something that is part of C's features.

And yes, cowboy programming fits the hacker culture that sprung off UNIX, the PHP and JavaScript of the 70's.

So apply the same quality considerations to C, that you would measure PHP and JavaScript.

Hey, apparently there has been tons of quality software written in PHP and JavaScript as well.


> Hey, apparently there has been tons of quality software written in PHP and JavaScript as well.

"Quality software" is a nebulous term.

Make it "valuable software", or "software that people will actually pay you money to write".

Apple (market cap: about $2 trillion) is Objective-C (slowly transitioning to Swift). Facebook (market cap: about $800 billion) was all PHP for a long time.

The "network effects" you mention do not exist with server-based software. You can run any language on the server you want, as long as it spits out well-formed HTML to the client.

In fact, these languages are popular because they are terse and powerful. And yes, like all powerful tools, they can kill or maim you in a hurry if you don't use care.


Not much, IMHO (as someone who enjoys writing C). It would still be essentially the same language, and the popularity of other languages -- whether they be C++, rust, python, Java, haskell or whatever -- come from introducing more interesting concepts than that.


It might be better, certainly, but I can’t imagine it would be more popular. Languages ride to popularity on the backs of platforms, either commercial or educational. It has very little to do with their features.


It is true that in almost every case, the reason for inventing a new language did not in fact justify anything like the amount of effort involved. Languages get created anyway, for insufficient reasons, and once in a blue moon a miracle happens, and the language takes off.

Excellence is absolutely not obligatory to get a miracle, but failings do often help prevent one. The most interesting cases are not the miracles, which are each sui generis, but the near misses like Pascal, Ada, and Lisp.


This accomplishment, by an amateur, caught the attention of Lord Halsbury, managing director of the National Research and Development Corporation, who soon recruited Strachey to spearhead the government’s efforts to promote practical applications of the rapid developments in computer science taking place at British universities.

Is anything akin to this happening today? It seems to me we are currently resigned to the idea that only corporations can successfully play that role today. Am I missing something?



I was just reading this article yesterday very interesting article !!




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

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

Search: