Placeholder Image

字幕列表 影片播放

  • There's a book just over your shoulder that's carefully been placed there, can you pick the book up and tell me about it? Right! Great book, you should buy the newer version of this.

  • Brief commercial announcement yeah sure I think I mentioned at some point in our

  • conversation the fact that the people working on MULTICS, well MULTICS was sort of the

  • second version of timesharing that was done at MIT with collaboration of Bell

  • Labs and General Electric very big

  • system for providing in effect a computing utility for programmers.

  • Multex was actually being written in high-level languages ah they started with PL1

  • which was not a good choice and then they moved to BCPL

  • language which developed in fact by Martin Richards of Cambridge.

  • The people doing that who are at Bell Labs in particular Ken Thompson and Dennis

  • Ritchie had gotten used to the idea that you could write really interesting

  • operating system kind of software and tools that supported it in high-level

  • languages so you weren't writing assembly language and so when they

  • started working on UNIX this very small stripped-down version that was done at

  • Bell Labs they were at the same time exploring the use of high-level

  • languages and there were a variety of these there was a language called B

  • which was the first attempt it was done by Ken Thompson a very simple language

  • and I suppose you could say it was sort of like a stripped down version of BCPL

  • A weak naming convention there and so you could do interesting things with

  • B but it wasn't quite powerful enough and in particular it was an interpreter

  • not a compiler and that meant it didn't generate machine code for the particular

  • machine was running on it was just a program that

  • interpreted what it was trying to say so it meant it ran relatively slowly.

  • The other thing is that the language did not support the architecture of newer

  • machines that were showing up in particular that PDP 11 newer machines

  • instead of having everything in the machine be a single size of in effect integer

  • let's say 16 bits or something like that they had different sizes that were, the

  • machine would efficiently and naturally manipulate 8bit, 16bit maybe thirty

  • two-bit & the language B didn't reflect that and so Dennis Ritchie undertook

  • to design what amounted to a version of B that was richer and had mechanisms

  • in the language to say this is an 8-bit quantity this is a 16 bit quantity

  • basically the char and int types that you see in the early versions of C and so he

  • wrote

  • a compiler for that and then with the compiler in hand they started to rewrite

  • the operating system itself in C and this took a while but something in the

  • order of six months to get that working and at that point then you've got the

  • operating system of course all kinds of other critical core software written in

  • a high-level language rather than in assembly language and that's important

  • for all kinds of reasons one is means that it's just a lot easier for lots of

  • people to see what the code does you need so much expertise because it's a

  • high-level language and the other thing is that it's portable in the sense that

  • if somebody makes a C compiler for a different kind of machine different

  • architecture then you can recompile whatever your program is for that new

  • architecture in

  • that way you can move your program to a different machine of this always been

  • the advantage of high-level languages but now you could do it for the operating

  • system and that meant that UNIX, the operating system no longer was only PDP

  • 11 but could run on a variety of other machines as well

  • I think the concept of having a high-level language Iget right, you compile it down to hexes, machine code that tells the processors to do stuff. and if you have a different compiler for a different machine

  • it just changes what those Hexes are -right that's exactly right

  • so so it should be really simple to understand how you write an OS in a high level language, but is it a bit like, making a sharp tool and using that sharp tool to make a sharper tool?

  • Yeah, right, I think in fact, the complication is in building in writing of operating system and high-level

  • language in translating it into let's say multiple different architectures is

  • there's a lot of detail to get right there in there are some things which the

  • high-level language just doesn't support So you need a little tiny bit of assembly

  • language assist for any given operating system the one that's more like that the

  • conceptual problem that you were explaining well is how does the compiler

  • itself get started because of course the C compiler is written in C so there is the

  • how do you get it started and your idea of the sharper tool making yet a sharper

  • tool and so on

  • is metaphorically the right idea because what you do is you say I wrote some code

  • in C on paper let me mechanically translate that into something that will

  • process a bit more of C code and bootstrap myself up from that so it's a

  • bootstrapping process and I've never done it so take me with a grain of salt

  • on that but that's the basic idea so. - OK, so tell me about this book, how did this come about?

  • that's the first edition (is it autographed?) this one isn't actually no dear oh dear this however is

  • the 24th printing so. (I'll just point out that Prof Brailsford brought in a pen for the autograph there.) OK I will autograph it...

  • somewhere early on in this process of people building interesting languages I

  • got intrigued by the idea of how do you explain those languages to other people

  • and so I wrote tutorial documents I wrote a tutorial document on B so that

  • people could learn B because Ken Thompson and to a lesser degree Dennis didn't

  • write tremendous amount of documentation let's say it was a spare and there was

  • not much tutorial stuff so I wrote a tutorial document on B that was useful

  • when C came along then I wrote a tutorial document on C and at some point

  • I had already written I guess couple books at that point and it seemed like

  • the market, the market!? That there might be a market for a C book and so I

  • twisted Dennis Ritchies arm into writing the book with me and that is the

  • smartest thing I ever did in my whole life no ambiguity so we took my tutorial

  • document as kind of a piece of it, we took his reference manual which is a

  • excellent reference manual as a big piece of it took that verbatim and then

  • we filled in material in the middle to explain the various parts of the language at length, and we

  • published that, we wrote it in 1977 published at the beginning of 78 and of

  • course it was done with all of the document preparation tools that we had

  • been working on over the years and so it had

  • mathematical expressions in it using EQN it had tables of things like

  • operators using Mike Lesk's TBL program it

  • the first edition predates pic the picture drawing language the second

  • edition has pic pictures so on so is this incestuous or is this building on

  • what people have done I don't know but that's how it came about and I remember

  • talking to the editor this is published by Prentice Hall with Karl Karlstrom the

  • editor there and I remember discussion with him about how many copies do you

  • think this will sell no idea well maybe five thousand

  • done better than that which is just as well

  • there never an A because B was based on? There was a language Steve Johnson who was all part of this the

  • creator of Yacc, Steve Johnson spent a sabbatical at University of Waterloo in Ontario and

  • he came back with a link I don't somebody else had done that the language

  • they're called "A" but it was spelled "EH" - Bit of Canadian humor I guess...

There's a book just over your shoulder that's carefully been placed there, can you pick the book up and tell me about it? Right! Great book, you should buy the newer version of this.

字幕與單字

單字即點即查 點擊單字可以查詢單字解釋

A2 初級

"C "編程語言。Brian Kernighan - Computerphile ("C" Programming Language: Brian Kernighan - Computerphile)

  • 88 6
    Amy.Lin 發佈於 2021 年 01 月 14 日
影片單字