Matt Godbolt: Hey, Ben.
Ben Rady: Hey, Matt.
Matt Godbolt: How are things?
Ben Rady: Great.
Matt Godbolt: It's that time of the week when I say, hey, Ben, and then you say, hey, Matt, and then we talk about something.
Ben Rady: Mm-hmm. Yep.
Matt Godbolt: Have you any idea what that thing should be? Because, you know, I've planned carefully and I have nothing, as per.
Ben Rady: Right. No, I do have a thing. I started doing a new thing this week.
Matt Godbolt: Okay, let's talk about yours. All right. What are we going to talk about?
Ben Rady: So, careful listener of this podcast may recall that I have talked before about having a period in my career where I tried to learn a new programming language every year.
Ben Rady: This year's new programming language is English. It's all the rage. But in addition to that, the...
Matt Godbolt: Oh, I've heard, or American or English?
Ben Rady: The English. It's proper English, right?
Matt Godbolt: English. Oh, okay.
Ben Rady: I mean, you got to put some U's in some places, I guess, if you really want to call it English.
Matt Godbolt: Yeah.
Matt Godbolt: Well, I certainly do. And far fewer Zs than you would put in, and you would call them Zs.
Ben Rady: But, you know.
Ben Rady: Right. Some S's instead of Z's. I think that's, but is this like the German translation, where you just take all the spaces out?
Matt Godbolt: That's right. Yeah.
Ben Rady: That's, yeah.
Matt Godbolt: I think that's pretty much what German is.
Matt Godbolt: German is just English, but with random capital letters in the middle of the word and no spaces between words.
Ben Rady: You just...
Matt Godbolt: Yeah.
Ben Rady: Exactly.
Matt Godbolt: Have we, is there anyone we haven't offended yet? Let's just...
Ben Rady: Let's keep going.
Matt Godbolt: Okay. But yeah, programming in English. Programming in English.
Ben Rady: Yeah. So that was...
Matt Godbolt: So tell me about your new language you're programming in, which I mean... yeah.
Ben Rady: Well, so I've kind of, just as I've had on my list, and I say jokingly that, you know, the hot new programming language is English.
Matt Godbolt: Yeah.
Ben Rady: I've had a number of programming languages on this list of, like, you know, if I ever get back to this practice, because I kind of fell out of it, because I was sort of like, what language could I learn that would allow me to do something that I can't do in an existing language, right?
Ben Rady: Like, you know, if you've never built a web application before and you don't know JavaScript, then JavaScript is a way, yeah, it's like, I can do this.
Matt Godbolt: Then you're probably right. That's interesting.
Ben Rady: I couldn't do this before, right?
Matt Godbolt: Okay. Or like an HDL for, like, you know, hey, I'm programming an FPGA and I can make lights blink in a new and exciting way, but I can't write this in Java.
Ben Rady: Right.
Matt Godbolt: And so maybe I need to learn something else.
Ben Rady: Yes.
Matt Godbolt: And it's a paradigm shift that goes alongside the language.
Ben Rady: Yes.
Matt Godbolt: It makes you think, I mean, what is it, the Sapir-Whorf hypothesis thing that says, you know, the language you first learn sort of tempers however... and my first language was, you know, machine code and assembly.
Ben Rady: Mm-hmm.
Matt Godbolt: So that definitely has tempered my entire...
Ben Rady: Mm-hmm.
Matt Godbolt: experience in my career.
Ben Rady: Mm-hmm.
Matt Godbolt: But there are definitely languages that force you to think in different ways, be it like a Prolog-type language, and it first bends your mind and you go, oh, I see, you can specify things this way. Or a Lispy thing where you're exposed to the fact that the representation is the language and all that good stuff.
Ben Rady: Yes.
Matt Godbolt: So yeah, English though, but I'm pretty familiar with English.
Ben Rady: Yeah, yeah. Well, OK, so the spoiler alert: the language that I am trying to teach myself, basically starting this week, is Rust. And I have used Rust before.
Ben Rady: But the sort of new idea around all of this is in the way that I teach myself this language.
Matt Godbolt: Right.
Ben Rady: So previously, the way that I had always done this was I came up with some project, right? And that was sort of the relationship between, like, hey, I'm going to learn a new language to be able to do this kind of thing.
Ben Rady: And I'm going to learn that by doing the thing. And then I will, you know, learn the language and then I will be very confident that I can do the thing, right? And...
Matt Godbolt: Like, I want to write a ray tracer, I go write it in Rust and I get my, you know, maybe you've done that 10 times before, or it's something completely new. Like, yeah, I get it. Yeah.
Ben Rady: And the, you know, Sapir-Whorf hypothesis reason for doing that is also a good reason. I've told people, you know, people ask me for advice on, you know, what should I do in my career, how should I be a better programmer, and I would, I still give this advice out, I'm like, how many programming languages do you know? You should try to learn more of them.
Ben Rady: Because two things. One is you will be able to do more things. And also it will expand your mind in terms of how things work.
Matt Godbolt: It's...
Ben Rady: You know, I love Clojure as a programming language because it's fun. I wouldn't inflict it on anyone right now, other than sort of as a learning exercise, but it's a fantastic learning exercise.
Ben Rady: If you've never used a Lisp before, it's awesome.
Matt Godbolt: It's funny you mentioned that, because when I first moved to this country, one of the first things I ended up doing was working with one of our mutual friends on a system that was all in Clojure.
Ben Rady: Mm-hmm.
Matt Godbolt: And I was completely, well, it took me a while to get over the hump of, what the heck is this? Why are we doing this?
Ben Rady: Right.
Matt Godbolt: It seems like we're doing it on hard mode.
Ben Rady: Right. Okay.
Matt Godbolt: ...to, oh no, this is pretty neat, to the penny dropping and me going, like, oh, I get this now. I see functional programming languages as being useful. I see Lisp-like languages. I see. Wow.
Matt Godbolt: And, you know, I have not chosen to go back to it, but I do feel like I'm enriched as a programmer by having had that experience.
Ben Rady: Yeah.
Ben Rady: Yes. Yes. Yes, yes. And it's an intersubjective experience, to use one of our favorite podcast words, because if you have used a Lisp before, then you can talk to someone else who has used a Lisp before and be like, this is just Let Over Lambda, and then they'll know what you mean, right?
Matt Godbolt: Right.
Ben Rady: So those are many reasons to learn programming languages, and I highly recommend that people do. What I am doing this week is I am attempting to learn a programming language not by building something that is, I think, you know, a representation of what would be good for that language. In fact, I am trying to learn a programming language by not writing any code at all.
Ben Rady: What I am trying to do is learn a programming language by asking Claude to teach me the language and quiz me on whether or not I know it. And I am just going back and forth...
Matt Godbolt: Oh.
Ben Rady: like taking snippets of code, being like, what does this do?
Matt Godbolt: That's...
Ben Rady: Okay, explain this, explain that, explain that. Okay, now quiz me on all of the concepts that you just taught me and see if I get it right.
Matt Godbolt: Wow.
Ben Rady: And then I ask follow-up questions, all of that.
Matt Godbolt: That's not what I thought you were going to say at all. I just figured you were going to say, yeah, I asked it to write the thing for me and I skimmed the code afterwards. And I was about to bring up all the kind of badnesses of, like, you know, the quote, I forget who, is it Karpathy?, but it's one of, I think you've retweeted it, something along the lines of, like, you know, LLMs let you outsource thinking, but not knowledge, right?
Matt Godbolt: and, like, or experience, that kind of feel. And that's, like, I'm definitely feeling a bit of that in my day job right now. It's like, oh yeah, I don't necessarily know this as well as I should do. I'm very effective at what I'm doing, but if someone comes, yeah.
Matt Godbolt: But no, you're so, yeah, tell me more. Tell me more about this approach. Yeah.
Ben Rady: Well, yeah. And a lot of this sort of comes from, it would be bold to call this a realization, because I don't really know that it's fully true, but my suspicion is that it is going to be increasingly important for software engineers to read code in the future.
Matt Godbolt: I think that's, I mean, even as you get more senior, I think that's become true, as you end up mentoring more folks and they ask your opinion of code and whatnot.
Ben Rady: Yeah.
Matt Godbolt: And, you know, maybe you spend more time, yeah, either explicitly reviewing PRs or just over people's shoulders helping them. So yeah, I think reading code is, yeah.
Ben Rady: Right.
Matt Godbolt: important.
Ben Rady: It's always been important. It's always been very important. I think it's going to become even more important.
Matt Godbolt: Right.
Ben Rady: And I...
Matt Godbolt: What, until we teach the robots to just review it? And then at what point will that flip? Then it's like, we're writing code and the robots are telling us not to do it that way.
Ben Rady: I mean, so the code is always, I think, at this point, I think I could say that the code is always going to be the actual source of truth, right? Like, there's enough well-worn, and you can certainly point out some situations in which source code and what the machine is actually doing do not line up in a consistent way.
Matt Godbolt: Right.
Ben Rady: Like, that is certainly possible, but it is, I think, much less likely than the delta between what the code is doing and what the English that created the code in a prompt is doing, right?
Matt Godbolt: Yep.
Ben Rady: Like, the code is, it's...
Matt Godbolt: I think that's a fair assessment. Yeah, yeah.
Ben Rady: Yeah, it's like a really good source of truth if you're going to pick a source of truth for, like, what is this program actually doing, right?
Matt Godbolt: Yeah.
Ben Rady: And so being able to read that is really important.
Matt Godbolt: It's funny, actually. So somebody tweeted at me or whatever, not tweet, but, you know, the current whatever Hachyderm thing, with the thing that, like, someone was saying, you know, like, oh yeah, LLMs will be to code as C is to assembly code.
Matt Godbolt: Nobody looks at the output of a compiler. Ha ha ha ha. And of course it's like, at Compiler Explorer, you know, like, everybody here, you know this, the reason this exists is so that we can, because we don't trust it and we do do this.
Ben Rady: Yeah. Yeah. Yeah. Right.
Matt Godbolt: So yeah,
Ben Rady: Yeah.
Matt Godbolt: I think that backs up your point. I think there's always a need to look one layer below, right?
Ben Rady: Yeah.
Matt Godbolt: We've talked about this before, the various layers of things.
Ben Rady: Right.
Matt Godbolt: And, like, each abstraction or layer brings something to the party, right? And you learn to trust it in different ways. But ultimately, you need to be able to, like, look down and go, ah, no, whatever.
Ben Rady: Right.
Matt Godbolt: And yeah, for those folks who say, you know, we just give it English and we just get a binary out at the end of it, it's like, no, the differentiability of the intermediate forms of, say, code is useful.
Matt Godbolt: I mean, we typically don't diff the binaries to get anything useful out of it, right?
Ben Rady: Right.
Matt Godbolt: That doesn't seem useful. But the thing that generates the binary...
Ben Rady: Right, right.
Matt Godbolt: like the concepts from that make sense, that I can look at as something I've asked the AI to do and say, is this a reasonable way of achieving what you did given what was working before? And I trust...
Ben Rady: Mm-hmm.
Matt Godbolt: So yeah, anyway, so you've been, yeah, reading code is an important skill.
Ben Rady: Mm-hmm.
Matt Godbolt: There we are. I've just remembered where we're going with this. Yeah.
Ben Rady: Yeah, so this whole exercise is an experiment in: what if I learned a programming language by reading it? Now, I think you and I have talked before about both of our brains really working best when we sort of get down into the nitty-gritty and, like, step by step build a thing. And that's how we really, really, really understand something.
Ben Rady: And so I am trying to push myself to grow the skill of being able to have, like, ideally an equivalent level of understanding of code that I am just reading.
Ben Rady: And I'm trying to start that, like, you know, I may not get there, but just move in that direction. I'm trying to start that by this experiment of, like, can I say that I am fluent in Rust and...
Matt Godbolt: Mm-hmm.
Ben Rady: having written basically no Rust, right? Like, can I achieve that? I don't know that I can, but that's what this journey is all about.
Matt Godbolt: I am very skeptical that you could do any more than you could read every book that says how to drive a car and then get in and, or land a plane, or, you know, those kinds of things, right?
Ben Rady: Mm-hmm.
Matt Godbolt: They feel like things that you have to do a little bit to be able to do well. But then, there may be humans that do this. I mean, there are very bright people out there who learn and think in very different ways than the way that I do.
Ben Rady: Yeah.
Matt Godbolt: So, you know, I remain skeptical, but I think what you're doing is really interesting.
Ben Rady: Yeah.
Matt Godbolt: So how's it going so far? I mean, it's been, like, how many days? You've only been doing this a couple of days.
Ben Rady: I've been doing this for like three days and it's going really well.
Matt Godbolt: All right.
Ben Rady: And one thing is that, of course, like, Claude, and I'm sure the LLM of your choice would do this, is shockingly good at coming up with good pointed questions to test my understanding, because it knows what my understanding is, because it taught me all those things.
Ben Rady: Right. So, and the other thing that has been really nice is being able to compare it to other languages, kind of getting back to our earlier point about, like, those concepts that you bring in from other programming languages.
Matt Godbolt: Ah, yeah.
Ben Rady: I'm like, what would this look like in Python? How does this compare to Java? What would this look like in Ruby? You know, how does this compare to JavaScript? And, like, finding all those little things where you can, because I feel like a lot of people learn this way, where they map, right?
Ben Rady: They're mapping concepts from one thing that they know.
Matt Godbolt: Right, right. You're sort of like, X but not the Y part, or something like that.
Ben Rady: Right, yeah.
Matt Godbolt: Yeah. So are you physically writing any of this? Are you purely reading it? Because I could imagine it being, you know, like the best tutor, where it's grading you and asking you and even setting you little challenges and saying, okay, now write something which command-line parses and does blah, blah, blah, blah.
Ben Rady: I have not written. Mm-hmm.
Matt Godbolt: But you've not written anything.
Ben Rady: I have not written anything. Now, it wouldn't surprise me if Claude kind of invents a "write me a function that does this" kind of question. And I will just do that if it does that.
Matt Godbolt: Uh huh. Right.
Ben Rady: But I am not prompting it to do that. And thus far, everything has been basically like, explain what's wrong with this code, right?
Ben Rady: Or explain why this works, right? And it's been very good. It's been very good.
Matt Godbolt: How, you know, the sycophancy of these things leads me to think that maybe it would be a little bit forgiving to you.
Matt Godbolt: You know, "well done, yes, you got it right, oh, just this one minor thing", and you look and, like, no, that's terribly important. You know, how...
Ben Rady: It does say things like, well, you got it mostly right, but here's the thing that you missed. And it's like, oh, you got the concept right, but here, this thing is wrong. I haven't been able to, because I haven't developed enough of an understanding yet.
Ben Rady: And, like, again, the last time I wrote Rust was like 10 years ago. So at this point, I've basically forgotten...
Matt Godbolt: Okay. You've forgotten most of it. Yeah, you understand...
Ben Rady: I mean, I remember the basic structure of the language, and it's like, yeah, there's no...
Matt Godbolt: It looks a bit like C, with the types the opposite way around to normal, and then something something borrow checker.
Ben Rady: Yeah. Yeah.
Matt Godbolt: There you go, right, Rust.
Ben Rady: Yeah. It's like, you know, there's no inheritance and, you know, you lend and borrow, and there's no garbage collector and there's no free, right? But, like, I haven't gotten deep enough into this to have found a situation where it failed to point out something that I had said that was wrong.
Ben Rady: Like, in retrospect, I realized that something was wrong.
Matt Godbolt: Okay.
Ben Rady: Again, I'm three days into this, so it may be not surprising that I haven't hit that yet, but it's definitely something that I am concerned about.
Matt Godbolt: Of course.
Ben Rady: And also just on the obvious thing of, like, how do you know that the LLM is right, right?
Matt Godbolt: Okay.
Ben Rady: Like, you know, that's a base-level skepticism that everyone should have with any kind of exercise like this.
Matt Godbolt: Yeah, that's true.
Ben Rady: You're learning from, you know, whatever LLM, how do you know it's not giving you bogus information?
Matt Godbolt: Yeah.
Ben Rady: One of the things that I think is going to be unavoidable, probably, with this is I need some external validation of the concepts that I'm learning. And obviously the thing that I would reach for is, well, go write a frigging program and then you'll know.
Matt Godbolt: Yeah, yeah, yeah.
Ben Rady: But I'm trying to, like, not do that if I don't have to do that.
Matt Godbolt: Well, this seems timely, but, a website that some people refer to after my last name has got an MCP now.
Ben Rady: Right. I probably will. But...
Ben Rady: No.
Matt Godbolt: So you can just add the endpoint of your choice.
Matt Godbolt: I will use compiler-explorer.com slash MCP. And then all the languages and all the execution and everything are available to it. So you could tell your LLM, I mean, obviously it could also write the stupid thing locally and run your own local Rust toolchain and all that good stuff.
Ben Rady: No.
Ben Rady: Interesting.
Matt Godbolt: But for small snippets, it might be useful to say, hey, I can do this on the go. You can add it in, like, the web version of your favorite LLM tool if you're having just a regular chat with it, and it can go off and do the needful things there. Which has been an interesting journey in, how do you give LLMs what they need without overwhelming them with tokens, kind of thing, on my side, but that's a whole other story.
Ben Rady: Yeah.
Ben Rady: Yeah. Yeah.
Matt Godbolt: I don't want to derail too totally, but yeah.
Ben Rady: Filling up way too much context.
Matt Godbolt: Yeah.
Ben Rady: One of the more interesting elements of this is, you know, previously, when I had been doing this, you know, learning a new language by building a project, it was very much like, okay, I'm going to get my laptop and I'm going to sit down, I'm going to plug in the monitors and put on some music and I'm going to sit down and I'm going to code.
Ben Rady: And that was, like, a very focused activity that was restricted in when and where I could do it, right?
Matt Godbolt: Right, yeah.
Ben Rady: Now I can do this on the train home. I just pull out my phone, pull up the chat that I have running with Claude and be like, okay, what does this operator do here?
Matt Godbolt: Yeah.
Ben Rady: Like, what is this thing? And then you just kind of keep it going.
Matt Godbolt: No, that for me has become very valuable.
Ben Rady: Right.
Matt Godbolt: The ability to essentially continue useful knowledge work while on the move, be it through remote control of a session that I've got running somewhere else, be it through exactly as you describe. I've got a number of long-lived projects that have me trying to understand...
Matt Godbolt: I'm laughing because it's so sad, trying to understand, you know, how 1980s television signals were encoded and decoded, for reasons we'll talk about hopefully on another podcast.
Ben Rady: Yeah.
Matt Godbolt: But yeah, and that is very valuable. And you can say, yeah, I've just been thinking about this thing, like, walking the dog, what about that? How does that bit work? How do you know that this is true? And then it's a useful thing.
Matt Godbolt: And, you know, 10 years ago, 15 years ago, maybe even 20 years ago, you would just Google it, right? It would be a Google search and you would find it.
Ben Rady: Yeah. Yeah.
Matt Godbolt: And then you'd be like, oh, this is cool, and you'd find someone's blog page that talks about that thing and you scroll down till you find it.
Ben Rady: Mm-hmm.
Matt Godbolt: And then, you know, maybe 10 or 15 years ago, you start looking at the synopsis thing that appears at the top, this pre-AI, like, hey, did you mean this thing? Oh, I did, actually. Fine. I got the answer to it, which obviously...
Matt Godbolt: had its own bag of problems, you know, like, well, now Google aren't actually sending you to the webpage that had the information on it, which means that they don't get the hit.
Ben Rady: Right. Yeah.
Matt Godbolt: Now, of course, you do get the AI summary at the top, which, it's funny, I think, I don't know if you perceive this or not, but the tide seems to have turned from "we hate this" to mostly indifference and occasional "oh, that was handy."
Matt Godbolt: Certainly dinner-table conversations with my family have gone from "well, this is stupid, ha ha," to "oh, it says this," and you're like, oh yeah, that's fair.
Ben Rady: Yeah.
Matt Godbolt: But yeah, all these things are really valuable ways of being on the move and being able to continue doing something. But I wonder if that comes with a different problem of, you know, burnout, right?
Matt Godbolt: We've talked about this before, where you're managing 12 different chats and trying to make progress and whatever.
Ben Rady: Uh-huh.
Matt Godbolt: And now you can't get away from the stupid thing.
Ben Rady: Mm-hmm.
Matt Godbolt: Yeah. Yeah.
Ben Rady: Mm-hmm.
Matt Godbolt: Sorry, that was a real derail, but yeah.
Ben Rady: No, it's not. I mean, it's all related to this, right?
Matt Godbolt: Yeah.
Ben Rady: It's, I was going to say, if this works, and then it's like, how would I know if it worked?
Matt Godbolt: Yeah, what will be, yeah.
Ben Rady: Right? Like, well, yeah, kind of.
Matt Godbolt: How do you test this, right?
Ben Rady: I mean, it's sort of like, okay, I claim that I am fluent in a programming language. What do you use to back up that claim?
Matt Godbolt: Is there a distinction between fluidity to read and fluidity to write, too? Because, I mean, like, so, fluidity to read, to me, means that you understand everything that you will likely see in the language, and you are capable of then applying your sort of experience and your intelligence and your...
Ben Rady: Yeah.
Matt Godbolt: you know, I guess experience, right, to say, I think this is a good way of doing this, this seems fine to me, there are no issues, there are no bugs, the tests are good, all that stuff, right. And that is still fundamentally different from, given a blank page, make a Rust project that does X.
Ben Rady: Yeah.
Matt Godbolt: That does seem like a different skill set.
Ben Rady: Certainly, at any time in the past, if somebody had come to me and they had said, well, I am a C++ expert, but in reading only, I would have been like, ha, oh, wait, you're serious.
Matt Godbolt: Yeah.
Ben Rady: Right, right?
Matt Godbolt: Yeah, yeah, yeah.
Ben Rady: Like, like, what? So...
Matt Godbolt: Is it like, you know, like a foreign language, to go back to our original language thing?
Ben Rady: Yeah, like, you can hear it but you can't speak it, something like that? Yeah.
Matt Godbolt: Yeah, you know, like, or, you know, reading, I could read a book in French, say, and you'd be like, that's one thing.
Ben Rady: Yeah.
Matt Godbolt: But if you drop me in Paris, I'd be a bit SOL, really, you know?
Ben Rady: Right.
Ben Rady: I mean, maybe it is just as simple as that, that they actually are just separate skills. And if you learn one, you'll get better at the other one incidentally, but you actually do have to learn both skills, right?
Matt Godbolt: I...
Ben Rady: Like, that probably is the simplest way to think about it.
Matt Godbolt: So the thing that I would wonder that you might miss, one might miss, in a read-only training model like you're doing is, you know, those kinds of things where, like, the 15th time you've done something, like, there must be a better way to do this.
Ben Rady: Mm-hmm.
Matt Godbolt: And then you experiment yourself with different ways of doing it.
Ben Rady: Mm-hmm.
Matt Godbolt: Like, hey, can I use reflection to, oh, yeah, I can. Wait a second, I don't have to declare this stuff at all, I can pull it out of the structures or whatever.
Ben Rady: Mm-hmm.
Matt Godbolt: Like, you know, reflection is top of mind because C++ has just gained it. So I'm thinking of all the silly things you can do with it. But, like, when do you have those galaxy-brain moments of inspiration? If you're just reading, it seems too passive to me for you to kind of go, like, I've read this 40 times, there must be a better way, and then be able to come up with that better way.
Matt Godbolt: Having only ever read code. And, you know, I don't know if, I don't know if I believe that, I'm just thinking out loud.
Ben Rady: Well, here's a thought experiment. So let's say that I do this, and then I do what I would normally do.
Ben Rady: And I just sit down and I write a Rust program, right?
Matt Godbolt: Yeah.
Ben Rady: How would you be able to tell the difference versus what I would have done before, right?
Matt Godbolt: How would you, yeah.
Ben Rady: Like, congratulations, you wrote something in Rust. That was your original plan for every other language that you've learned.
Matt Godbolt: Yeah, yeah, what would you...
Ben Rady: What would be the difference? Like, do I do it faster? Do I have, like, fewer questions?
Matt Godbolt: Yeah.
Ben Rady: Like, the result would be the same, right?
Matt Godbolt: Yeah, that's a good point.
Ben Rady: So, like, how do you tell that the reading exercise actually made any difference at all? Like, maybe I could feel it, that'd be about it.
Matt Godbolt: Well, I mean, I suppose, but if you did sit down and then you realized, actually, I can't write something, then you can sort of do the opposite.
Ben Rady: Right, you could, yes, yes.
Matt Godbolt: You can say, like, okay, yeah, I am proficient in reading, and it would be a cluster... for me to actually sit down and write anything more complicated, because, you know, like, I can't create something. I suppose it's, you know, and I'd say there's a reason why book authors are not also book critics, in the same way that book critics, you know, there are sort of, like, none of them...
Ben Rady: Yeah, yeah.
Matt Godbolt: I'm sure there are a number of authors who can critique their own work and other people's work and whatever, but, like, there's a sort of creative process that's happening in the construction of something new...
Ben Rady: Mm-hmm.
Matt Godbolt: that perhaps it's hard to tickle when you're just reading.
Ben Rady: Yeah.
Matt Godbolt: I'm not saying you couldn't, you know, like, I've certainly, if someone sends me a PR and I look at it, I'm like, no, no, no, no, there's a completely new way of doing this, let me sketch it out for you, then I'm doing that part.
Matt Godbolt: It's not like that doesn't happen, but, like, it seems like the activation energy to start doing that is much higher than, yeah, that seems okay to me, you just got the comments in the wrong place, kind of feel, right?
Ben Rady: Yeah.
Matt Godbolt: Yeah. And I don't know whether or not that...
Ben Rady: This also seems just, like, more, almost like an academic way to do this, principled, maybe, but maybe not with the right principles, where it's like, you know, no, first you should learn all of the operators and the keywords and how everything is structured.
Matt Godbolt: Yeah.
Ben Rady: And then, and only then, I mean, it's like programming in the 1950s maybe worked like that, I don't know.
Matt Godbolt: Right.
Ben Rady: I'm just making stuff up right now.
Matt Godbolt: First, you have to learn where to put the holes in the punch card.
Ben Rady: Right. Like, you're just, it's like this unnecessary ordering of learning that I have never done and wouldn't recommend, but I'm just kind of trying it. And it would be, actually, you know, I think the more interesting outcome of this, the much more interesting outcome of this, is that I do this, and I do this for, like, three months, and then I sit down and I'm like, okay, now I have something that I want to build in Rust.
Matt Godbolt: Right.
Ben Rady: And it's like, this is just like if I had started clean slate. Like, none of the things that I've learned in the last three months have, like, maybe I saved myself three days' worth of work, right?
Matt Godbolt: Right.
Ben Rady: That would be a really interesting outcome from this, to say, like, no, there really is...
Matt Godbolt: Yeah, I mean...
Ben Rady: There's no substitute for just building stuff.
Matt Godbolt: I would, yeah, this, it seems like reading is a valuable skill, full stop. And I think, obviously, your experience and your tastes and your sensibilities already put you way, way up in the, like...
Matt Godbolt: you know, you're looking for certain patterns, and you're like, whether you express it with curly braces or indentation or lambdas that you apply or whatever it is, it doesn't matter. Syntax is the easy bit, really.
Ben Rady: Right, right.
Matt Godbolt: So maybe, you know, this is not necessarily a fair fight, because maybe for you, most of it is the syntax, and then after that you're like, yeah, sure, I need to do a visitor pattern here.
Ben Rady: Yeah.
Matt Godbolt: I know how to spell that now in Rust-land or whatever. Or, you know, you've seen enough code that shows you that there is some other way of doing it in Rust that isn't the visitor spell, whatever, you know.
Ben Rady: Mm-hmm. Mm-hmm.
Matt Godbolt: So either way, it's going to be an interesting experiment. And I think also, your instincts are right that the readability of a language, as in your ability to be able to read, parse, critique code, understand code, is by far going to be more useful going forward.
Matt Godbolt: And so if you find it difficult to then write code, well, at least you can poke holes in your own work fairly easily.
Ben Rady: Yeah.
Matt Godbolt: Be interested in how that comes along.
Ben Rady: Yeah.
Matt Godbolt: Yeah.
Ben Rady: One of the, sort of maybe the last point here, is, in addition to the language itself, I have also been asking it questions and prompting it to ask me questions (although this has not gone as well) about the ecosystem.
Matt Godbolt: Right. Right.
Ben Rady: Because, you know, Rust ecosystem is, like, legendary, right, in its consistency, you know, cargo and all of that.
Matt Godbolt: Right.
Ben Rady: But I was like, okay, you know, again, a lot of this is really easy when you do comparisons. I'm like, what's the, is there a Rust equivalent to, like, the Java Flight Recorder, which would let me, like, see the state of all variables and memory and heap and look at all the threads and see what their stacks look like?
Ben Rady: And they're like, nah, it's like, you can do, like, GDB integration and you can debug and stuff like that, but that's not really there.
Matt Godbolt: Right.
Ben Rady: I'm like, all right, what are the logging frameworks like? And it's like, oh, well, here's some options for logging and things like that. But I feel like there's a whole, you know, again, I feel like these days a lot of our podcasts are just recounting other podcasts.
Ben Rady: But surely at some point in the history of this podcast I have uttered the phrase, the difference between computer science and software engineering is: computer science is solving problems with computers.
Ben Rady: And software engineering is solving the problems you create when solving problems with computers.
Ben Rady: And the software...
Matt Godbolt: The second derivative.
Ben Rady: Yes, exactly. Exactly right. And so the software engineering side of Rust, and sort of the blocking and tackling of how do I actually, like, run something and debug it and observe it and recover from crashes and do all the other things that you have to do when you're running software...
Ben Rady: Like, that's a critical part. And I think that's one of the things that you really get very well from writing a project.
Matt Godbolt: Yeah.
Ben Rady: Like, you get kind of a little narrow slice, like, you don't necessarily get the broadest view from doing that, but, like, if you're like, oh, I built a thing and it does X and I went and I learned how to do it well, something that I'm happy with, like, that aspect of the software engineering of that language really, like, clicks and is super valuable. And so I am definitely not expecting to get any of that from just reading code, because a lot of it is, like, okay, staring at the stack trace being like, what is wrong with this thing?
Ben Rady: I don't even know how to figure out what is wrong with this thing.
Matt Godbolt: Yeah, right, right, right. I heard, though, that if you write in Rust, there's just no bugs. That's what I heard.
Ben Rady: Oh, well, maybe that'll...
Matt Godbolt: That was, that was the word.
Ben Rady: If it compiles, then you can't possibly have any bugs? Yes.
Matt Godbolt: That's right.
Ben Rady: Right.
Matt Godbolt: That's right. Sorry, that's slightly more snipey than it sounds, snarky than I mean it to be, because, you know, like, this is just top of mind for, like, folks in the C++ community, where, you know, Rust obviously has a lot of benefits over vanilla C++, and, you know, it keeps being touted out.
Ben Rady: Mm-hmm.
Matt Godbolt: It's no... It is still possible to have logic errors in Rust, right?
Ben Rady: Yes. You can just have the wrong understanding of the problem.
Matt Godbolt: It's not a...
Ben Rady: No language is going to save you from that.
Matt Godbolt: Yeah, or an infinite loop. You know, again, no one's going to stop you from writing an infinite loop.
Ben Rady: That's exactly right.
Matt Godbolt: So...
Ben Rady: Fun side fact.
Ben Rady: Did you know that snark was a portmanteau, or is a portmanteau?
Matt Godbolt: No, what is snark...
Ben Rady: It is a portmanteau of snide remark.
Matt Godbolt: Get the heck out. I figured it was Lewis Carroll, you know, the Hunting of the Snark.
Ben Rady: Yeah.
Matt Godbolt: And then it came from that somehow. Although I believe a whole bunch of words came from the nonsense poems that Lewis Carroll wrote, including, oh my gosh, there was a list of them the other day.
Ben Rady: Maybe.
Matt Godbolt: And I was like, oh yeah, that makes sense.
Ben Rady: Oh.
Matt Godbolt: But yeah, I mean, so what two words is portmanteau made from?
Ben Rady: And, you know, the tragedy and missed opportunity is the two words that it's, why, why would you not do that?
Matt Godbolt: Isn't it just...
Matt Godbolt: I mean, I think it's the appendage on the foot of someone from Portman.
Matt Godbolt: That's terrible.
Ben Rady: We used to have this term, AR redundancy. I forget where that came from.
Matt Godbolt: Oh.
Ben Rady: It was for things like pin number and ATM machine.
Matt Godbolt: Oh. Oh, yeah, yeah, yeah, yeah. Oh, my gosh.
Ben Rady: It stands for acronym redundancy.
Matt Godbolt: Oh. Yeah, that is definitely red... red. The thing is, out of context, if you just say pin, you might be referring to the sharp bit of metal that you, you know, hold things together with sometimes. But anyway, this seems like we've reached the natural end of our experiment.
Ben Rady: All of the notifications in my, dear listener, I'm sorry for all the dings and bings and buzzes and everything that just happened.
Matt Godbolt: I know. A bigger noise earlier was me throwing my phone as far away as I could because it kept making noises.
Ben Rady: Yeah.
Matt Godbolt: And also, I apologize that I left Slack on. And so if any other dings have come through, and I'm only apologizing, really, to our listener and me in a few hours' time when I edit this.
Matt Godbolt: But, cool.
Ben Rady: Yeah.
Matt Godbolt: Well, this sounds like an interesting experiment. We're going to have to...
Ben Rady: Yeah.
Matt Godbolt: We should put a pin somewhere, aha, and that's not the...
Ben Rady: Right.
Matt Godbolt: the other kind of pin, in the calendar sometime, to revisit this and see how this worked out, because this is an interesting way of learning.
Ben Rady: Yeah.
Ben Rady: Yeah. Yeah. Definitely.
Matt Godbolt: Yeah. Especially the thing on the train, you know, continuing to keep making good use of time.
Ben Rady: Right.
Matt Godbolt: I mean, I use that. Like, a Brilliant thing, I'm not sponsored. But, you know, that's another thing that I'm doing to try and remind myself enough of the maths that I need, plural, to help my children do whatever they need to do, although they've really surpassed me now. But yeah, no, that's cool. All right, friend.
Ben Rady: Yeah.
Matt Godbolt: Well, before I ramble any more, I will bid you farewell, and we'll chat some more another time.
Ben Rady: Until next time.