Hacker News new | past | comments | ask | show | jobs | submit login
Interview with Ken Thompson (2011) (drdobbs.com)
91 points by _culy on Aug 28, 2017 | hide | past | favorite | 28 comments



Who here thinks they should have made "an object-oriented C" instead? I was under the impression that a big part of C's success (as a lingua france / lowest common denominator) is its minimalism. It forces only a few concepts on its users.


> "an object-oriented C" ... minimalism

That's Objective-C in a nutshell. Or was, anyway. The most minimal way to have useful OO on C.

Of course, you could make it even simpler if you drop the "must be a superset of C"-requirement.


Maybe the most minimal, but not the most efficient, and C's minimalism is only useful because it lets you be as efficient as the hardware will be. Without that goal, the Lisps are more minimal than both C and Objective-C.


Few people can make sense out of Lisp and fewer actually like it.


I have a fondness for ObjC because I was a Smalltalk programmer once upon a time (it's also probably why I like Ruby), but you could imagine a simpler object system on par with Object Pascal. I'm actually kind of surprised that nobody tried that but maybe with ObjC and C++ fighting it out people assumed yet another object-oriented dialect would go nowhere.


Thus Swift.


Cough. Well, except the the "simple" part...


Yeah not saying Swift is simple. But its goal was originally (and may still be) to be Objective-C without the C.


Nope. That was always an empty marketing slogan.

Objective-C is Smalltalk added to C. Objective-C without the C is Smalltalk. Which is, coincidentally, a very simple language.


A big part of C's success was being a requirement for UNIX systems programming, with 80's startups (Sun, SGI,...) adopting an almost free of charge OS, with source code available, for their workstations.


Not sure if it was used in Stuxnet, but an OOC compiler already exists [1] :)

[1] https://ooc-lang.org/


That last answer reminds me of my researcher colleagues :D. Are most them like that?


"The language grew up with one of the rewritings of the system and, as such, it became perfect for writing systems. ... It became the perfect language for what it was designed to do."

Really? Perfect? Why then are there entire books filled with "C gotchas" or "C traps and pitfalls"?

The language is an inconsistent, inelegant, error-prone mess that has left us with decades of serious bugs and security vulnerabilities. Yet Thompson describes it as "perfect". Sounds like he's been letting all the prizes he got get to his head.

Sure. The language was very influential, and much of the software we use every day was and still is written in it. That doesn't make it perfect, just popular -- often for legacy reasons, not because it's "perfect for writing systems".


I didn't read "perfect" in the same way. He just seems to be saying that it was developed in parallel with the OS, and so was tweaked to fit the needs of OS development at the time.

I read it more as "purpose built", and therefore, better than anything else that was available to him.


To me, C is honestly one of the most elegant languages there is, right next to Scheme.


I've heard similar opinions before, and would love to see this expanded on... in particular how it can be elegant compared to Scheme, which is by far the most elegant language I know.


Its simplicity is what I'm attracted to, and I think that's why I think Scheme is elegant too. It has less syntax than comparable languages, fewer keywords, a smaller standard library etc.

I'm not sure if it makes the case for elegance or if I'm misunderstanding it.


Do you also consider simple having about 200 cases of UB on the standard?


What is wrong with UB? Just take it to mean "not allowed".


Do you know them all?


It can be perfect for something without being "perfect period".


C was certainly a major step forward at the time, but he does seem oblivious to its flaws (at least in this interview). I was also disappointed to see how he casually trashed C++ at the same time. Not very diplomatic.


If anything, it's also ironic, because a lot of downsides of C++ stem from its requirement to inherit C downsides.


No it wasn't, because we already had Lisp and system programming languages like ESPOL, NEWP, PL/I, PL/M, PL/8,.... before C got released outside AT&T.


Which tells you what?


That C was certainly a major step backwards at the time, only adopted thanks to AT&T being forbiden to sell UNIX, thus deciding to offer the source code for a nominal fee to anyone that wanted to get a license to the source code.

Or to use a more modern example, UNIX was the browser and C was JavaScript.


I never coded in the languages from your earlier post; I'd never have wanted to either. C was and is elegant and beautiful. It isn't so popular because of a AT&T. Look at Microsoft's power in the business world. Even with all their "practices", .Net still hasn't been beaten by Java in terms of popularity and widespread use. .Net is good, not saying it isn't, just so that's clear.


Yeah, more than 200 elegant and beautiful documented cases of UB on ANSI C11 standard.




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

Search: