YouSaid · the spoken record

Brian Kernighan

lines on the record
121
first
2020-07-18
most recent
2020-07-18
sittings or episodes
1
sources
podcast

Every line below is reproduced as it was said and linked to the record it came from. Nothing here is summarised or generated. Directory · Search · Corrections

  1. Think it's hard. It's been a long time since I wrote assembly language. It is absolutely true that an assembly language, if you make a mistake, nobody tells you there are no training wheels whatsoever. And so stuff doesn't work. Now what?

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  2. Yeah, PDP7 assembler that can create it. These things were assembly language until probably the call it 1973 or 74, something like that.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  3. Well, let me correct one thing. I had nothing to do with it. So I did not write it. I have never written operating system code. And so I don't know now an operating system is simply code. And this first one wasn't very big, but it's something that lets you run processes of some lets you execute some kind of code that has been written that lets you store information for periods of time so that it doesn't go away when you turn the power off or reboot or something like that. And there's a kind of a core set of tools that are technically not part of an operating system, but you probably need them, in this case, Ken wrote an assembler for the PDP-7 that worked, needed a text editor so that he could actually create text. You had the file system stuff that he had been working on, and then the rest of it was just a way to load things executable code from the file system into the memory, give it control, and then recover control when it was finished or in some other way quit.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  4. It was expensive, it was enough that you and I probably wouldn't be able to buy one, but a modest group of people could get together. But in any case, it came out, if I recall, in 1964. So by 1969, it was getting a little obsolete. And that's why it was little used.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  5. Yeah, it's a piece of part where it was one of early machines made by Digital Equipment Corporation DEC, and it was a mini computer so-called it had, I would have to look up the numbers exactly, but it had a very small amount of memory, maybe sixteen K, 16-bit words or something like that, relatively slow, probably not super expensive, maybe, again, making this up, I'd have to look it up $100,000 or something like that.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  6. With an acquired taste for really, really nice computing environments, but no computing environment. And so they started thinking about what could you do if you were going to design a new operating system that would provide the same kind of comfortable computing And so they did a lot of paper design stuff. And at the same time, Ken Thompson found what is characterized as a little used PDP-7, where he started to do experiments with file systems, just how do you store information on a computer in an efficient way. And then this famous story that his wife went away to California for three weeks taking their one-year-old son and three weeks and he sat down and wrote an operating system, which ultimately became Munich. So software productivity was good in those days

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  7. So, Maltics, in spite of having an enormous number of really good ideas, lots of good people working on it fundamentally didn't live up, at least in the short run. And I think ultimately really ever, to its goal of being this information utility. It was too expensive and certainly what was promised was delivered much too late. And so in roughly the beginning of 1969, Bell Labs pulled out of the project. The project at that point had included MIT, Bell Labs, and General Electric. General Electric made computers. So General Electric was the hardware operation. So Bell Labs, realizing this wasn't going anywhere on a timescale they cared about, pulled out of the project. And this left several people

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  8. So, computing was at that point fairly young. And so people were discovering that you could do lots of things with computers.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  9. Oh, I think there was very definitely something special. I mentioned the number of people, so very large number of people, very highly skilled, and working in an environment where there was always something interesting to work on because the goal of Bell Abs, which was a small part of AT&T, which provided basically the country's phone service, the goal of AT&T was to provide service for everybody. And the goal of Bell Labs was to try and make that service keep getting better, so improving service. And that meant doing research on a lot of different things, physical devices like the transistor or fiber optical cables or microwave systems. All of these things the labs worked on. And it was kind of just the beginning of real boom times in computing as well. Because when I was there, I went there first in 66.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  10. Rapidly growing interest in computing as people realized you could do things with computers that you might not have been able to do before. You could replace labs with computers that had worked on models of what was going on. So that was the essence of Bell Labs. And again, I wasn't a permanent employee there. That was another internship. I got lucky an internships.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  11. Yeah, so Bell Labs is physically scattered around at the time, scattered around New Jersey, the primary location was in a town called Murray Hill, or a location called Murray Hill. It was actually across the boundary between two small towns in New Jersey called New Providence in Berkeley Heights. Think of it as about 15, 20 miles straight west of New York City and therefore about an hour north of here in Princeton. And at that time it had make up a number 300 or 4,000 people there, many of whom had PhDs and mostly doing physical sciences, chemistry, physics, materials kinds of things, but very strong math.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  12. Oh, short answer, absolutely not. I have no clue. I'm not sure I had a dream. It was a dream job in the sense that I really enjoyed what I was doing. I was surrounded by really, really nice people. Cambridge is a very fine city to live in in the summer, less so in the winter when it snows, but in the summer it was a delightful time. And so I really enjoyed all of that stuff and I learned things. And I think the good fortune of being there for summer led me then to get a summer job at Bell Labs the following summer. And that was kind of useful for the future.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  13. I don't know where that was the dream. I wasn't part of it at that point. Remember, I was an intern for summer. But my sense is, given that it was over 50 years ago, yeah, they had that idea that it was an information utility, that it was something where if you had a computing task to do, you could just go and do it. Now, I'm betting that they didn't have the same view of computing for the masses, let's call it. The idea that your grandmother would be shopping on Amazon. I don't think that was part of it. But if your grandmother were a programmer, it might be very easy for her to go and use this kind of utility.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  14. It was meant to be much more than that. So, Multics was the multiplexed information and computing service, and it was meant to be a very large thing that would provide computing utility, something that where you could actually think of it as just a plug-in-the-wall service. Sort of like cloud computing today. Same idea, but 50 odd years earlier. And so what Multics offered was a richer operating system environment, a piece of hardware that was better designed for doing the kind of sharing of resources and presumably lots of other things.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  15. The answer is I don't have a clue. I think the basic idea was nothing more than who all wants to get something done. Suppose that things are very quiet in the middle of the night, then I get all the time that I want. Suppose that you and I are contending at high noon for something like that, then probably the simplest algorithm is around Robin, one that gives you a bit of time, gives me a bit of time. And then we could adapt to that, like, what are you trying to do? Are you text editing? Or are you compiling or something that we might adjust the scheduler according to things like that?

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  16. Each word was 36 bits. So call it So by today's standards, that's down in the noise. time that was a lot of memory and memory was expensive so CTSS was just a wonderful environment to work on it was done by the people at MIT led by Fernando Corbetto Corby who died just earlier this year and a bunch of other folks and then so I spent the summer of 66 working on that had a great time met a lot of really nice people and indirectly knew of people at Bell Labs who were also working on a follow-on to CTSS that was called Multics so Multics was meant to be the system that would do everything that CTSS did but do it better for a larger population all the usual stuff

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  17. Pretty much that was the idea. Yes, you had if it were well done and if it were fast enough and other people weren't doing too much, you did have the illusion that you had the whole machine to yourself and it was very much better than the punch card model. And so CTSS, the compatible time-sharing system was, I think, arguably the first of these. It was done, I guess, technically in 64 or something like that. It ran on an IBM 7094, slightly modified to have twice as much memory as the norm. It had two banks of 32K words instead of one.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  18. Time to do a particular job. So I might be editing a file, so I would be typing. And every time I hit a keystroke, the operating system would wake up and said, oh, he typed character. Let me remember that. Then I'd go back to doing something else. So it would be going around and around a group of people who were trying to get something done, giving each a small slice of time and giving them each the illusion that they pretty much had the whole machine to themselves and hence time sharing, that is sharing the computing time resource of the computer among a number of people who are doing it.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  19. Yeah. If we go back into let's call it the 1950s and early 1960s, most computing was done on very big computers, physically big, although not terribly powerful by today's standards that were maintained in very large rooms and you used things like punch cards to write your programs on, talk to them. So you would take a deck of cards, write your program on it, send it over a counter, hand it to an operator, and some while later back would come something that said, oh, you made a mistake. And then you'd recycle. And so it's very, very slow. So the idea of time sharing was that you take basically that same computer but connect to it with something that looked like an electric typewriter that could be a long distance away. It could be close. But fundamentally what the operating system did was to give each person who was connected to it and wanting to do something a small slice of

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  20. So CTSS looked like kind of like a standard time sharing system, certainly at the time it was the only time sharing if not.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  21. Ha, if I can remember that far back, it was some while ago. So I think the gist of it is that at Bell Labs in 1969, there were a group of people who had just finished working on the Multics project, which was... Itself a follow on to CTSS. So we can go back sort of an infinite regress in time, but the CTSS was a very, very, very nice time sharing system. It was very nice to use. I actually used it that summarize spent in Cambridge in 1966.

    2020-07-18 · Lex Fridman Podcast · #109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming · IDENTIFIED FROM THE TRANSCRIPT · source