Algorithms + Data Structures = Programs - Episode 100: Programming Language Logos, Top 3 C++ Features & More!

Episode Date: October 21, 2022

In this episode, Bryce and Conor chat about programming language logos, code formatting, the top future C++ features and more!Link to Episode 100 on WebsiteTwitterADSP: The PodcastConor HoekstraBryce ...Adelstein LelbachShow NotesDate Recorded: 2022-10-16Date Released: 2022-10-21The Swift Programming LanguageThe Racket Programming LanguageThe Clojure Programming LanguageThe New APL LogoMind in Motion by Barbara TverskyNudge by Richard ThalerThinking Fast, Thinking Slow by Daniel KahnemanAmos TverskyThe Peak-End RuleC++’s Clang-FormatPython’s BlackPython’s PEP8NVIDIA CUB LogoADSP Episode 99: Moby Dick & Our Favorite MoviesO3DCON by Linux Foundation ConferenceTop 3 C++ Features #1: ReflectionTop 3 C++ Features #2: Pattern MatchingTop 3 C++ Features #3: Senders & ReceiversC++ std::variantC++ std::optionalRust enumC++ std::expectedSy Brand’s tl::expectedPython resultC++20 is Here! (ISO C++ Prague Feb 2020 Vlog)Intro Song InfoMiss You by Sarah Jansen https://soundcloud.com/sarahjansenmusicCreative Commons — Attribution 3.0 Unported — CC BY 3.0Free Download / Stream: http://bit.ly/l-miss-youMusic promoted by Audio Library https://youtu.be/iYYxnasvfx8

Transcript
Discussion (0)
Starting point is 00:00:00 This is evolving into an actual disaster at this point. I think I got it. I think I got it. Welcome to ADSP The Podcast, episode 100, recorded on October 16th, 2022. My name is Connor, and today with my co-host Bryce, we talk about a ton of things. Programming language logos, code formatting, Bryce's upcoming trip to O3DCon, and so much more. What programming language has the best logo in your opinion? Ooh, great question. Great question.
Starting point is 00:00:42 To start off, what are we starting off here, Bryce? What are we starting off? We're starting off with great question. Great question. To start off, what are we starting off here, Bryce? What are we starting off? We're starting off with my question. Bryce probably doesn't even know the significance of today's recording. It is episode... Number 100, right? Number 100, which technically... I did know that.
Starting point is 00:00:59 I did know that. I knew we were getting close. I wasn't sure if it was going to be this time or the next time, but I knew we were coming up on it. So we've got some special things planned for today. First things first, what is the best? So technically, what is the best programming logo? I'm going to take my mic and zoom out into the background here off screen so we can see all of them.
Starting point is 00:01:19 So what do we have? Actually, let's go through them all first. We're just going to list them all off. D, Ruby, Scala, Swift, Lisp, Racket, Java, Basic, OCaml, the Dialog APL logo, Kotlin, which technically is out of date. Kotlin used to have like a blue, purple, orange one. Now it's just this like single color, no multiple triangles, single color, purple, pink. I actually like it better.
Starting point is 00:01:47 So Kotlin's out of the running because it's no longer exists in this form. Lua, Pascal, Python, JavaScript, which is the yellow box. C++, Dart, TypeScript, J, F sharp, Clojure, Go, Smalltalk, which actually really Smalltalk doesn't have a logo. That's the cover of like the 1972 Byte Magazine or like that uh groovy elm c-sharp some people would debate that that's not the official c-sharp logo which the real one i think is a circle but it looks stupid so i use this one um elixir haskell php r algol rust erlang cobalt and seed what's your what do you think the best uh logo is here hmm i think off the top of my head the swift logo
Starting point is 00:02:33 interesting interesting calls out to me why do you like that one the best I think that it's like most creative. You know, it's this little like bird that's swooping down and it captures like, you know, motion. And so it gives you a sense of, you know, motion or speed or swiftness. And, you know, that's obviously the name of the language. I think also that's one of the goals of the language. And I think I should explain.
Starting point is 00:03:15 I don't know anything about why they chose to call it Swift, but my impression of the language is that it's a language that's meant to be easy to use, fast to develop with, but also a language that is, you know, lets you write fast apps. And all that's captured, I think, by the logo. A lot of the other programming language logos are like, you know, the name of the thing with some form of fancy text or shape around it. And some of them are just like really just the name, not to bash on any, but Algo and Cobol, I'm kind of looking at you. Yeah, I mean, those are sort of stretches, Basic, Algo, Cobol, Cobol. I'll tell you, like, for my requirements, some of them immediately get ruled out as ones that I don't like.
Starting point is 00:04:11 Because one of the criteria, I don't have many criteria, but one of the criteria for logos is I want them to have the same dimensions and width and height. Because a lot of the times when you're trying to put, you know, five logos next to each other on a cover slide for a talk, I don't want to have to manually adjust that stuff. And when you have something that is either super narrow, like the Scala logo, or super wide and short, like the ones typed out like Basic and Algo, PHP fits into this category as well. Java also doesn't look super narrow, but it actually is because of the lettering underneath. Whenever you use those automatic sort of distribute by width to sort of align things nicely, those logos always mess it up. Whereas if you have nice sort of boxy logos, usually you can
Starting point is 00:04:59 use that quite nicely. So Go also is a logo that is sort of very um wide and not very tall so my favorites and i i like ones that um are very polished so like swift fits into that category i think my personal favorites are the lisp logos not the one in the bottom corner um but the closure and racket logos those are very nice and i think actually the Clojure one was designed by the brother of Rich Hickey who created the language, which is kind of a neat story. I think actually C++, D, they all have great logos as well. Yeah, I kind of like the C++ logo. What's the logo that's on the second column bottom?
Starting point is 00:05:45 That's the specific to a company Dialog Limited APL. You see, if you told me that with no contacts or just knowing what the C++ logo looks like, I would have thought that was the D. Yeah, this is out of date because we actually have a new Apple-like logo for APL in general. And one of the criteria, this is not actually what I think. What does Apple-like logo for APL in general. And one of the criteria, this is not actually what I think. What does Apple-like mean?
Starting point is 00:06:09 Apple, so actually let's get it out. Let's get it out. And we promise we've got some other topics to get to, but let's, I'll actually, how should I do this? Should I just send you, I'll just send you a link. And we'll put this in the show notes for sure. I can open links. APL logo. And we'll put this in the show notes for sure. I can open links.
Starting point is 00:06:26 APL logo. And we're just – Although I don't have my keyboard right now because I'm packing up and going to Austin for two weeks. Going to Austin? Yeah. Yeah, Austin, then the C++ committee meeting in Hawaii, and then the ISOJTC one committee meeting in Japan. Wait, I thought that was in February. No, that's in November. Oh, interesting, interesting.
Starting point is 00:06:55 All right, we'll talk about that more in a sec. APL logo in the chat. Oh, I like this one. So why the Apple, though? So a lot of stuff in the APL community, there's a lot of apple puns because APL can sort of be pronounced apple. So there's a lot of like and I think historically going back to like conferences that were in the 70s and 80s, they would give out a lot of stickers and swag that had apples and like I heart APL in it because of the pronunciation. And so one of the criteria for I think lesser well known languages. So I actually
Starting point is 00:07:32 like the Swift or not the Swift, the F sharp logo quite a bit, which is the little purple diamond. But for less well known languages, which is the term that I'm referring to for languages that some of them are esoteric, but some of them are not esoteric, but they're also not mainstream. And I think non-mainstream is a bad term. So I've started to use the phrase less well-known for languages that fit in that category, APL of which is definitely one. If you're going to create a logo, I think you inevitably have to put the name of your language because when people see the diamond that's blue, inevitably, and even Clojure, even though I like the Clojure logo,
Starting point is 00:08:16 everyone's like, what language is that? Because they don't know. Yeah, yeah. And you love to just use the logos in your slides. And this has been, I mean, I love how you make your slides, but this has been the one thing that I've mentioned to you, you love to just use the logos in your slides. And this has been, um, I mean, I love how you make your slides, but this has been the one thing that I've mentioned to you. I think, uh, once or twice in the past that sometimes I'm seeing your slides and I'm like, I don't know what that is because it doesn't have the, um, the name in it. Um, I think what
Starting point is 00:08:38 Russ did too is like, even though Russ didn't put the name of it and it's gotten pretty popular, but like having an R or, or like some to indicate give like give them give someone who doesn't know like a shot at guessing is like that's that's a bare minimum I think um you know it's you know I was talking about logos or programming languages sounds a little um maybe superficial but this is things like logo and design and how we represent things is actually I think something that both you and I
Starting point is 00:09:13 have a great interest in you know we've talked a few times in this show about how we both take great care in how we make our slides and how we present stuff and one thing that I think we both do that we appreciate greatly in each other's slide content is our, our use of diagrams and visual representations.
Starting point is 00:09:41 You know, I almost, I almost as a rule, you know, if I'm making a slide, I try to think, how can I have this slide have like no text? And if it's a slide that just has text and if it's code, then, you know, that's one thing. But if it's a slide that's describing something, I want to have some, some diagram or some visual representation. And I think the reason for that is, for me, I feel like I can convey a lot more. But also I'm speaking. If I'm verbally saying something to you, I can say whatever I would put on the slide. And I would prefer to just say it. Maybe I write down a few of the important things in the slide, but I'd prefer to give you, you know, I have this other medium of communicating, like I'm already going to give you text just in the form of speech. Um, and so I'd like to be
Starting point is 00:10:33 able to give you some, some diagram or something, um, or some visual, um, uh, that represents things. And so I think that's why we, that's why we like logos. And that's, that's one of the reasons why you love to put the programming language logos in your talks, right? not just color and graphics and visualizations, but just like, you know, I've heard, you know, one of the things I sort of call out all the way up to keynote speakers and conferences is like not using a monospace font in their code examples, which just drives me nuts. And I'll have to finish reading this book before, maybe we should turn this into a whole other episode, but there's a book that I'm currently reading called Mind in Motion by Barbara Tversky, who is the wife of Amos Tversky, who anyone that's read sort of the behavioral cognitive science books that by
Starting point is 00:11:36 Richard Thaler and Daniel Kahneman. One of the more famous ones is Nudge by I believe Richard Thaler and then also Thinking Fast and Thinking Slow by Daniel Kahneman. Kahneman and Tversky were these, a pair, I think Kahneman is still alive, but Amos Tversky passed away. But they're a pair of these cognitive psychologists, and they have written all these books about these sort of phenomenons of heuristics and how our brains are really good at, you know, making estimations and stuff, but at many times they fail us.
Starting point is 00:12:06 And one of my, I don't think I've ever told this on the podcast, but in the book, Thinking Fast and Thinking Slow, which is amazing if you can get through it, but it's a tome, is this study they did where, I'm going to, we're going to go on a bajillion tangents right now, but it's a study where you take a bowl of cold water and you get people to place their hand in it for a minute. And it's uncomfortable
Starting point is 00:12:25 but you say oh you know blah blah blah and then they ask people how you feel after that minute and then they take the same group of folks and whatever some of them do only one some of them do both some of them do the latter and the latter one is to do the exact same thing put your hand in a bowl of cold water and then they do that for 60 seconds and instead of ending it there they then increase the temperature just by a degree and then have them hold their hand in the water for 30 more seconds. And overwhelmingly,
Starting point is 00:12:50 when they ask people at the end of that 90 seconds, which is 30 seconds more of discomfort, but it's slightly more comfortable than just the 60 seconds, people say that they actually prefer the 90 seconds one, even though overall, you're spending more time in discomfort. And this led to Daniel Kahneman terming this basically the peak end rule, which he said is basically that the way that people remember events is defined by sort of the highs and the lows, like the worst point or the best point, and the very last thing
Starting point is 00:13:24 that happened. So because their hand is finishing in like slightly warmer but still uncomfortable water, their view of the overall experience is better than the one that was shorter but ended in like colder water. And like the way that he parlays this into society is he's like, and this is kind of, you can see this show up when people say, you know, don't go to bed angry, you know, fighting with your significant other because you're going to remember that. Or if you go on some day trip or vacation, if the last thing that happens is like something negative, you kind of remember the whole thing as a negative experience, even if like the whole day was great and you just ended on this one bad note. Anyways, I just, I find stuff like that incredibly fascinating. Anyways, back to this
Starting point is 00:14:02 book that I'm currently reading, Mind in Motion by Barbara Barbara Tversky, who's married to or was married to Amos Tversky. It's all about like the thesis of the book is that the foundation of thought is built upon visual thinking and visualizations as opposed to like Noam Chomsky's like the foundation of all thought is language. So it's like, you know, there's this one school of thought that thinks that all of our ability to think and come up with ideas and stuff is based on language at the bottom of this triangle languages at the bottom. And she's saying, no, no,
Starting point is 00:14:31 no, absolutely not. It's based on like the ability to think and visual or not to think to visualize, um, with like structure and images. And, uh,
Starting point is 00:14:41 I think, I think I, I like wholeheartedly agree with this, this theory because there have been times where I've taken some like basic notes or whatever and then structured it into some kind of like Venn diagram or flow chart. And then immediately from like adding structure to some information, you make some observation that you wouldn't make otherwise if you were just sort of like taking notes or whatever. And I think this ties in and back to the code examples is that like when you get rid of the monospace fonts in code, your ability to like pattern match on certain things, like that's why I like in my code aligning. If you're assigning a bunch of, you know, the results of functions to variables X, Y,
Starting point is 00:15:20 and Z, if those variables have different length variable names like a bb ccc i like lining up the equal sign so you can very clearly see the names of the variables on the left yeah i did the same thing and it's interesting because that that that particular thing um i very rarely see folks do that i know it's something that both you and i do yeah um it's a setting in clang format yeah yeah um uh but uh it's not it's it's something that that that uh you know it's sort of my career before clang format was a thing um i used to manually do you know i would manually well i manually do it but i used to whatever team i was working with they would always be like what are you doing like this is weird like don't do that yeah i've had people say that as well. Yeah. But, but it's, it's funny that that's
Starting point is 00:16:07 something, something that we, we have a very similar sense of style when it comes to code formatting. Yeah. It irritates me like Python. I can't remember cause I don't use in my personal Python code black or pep eight, but I think both of them don't do that. And like, if you use it, it automatically you know shifts your equal signs to one space after the variable name and um yeah it just it doesn't make the variable names pop and it even like it affects the way that you name things because you kind of want all your variables to have you know roughly same length names because if you have everything that's like you know three to five characters and then one that says you know, roughly same length names, because if you have everything that's like, you know, three to five characters, and then one that says, you know, factory, you know, deprecator,
Starting point is 00:16:48 blah, blah, blah, that's like 20 characters long, it then shoots all your equal signs out, you know, with you have a ton of space. Anyways, yeah, I think we should we should spend more time talking about this in another episode. One of my, I'm trying to find it one of my favorite uh uh logos that i've made for something um i i just over the years i have fallen into the role of being the um the unofficial designer yeah the unofficial graphic designer for a variety of things um but one of my favorites is the, is the cub logo, which I can't take that much credit for because the design is actually based on something from the cub documentation. Um, and it's, uh, this diagram, um, the one of the, like the web, right? With the letters.
Starting point is 00:17:40 Yeah. It's just like this little like web that shows, um, uh, it that shows a series of lines and then dots, and there's dots in the lines. There's like eight lines that are in parallel, and there's dots, and it shows how a parallel reduction works. And then there's lines, there's those primary lines, and then there's connections between those lines, between the different dots, showing the values from these two threads are reduced into one, and then there's connections between those lines, between the different dots showing, you know, these,
Starting point is 00:18:06 the values from these two threads are reduced into one and then et cetera, et cetera, they all get combined together. And I can't remember if the diagram that we use for the logo is the one from, from a scanner or from a reduction. But I, I saw that in the, the comp docs and I'm like, you know, we, we haven't had a logo for Cub we really need one and Cub
Starting point is 00:18:29 is this you know parallel algorithms primitives library and I was like this is just the perfect thing and I made a sort of stylized version of it and I've been very happy with it and you know
Starting point is 00:18:44 some people might think like know it's some people might think like oh it's so silly for libraries to have logos but like it's no it's false like it's just i i'm sure there's some study that has either been done or that could be done that would prove that people are easy are able to build like connections and remember things better for companies if they have some really memorable logo. The same way that more people know what Amazon is than know who Jeff Bezos is. Don't get me wrong. Bezos is a famous guy. But I'm sure there's a ton of places in the world where if you ask someone who Bezos is, they wouldn't know.
Starting point is 00:19:24 But if you ask them what Amazon was, they definitely would know. I think the same can be said about logos. Like if you were to ask folks, you know, what the golden arches are. Yeah, that's probably close though, because I'm sure everyone knows what McDonald's is as well. But I'm sure there's examples where like logos are more like recognizable than the names of companies. Yeah, the maybe the Nike Swish. Oh, yeah, yeah. Although it's kind of hard because at that level, almost everyone knows the companies as well. But like NumPy, which is a Python library,
Starting point is 00:19:52 it's got a fantastic logo, and it sort of builds the fact of matrices into it. And yeah, I think, you know, it's a... I saw, was it on some subreddit, that people were whining and asking about the fact that Carbon didn't have, or maybe that came up in the last interview with Sean Baxter, that Carbon doesn't have a logo yet. And while I agree that, like, Carbon is so early days that, like, you know, it's an experimental phase, that I do understand why people are like, where's the logo? Where's the logo?
Starting point is 00:20:25 Because I think logos are, logos are, are. They matter. Yeah, they, they matter. And they're, they are. Or maybe another way to put it is like sort of the branding of your, of your library, the, the, how you present it to the world of your software in general is, matters. Even if it's, even if it's not a consumer-facing thing, even if your audience is entirely other developers.
Starting point is 00:20:48 It still matters. Yes, it matters. All right, we're going to skip around. We were supposed to do this first. I was in the process of turning off my background, and then we got distracted. As we frequently do. And while I'm doing this, to uh all of the listeners so
Starting point is 00:21:08 um let me turn this off i'll explain what the big red thing here is in a second although unfortunately zoom is zooming so it's this is kind of cutting off this red thing here but you'll still be able to see wait what zoom is oh it zooms in um i understand so episode part one of the of the interview with sean baxter i think statistically was has been our most successful episode ever and it would have been even more more successful if uh our audio hadn't been terrible so So in the future, we will make sure when interviewing guests, because I think using this Yeti for two people in a room, it basically created like a tin can effect. We, I mean, we did it when we were in San Diego,
Starting point is 00:21:56 but we were both on either sides of a table. And so I think it wasn't as bad. For the listeners that were thinking, what happened to the audio quality? We know, we know. And we'll make sure next time we bring Sean on for hot takes that our audio is fixed. All right, now for episode 100,
Starting point is 00:22:15 you must be thinking, all right, this is kind of disappointing. I've been listening for a hundred episodes and they just talked about programming languages and the value of branding. I think it's a little bit of a stretch to say that we've had 100 episodes where we've talked about programming languages
Starting point is 00:22:31 because I think at least 60% of the content has been us talking about Lululemon or Bubly or other random stuff. First of all, if you're a Bubly representative and you're listening, trying to figure out if you're a bubbly representative trying and you're listening trying to figure out if you should sponsor us don't worry about bryce's mispronunciation uh i know it's bubbly even though i like to say buble uh it's whatever bryce said bubble and did i say that we've been talking about program i meant to say that like for the first
Starting point is 00:22:58 15 minutes of this episode or 20 minutes or however long it's been we've been talking about programming language logos but here with us for episode 100 we have a generator of infinite bubbly carbonated water it's a soda stream here we go we're gonna do this live on the podcast this could make a mess because i'll be honest I don't really know how to use this thing. Have you used it before? I used it yesterday and water went everywhere. It is about three inches away from his microphone.
Starting point is 00:23:35 If this is the end of the episode, you know what happened. I think you're just supposed to poof it though. You're not supposed to hold it. That was the problem. I was just like, all right, we'll go like a beater. All right, here we go. You're supposed to give it like a couple poofs.
Starting point is 00:23:52 Oh, yeah, it is spilling. It's making a mess. Man, why does it? Are you supposed to? Oh. And why does it, are you supposed to, ooh. Connor is pushing the button and some bubbles are going into the bottle. He's very gingerly just doing little squirts at a time. Now he is removing the bottle from the machine. There is water everywhere.
Starting point is 00:24:17 It is a beautiful red color, this machine. I'm going to use my shirt to soak this up because I don't want to go get paper towels. There appears to be a lot of water on Connor's desk. I'm not even sure that Connor has paper towels in his apartment. I definitely do. I definitely do. But look what we have here. You didn't think we were just going to – so let me take a little sip, see.
Starting point is 00:24:34 Is this carbonated? Oh, my God. I did not do that enough. All right. Here we go again. Oh, shit. Okay. Water went everywhere now.
Starting point is 00:24:46 Water whenever you are. I do need to go get paper towels. All right, Connor is now departing to grab some paper towels. Why is this so difficult? You still with us, Bryce? I am still here. All right, let's try it again. This is evolving into an actual disaster at this point. I think I got it.
Starting point is 00:25:21 I think I got it. I think I got it. I think I got it. I think I got it, folks. No, that sucks. All right, well. We could have had Sean Parent or some exciting guest on for episode 100. Instead, we chose this. I mean is this basically right and now what I have is I've got bubbly drops. Uh blackberry bubbly. I don't actually know how to use this. I assume you just put a couple drops in. All right and uh so now folks I'll figure out how to get this to work
Starting point is 00:26:00 in the future. Switch this up a little bit and and here's Connor's official review of SodaStream that he doesn't know how to use correctly. Pretty much garbage. Luckily, though, I also have a beer. Isn't it a little early for a beer? It is. I guess you ran this morning. It is 11.18 a.m.,
Starting point is 00:26:24 but it is a celebratory beer, not just of our 100th episode, but it's technically our 101st episode, which zero indexing always irritates me for that. Oh, wait, so our 100th episode was with Sean.
Starting point is 00:26:40 Yes. Okay, all right, it's okay. I mean, this is episode 100 though which is was it did we do an episode just for sean talked about moby dick we did yeah last episode was uh like that was episode 100 it was 50 minute 15 minutes of moby dick and then 15 minutes of uh listing off our favorite movies yeah one. One of the things that I really appreciate about Sean, and I think I can say this without having to worry about embarrassing him, because I'm pretty sure he doesn't regularly listen to the podcast,
Starting point is 00:27:15 but Sean's this prolific programmer who's created this really awesome visionary compiler. But he also has, you know, he's so cultured as well. You know, he finds time to do other things in his life as well. You know, he's this scholar of Moby Dick. You know, he appreciates good literature, good movies. And that's one of the things I really like about him. And the man knows how to find a good bar and seduce the, what's the word I'm looking for? Bartender?
Starting point is 00:27:58 The bartender. So we should clarify because it sounds bad when you say it like that, but really what he's trying to's not it's not like he's seducing female he's seducing bartenders in general regardless of gender and he's just trying to how would you describe it like win them over by for the the trade of bartending and and he um he wants to win over the hearts and minds yeah of the bartenders in his life yeah yeah so uh yeah it was good i mean i thoroughly enjoyed uh uh we'll have to have him back on at some point yeah but yes i didn't I didn't finish explaining.
Starting point is 00:28:45 It's a celebration of episode 100, but also I just ran the Toronto half marathon. Literally, like, finished it. What was your time? Just over an hour ago. It was pretty good. It wasn't as fast as I was hoping. It was, yeah, my legs got a bit tired in the middle,
Starting point is 00:29:03 but it was a personal best, an hour, 17 minutes and 20-something seconds. So it's pretty good. We're going to go out and celebrate with the Run Club later on. And, yeah, what are we going to talk about for the last 10 minutes? So you're going to Austin. Yeah, I'm going to austin yeah and then um i'm going for for i'm going to this uh o3d con which is um a linux foundation conference for um an open source uh uh graphics and gaming and vr and uh digital twin uh engine um digital twin so? So this is not NVIDIA's? This is some other thing?
Starting point is 00:29:50 No, no. I think it was I think it like started out of something from Amazon but it's an open source project and now it's run by the Linux Foundation.
Starting point is 00:30:09 So it's used for, you know, video games and like anything where you need to do a, create a 3D world of some sort or a simulation. Interesting. That sounds neat. Yeah. And so I'm going to give a talk about the three things that I'm most excited about that are coming in C++, not in C++23, but sort of beyond that. Ooh.
Starting point is 00:30:34 Are we allowed a preview? Are we allowed a preview? Yeah. Yeah. Well, what would you think that my three things would be? Well, executors and centers and receivers didn't get in, so I assume that's one of the three. That is on the list.
Starting point is 00:30:45 Yeah. That's the one of the three. That is on the list, yeah. That's the third of my three things. If it's going to be 3D graphics, I mean, I'm 50-50 on this, if this would be, whether this would be on your list. But reflection? Yeah, reflection. Because that's big for them, right? This talk was a talk that I'd made for another conference a while back. And so this was not three things that I picked specifically for this audience.
Starting point is 00:31:13 It was just the three things for a general C++ audience. But yeah, reflection was the number one thing on the list. And then the third thing I would guess is probably not, but contracts? I don't know. No pattern matching. Oh, yeah, yeah. I keep forgetting that we don't know. No pattern matching. Oh, yeah, yeah. I keep forgetting that we don't have that yet. Yeah. So, yeah, so I talked a little bit about reflection
Starting point is 00:31:30 and then about sort of things beyond what we'll get in the first set of reflection, which will just be the static reflection APIs, I think. But I talked a little bit about things like how you'll be able to do generative metaprogramming with reflection information. I don't even know if there's a proposal for this, but it's based on a slide I borrowed from Andre of showing how you would use some sort of template for construct at class scope to generate members of a class, like a wrapper class, using reflection. That's something that we don't have yet. We don't have some sort of template for or some sort of way to do that. But I think we'll probably get that once we, hopefully they're alongside the initial reflection mechanisms
Starting point is 00:32:38 or as a slightly later feature, sort of like the metaclasses-esque stuff although i imagine that um i think we'll get a you know some of the building blocks one piece at a time not sort of the whole metaclasses thing um and then yeah and then pattern matching which i think is um uh gonna be a really transformative feature uh is that targeted for, because for a long time it was on C++23, and I haven't super paid attention, but from what I know, there's now two competing, there's the is-as one,
Starting point is 00:33:12 and then there's the one from Michael Park and friends. Yeah, I don't entirely know that there's been, I don't know what the status of that is right now, and I don't know how much progress there's been the last year. But keep in mind, we're in the process of finishing up C++ 23. Yeah. So usually when we're in that last like three months of finishing up the release, we're really focused on that release. And then after that, we will start to focus on the next release. But there's actually sort of another thing that I don't think
Starting point is 00:33:45 I'm going to cover in the talk, but that I think maybe there's two things actually, but I'll focus on the one that I first had in mind, which is I would really like to see us take another look at language level tuple and variant, especially in the context of something like pattern matching. But, you know, even in the context of senders and receivers, because senders and receivers relies pretty heavily on tuples and variants because a sender can send multiple values, a tuple. Right. And a sender can also send um either a value an error or a you know a done signal um and so when you need to represent what things could a sender possibly send like if i want to say like i want a sender that if i want to constrain to say like i want a sender that sends an int um it's actually a little bit more complicated than that because like what if you want to say like i want a sender that sends either an int or sends me this type of error code.
Starting point is 00:34:48 Then you're saying you want like a sender of variant of, you know, int and then the error code type. And you can end up in these cases where when you're working with some of the sender adapters, you might end up with variants of tuples of variants. And just over the years, I've become increasingly aware of how painful the library variant in tuple is. Well, there is a language variant proposal out there. Yeah. And a language tuple proposal. I was initially supposed to give a talk internally
Starting point is 00:35:24 to a research group on Friday but then we ended up switching topics at the last second but it was it was a I had mentioned oh there's some talk I'm going to give in the future a couple weeks ago of like the five things that I think all languages should have some form of and uh on that list is basically um well actually i didn't technically include a language tuple but like destructuring and algebraic data types and a variant of which is one of them i just think are so like the fact that we got so far so many decades with just product types aka classes and only recently have variants and the choice type or enums showing up in languages like Rust. They've become idiomatic.
Starting point is 00:36:14 It just seems so... How many times is there a list of options that are mutually exclusive where it's either this or that? And it's such a bread and butter thing that just pops up all over the place. And having that built into the language, I just think is such a huge win. And yeah, it is extremely painful using std variant.
Starting point is 00:36:32 I mean, I think if we'd had a notion of language level tuples or variants the the advent of c++ or the advent of c would have drastically changed the patterns for how we write software yeah yeah um for for one like i think it would really change uh interface design um if we had both variant and tuple from the get-go, I think you would see far fewer output parameters. Right, yeah. Because why wouldn't you just return them? Obviously, if you're doing something sort of pass-by-pointer, if it's not value semantics, then yes,
Starting point is 00:37:22 you might need to have output parameters. Or if you want to give users control over whether the thing is returning the stack or whether it's just some memory location it's written to, you might still want that. But I think in a lot of cases, you would just have the far clearer sort of functional semantics where all of the inputs are just inputs, or all the function arguments are just inputs. And I think it also would have really changed how we do error handling. There's so many C-style libraries that just return an error code as their only return value. And oftentimes that pushes them into the output parameter style solely because
Starting point is 00:38:09 the convention is that the return value is the error code. And it might have led us to more creative ways of returning errors than just error codes, which I think often become problematic for libraries because you end up with, I remember HPX, which is this parallel runtime I worked on for many years, we threw exceptions, but we had an error code mechanism under the hood, sort of similar to std error code. And so we had an enum of all the different error types that could be thrown. And I forget the name of the particular error code,
Starting point is 00:38:57 but we had some vague one, like invalid input or something like that. And it was like 50% of the errors that could be produced by the whole code base was like invalid input. And if you got that one, you know, there might be a descriptive string telling you like a little bit more about what happened, but, um, uh, you know, it's, if you just leave the error code, you'd be like, what does this mean? Like, I don't know what this means. I got to go look it up in the doc. It doesn't tell me anything useful. And CUDA is also like that. But in CUDA, there's no way to encode a specific error code message.
Starting point is 00:39:35 You just get the code out of the API. So if the API gives you back CUDA error and valid value, you just have to go look up you know what does that mean um and uh yeah that's that's just a little too vague for me probably all of my recent either python or c++ projects i use um cybrands expected which i think technically now gCC 11 point something or 13. I can't remember which one they're on, but like one of them actually ships with stood expected now and C plus plus 23. Like they already have that feature in,
Starting point is 00:40:14 but I haven't started using that version of the compiler. So I usually still use side brands, TL colon colon expected. And then Python has like an okay package, which is the equivalent of like the expected in c++ and like rust has you know built in or has it you know one of their standard libraries and it's yeah i mean i think even sean parent is not a believer he doesn't believe in um the expected type and thinks it just like pollutes all your code. But I, you know, for little small projects
Starting point is 00:40:46 and games that you're designing, like where, you know, exceptions, you don't really need exceptions in my opinion. Like you've got some function that's trying to calculate something and it's either going to be like a list of, like you said, like an enum of, it's either this happened or this happened or this happened,
Starting point is 00:41:00 or you get the correct result and being able to just return some error message or the correct thing and then unwrap that where the call call site happens is just so phenomenally like useful and it's just easier for my brain to reason about it's more declarative in my opinion yeah that'll be exciting talk is that going to be recording online or uh i think it'll be recording and i think it'll be online. And I'm also doing a C++, ask the C++ committee question panel, but it's just me and Zach Lane.
Starting point is 00:41:31 Oh, that'll be fun. Is Zach in Austin? He works for Cadence, right? Yeah, he is. I was, there was another C++ committee member who was in Austin, but had since moved. But it'll be interesting because I've done Q&A panels with three before, never with two.
Starting point is 00:41:51 That'll be fun. To do it with Zach? I think it'll be fun, yeah. Zach's a party. Yeah, yeah, he's a real fun guy. He was – remember when we were in Prague and we were doing the recordings for the little vlog thing we ended up putting out and him and Eric Niebler recorded together. And then he went and told that whole story about where they went when they went to some museum.
Starting point is 00:42:13 And then we had to cut all of it. And then basically all that ended up being in it was just the thing at the end. And that's why it's nice to bring a friend. That's like the only part of his like eight-minute story. I remember that. It was hilarious. You've got to put a link to that video in the show notes because our listeners may not have seen that. That was really a work of greatness that was produced in a very short time frame.
Starting point is 00:42:42 That was very impressive work on your part. I did none of it other than saying we should do this yeah i mean you were there for the helping interview and questions and stuff and uh i mean if i ever that was the last in-person c++ committee meeting it was indeed it was indeed um yeah it's ages ago it feels like i mean it was a long time ago but yeah it was it was 2019 2020 it was february right yeah you're right it was literally like a month i think actually i can't remember it was like right before code i was gonna say like i can't remember the first time i heard about i think like i might have heard we might have heard there were news stories about like oh
Starting point is 00:43:22 there's this new yeah yeah flu outbreak in China at that point. In China, yeah. But like there was no. Although, spoiler alert, it wasn't just in China. Yeah. Anyways, do you got to go? I think I probably should go because I got to pack. pack and my flight's not actually until this evening but um i i have to go to uh the the global entry office at the jfk airport before my it's a whole long story um uh i applied to renew
Starting point is 00:43:57 my global entry and they you can at the same time you can apply to do this APAC business traveler card, which lets you travel to a certain set of Asian and Pacific Island countries for business travel without filling out a visa. And I was like, oh, sure. I'll just add this on. This is easy. I'm planning to go to Japan again later this year for business travel. So I'll just go do this. And there's this great, it used to be you had to schedule a global entry interview at a location and then you had to like go to the country and do customs. So if you just happen to be flying internationally and coming back, instead of having to go to the airport specifically to do your interview,
Starting point is 00:44:51 you can just do it on your way back through customs. So I had a bunch of international flights this summer. The first time I tried to go to do the interview when I returned through customs, they're like, it's too late in the day. They're closed. You're going to have to try again another day. Um, and then the second time was when I was coming back from Israel and, uh, that time our flight got in at five and we had to wait
Starting point is 00:45:12 at the gate for an hour because customs wasn't open yet. So I'm like, all right. Yeah. 5.00 AM. So I was like, great. At least like custom isn't open yet, but at least they're going to like, they can't say that, that it's too late to do the interview because first thing in the morning and they go and they do the interview for me at the uh the the customs checkpoint and then like as she's getting to the end she's like you know what i'm really sorry but your your application it's combined with this apac card thing and for that thing you got a sign and we don't have the signature pad here. You're going to have to go over to the other terminal to complete the interview. And I'm like, I just can't do it right now because I've just been on a plane for 14 hours.
Starting point is 00:45:53 Hard no. And I also need to go home and repack because I need to be on another plane in 24 hours. And so now I'm going back a third time. But hopefully. Third time's a charm. Third time's a charm. Third time's a charm. Yeah. We will.
Starting point is 00:46:08 So when are we going to, you're going to be on the road. So are we going to be recording on the road or we'll find out? Well, next week I'm going to be in Austin and I don't think that'll be a good time to record. But the weekend after that. You'll be back in New York for a bit? Yeah. Okay.
Starting point is 00:46:23 For a week, which is a bit by my new definition and then we have to record a lot because I'm going to be in Hawaii for a week and then Japan for two weeks okay okay we'll figure that out well we'll finish this episode 100 to the listener
Starting point is 00:46:35 because I think what is it and I want to just say to all of the listeners or to the listener I heard on Reddit someone said that they find it weird hearing listener because they know that there's multiple people out there.
Starting point is 00:46:48 They're about to hear it again. Dear listener, I want to say sincerely, thank you for listening to this podcast. You know, whenever I go to a conference these days, I tend to have a couple of people come up and tell me that they've listened to the podcast and how much they enjoy it and that they feel like they're getting to know the two of us through the podcast.
Starting point is 00:47:11 And that really warms my heart. I think that's sort of what we were going for, for you to feel like you're in the room with us, just chatting amongst friends. And I hope that you've learned something. And I'd like to think that we're getting better at this. And I hope that you'll continue listening because I think we've got a lot of great content still to come. The chaos continues.
Starting point is 00:47:41 I can't remember what that quote was. Chaos with sprinkles of information. I think that was what it was. That's still, or a discussion with Sean. If we had a billboard, if we had a billboard, that would be the quote, your quote. Chaos with sprinkles of information. Yeah, and I'll say, I think we do,
Starting point is 00:47:56 I think 50 episodes ago at episode 50, I had this little bit where I say, I don't like plugging for, you know, it irritates me to no end when other podcasts say, give us a five-star rating. And I was like, it'd be one thing to ask for a rating, but why are you asking just for five? Anyways, but once every 50 episodes, we do do our little plugs. Feel free to read.
Starting point is 00:48:15 I mean, we already get like people retweet and stuff, but if there is one episode you want to retweet, you know, retweet it. If you want to leave a review of however many stars, you know, or I don't even know how reviews work. I don't think I've ever left a review. But feel free to share with a friend. And yeah, more stuff to come over the next hundred. It also warms my heart.
Starting point is 00:48:37 And maybe tweet at us what you want to see in the next hundred episodes. Yeah, yeah. Twitter's the best way to request stuff. But if you don't have Twitter, you can always go to github email does the podcast have an email i mean we do but i already have i have something new i have six email accounts and i like email is not the best way to get a hold of and i don't know definitely of me i'm not sure about you but um like twitter and github are better like someone opened an issue once and i made a topic request or like a um had some feedback and like
Starting point is 00:49:13 yeah well definitely i i have to interact with the github every week we love github yeah because of the website um anyways thanks for listening uh i'll try and figure out how to work this soda stream thing and give you a better review next time but uh my review so far is i don't know i don't know how it works i you know i've tried the soda stream thing i i don't like the taste i've tried it before yeah it's not the same even if you do get it to work yeah yeah but but maybe you will yeah maybe you will all right all right thanks for listening we hope you enjoyed and have a great day

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.