字幕表 動画を再生する 英語字幕をプリント >> Sean: What's the newest language you use? >> BWK: I would say the newest language I use is Go, and that is sort of 10 years old at this point. Languages last longer than you think. Fortran, which dates from the late 50s, is still very much alive and still very much used by a lot of people, as is COBOL. Algol lives on in its derivatives; Basic lives on its derivatives. So all these languages never die, but then there are brand new languages that come along. I think that of languages that anybody might have heard of that I use today, yeah, Go would probably be the newest. I have experimented with other languages briefly, mostly to try and understand them just enough that I can say something in class. Rust is newer than C [Go] but not enormously so, so I've done that. Scala -- I don't even remember the dates but it's, call it contemporaneous with Go. I've done one program in that, one in Lua. I -- newer languages like Kotlin, no, I've never tried. Sorry, I'm a late follower, not an early adopter. >> Sean: Any functional stuff? I've seen your views on functional before but it'd be interesting to capture. >> BWK: Yeah. Functional languages are really really important, I think, because what they are - have proven to be - is a proving ground for ideas in programming. So a lot of the things that we take for granted in modern languages -- mainstream languages, mainstream compiled languages like, let's say, C++ or Java or Go, whatever. Many of the good ideas, the new ideas in those, came from functional languages. For example, recursion originally is a Lisp idea and it shows up everywhere. Functions as first-class citizens, pattern matching kinds of things -- all of these show up in functional languages and then move into the mainstream in some way. I have never gotten over the hurdle of really internalizing a functional language well. I have tried Haskell. It was a desperate, desperately bad time. It took me two weeks to write a program that took me probably an hour to write in Lua, another language I had never tried in my life. I am not cut out; there's something wrong between my brain and Haskell. I can't do it. But that's not to say that Haskell is a bad idea; it has many neat ideas and it undoubtedly is providing something that will help people in the future in programming. But I think mainstream use is probably always going to be dominated by the more conventional compiled, imperative sorts of languages. >> Sean: The chap who asked the question about newest language goes on to say what would you like to see created, which I think is a tricky thing but, you know, what would you take the best of from, and is there a way to answer that? >> BWK: I think the way I would answer it is to say that in many cases the way we make progress in all of these language-related things is when we get to the stage where what we're trying to say is so mechanical you can almost say it mechanically. And once you get to that stage and we say, well let's mechanize it so we'll add something whether it's a language or a library or something like that, so that a whole class of things that used to require us to do it over and over again have now become something where you have a specification, or a very simple language, and the language is taking care of a lot of it. That has the advantage you understand it better. It's much more likely to be right if a computer is doing it for you. And it's probably easier to teach it to other people as well. And sometimes those languages are declarative, sometimes they're procedural, but fundamentally I think that's the way we make progress: we understand more of it what it is we want to do and how to express how to do that, and then we put that into a program; we mechanize it. >> Sean: John Read asks: "If you could start from scratch today and build a new processor architecture and operating system with what we know today, where would you begin and what would it look like?" >> BWK: I would begin by getting somebody who actually knows what that's all about. Sorry. I mean, it's true; it's not my thing, I'm no expert. >> Sean: it's fair answer and he goes on to ask a second question: "Will block-based drag-and-drop programming like Scratch eventually replace traditional text-based programming?" >> BWK: That I at least have opinions on. I think the answer is 'no'. I played briefly with Scratch or at least a derivative. There was a program or a system that Google provided called App Inventor. The idea was that it was basically Scratch but with primitives that made it possible to build Android apps very easily. And my experience with it was that for anything that fit within the model for which they had provided the blocks [it] was perfectly fine but very, very, very clunky. I tried to build something that would navigate around a building, for example, and doing a distance computation with blocks was just -- you had this much block to say give me the square root of x squared plus y squared. It was hopeless. So I think using languages like Scratch as they were constituted when I did this -- this was a while ago, so maybe it's moved on -- but I think the problem with them is it's trying to ... sort of like trying to get to the moon by climbing a tree. You know, the first 10 or 20 feet is really good. Now you're stuck!. Can't get anywhere. I think the same thing is true. Now that's for me as a sort of professional programmer trying to do things. As a way to introduce programming to kids -- absolutely great. There's amazing stuff that people do with Scratch and languages like that. Could you do something that would use the block space part as something that is a nice way to get started with aspects of it, and then extend it in other ways? That's what I was trying to do when I was playing with App Inventor and it just, it foundered on the technology there. But I think something like that might be useful. So they have their place but it's not gonna replace other languages. >> Sean: What do you think about -- this is such a wide wide brief -- what do you think about the future of computer science? Will the manipulating bits era become obsolete in a few years or basics will never change? >> BWK: I think basics will always be there; in some sense we will always have to worry about how much memory we have, how much processor time we have. We'll have to worry about whether the programs are correct or not, whether they're safe and secure or not, so all of that is going to be with us I think in perpetuity, and I think and, as a nominally computer science educator, that's something that we want to make sure those so that students in computer science courses, let's say at university, should actually understand the basics at that point. They should understand how the machines work, what the limitations and realities are of making them do things. They should also understand some of the theoretical limitations: some things are hard to compute intrinsically and that's important and sometimes useful. So all of that kind of thing is going to be there. So let's call that core computer science. And then there's all the things that computer science gets applied to, and that's the place where all the growth is in some sense. I used to say to students in one of my classes for non-technical people, "I don't care what your major or field is; you'll find a use for computing, unless maybe you're a religion major". And then I realized this is nonsense -- religion majors do really, really interesting analysis of texts written in ancient languages and they did the same kind of authorship questions that showed up in more recent issues like the Federalist Papers. All of these kinds of things. So I don't care what your field is; it has computing in it, the more you know about that the better off you'll be able to do things in your field. >> Sean: that's a fantastic answer. I'm gonna ask you on the silly ones now. What is the proper way to pronounce caramel? Is it 'car-mel' or 'car-a-mel? >> BWK: I think it's a three syllable word, 'caramel', to me, but I think so. I don't know now that you asked me. >> Sean: Not necessarily silly ones but very difficult to answer in a concise way: "What are your favorite books or what are your top few books?" This came up a couple of times. >> BWK: Yeah. When I think about what I read and let's call it reading for pleasure as opposed to reading for work. I think what I find myself reading mostly is either junky detective stories. One of the wonderful things about spending time in England is charity shops. There are charity shops everywhere in every town, no matter how big or small, and you can go in there and buy for a pound a really really interesting junky detective story that you hadn't read already. And then in the next town, having read it, you drop it off at the charity shop and pick up a new one. So I read a lot of those kinds of things, probably half to two-thirds by British authors and the rest by American authors. So I read those. The other thing that I read, and probably this is more at home, tends to be history of one sort or another. The Princeton library has a great collection of history books and so I find myself reading that. Reading things on the Second World War just before I left. I'm carrying a copy of 'A Distant Mirror' which Barbara Tuchman wrote years ago about the calamitous era of the 14th century and so on, which has a lot of English and French and Crusades. So lots of these things -- that's, that's what I read for fun as opposed to for work. I think I don't do very much reading of technical books, other than occasionally I will buy a book on something like: "How do you use React?", or "How do you program for Androids?", or I got one on OCaml recently because in spite of saying I don't know anything about functional languages, I figure I ought to learn something and unfortunately I'm not sure I've opened it yet. So technical books, I know I don't read as much as I probably should.
A2 初級 Brian Kernighan Q&A 2/3 - Computerphile (Brian Kernighan Q&A 2/3 - Computerphile) 4 0 林宜悉 に公開 2021 年 01 月 14 日 シェア シェア 保存 報告 動画の中の単語