Scott & Mark Learn To... Pick a Programming Language - podcast episode cover

Scott & Mark Learn To... Pick a Programming Language

Nov 13, 202424 minSeason 1Ep. 4
--:--
--:--
Listen in podcast apps:

Episode description

In this episode of Scott & Mark Learn To, Scott Hanselman and Mark Russinovich dive into the quirks and philosophies of programming languages—debating the purpose of small languages, like Erlang, versus giants like JavaScript. Along the way, they discuss whether modern languages with hindsight (like Kotlin) are inherently better and reminisce about the good old days of writing code in C, Delphi, and even 6502 assembler. Mark reflects on transitioning to Rust for system-level code in Azure, marking a deliberate move away from C/C++. He highlights Rust’s ownership model, memory safety, and enforced concurrency as the game-changers. Meanwhile, Scott is poking fun at the oddities of language trends, including Python’s rise to dominance in machine learning.  

 

Takeaways:    

  • Rust’s key advantage with enforced memory safety 
  • Python’s dominance in AI due to its robust ecosystem not just its language features 
  • Why programming language selection is driven by ecosystems, tools, and personal preference 

   

Who are they?     

View Scott Hanselman on LinkedIn  

View Mark Russinovich on LinkedIn   

 

Watch Scott and Mark Learn on YouTube 

       

Listen to other episodes at scottandmarklearn.to  

         

Discover and follow other Microsoft podcasts at microsoft.com/podcasts   


Download the Transcript


Hosted on Acast. See acast.com/privacy for more information.

Transcript

Did we... you and I riffed on Pick a Programming Language in one of our talks? The one on Zoom it. Yeah. Because I was like, why don't you just write the whole thing in Rust? Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. All right, let's talk. Let's do it. Are we started? Is this the thing? Are we live? Was that a show? I'll just open it up. You want to open this time? I don't know how to open. Oh. You open like this. You say something like, hey friends, I'm Mark for Cinevich.

Yeah. There you go. Yeah. More of Graviton. And this is my other friend, Scott Hanselin. This is Mark and Scott Learn To. Mark, I want to pick a Programming Language and I met this guy who was a professor and he was a C-programmer. Kind of like the original curly brace line. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Can R C, which way do you put your curly braces this way or that way? These are the big... No, there was no this way or that way, it's the can R. There was only that way. The way. The way. That's the thing.

Correct way. Yeah. See, there's a thing right there. That's a whole conversation about where to put your curly braces. But then he discovered Kotlin. And I got me thinking about like, is that going to win? Is that the language that's going to win? Because I have another buddy who discovered Irlang. And I think it's fair to say Irlang is not going to win. But then what does winning mean if you're picking a Programming Language? I agree. I don't think it's a winning thing. But I do think that there's languages for different purposes.

One of the things that we have a dividing line on in Azure and generally at Microsoft is systems code versus non-systems code where systems code can't tolerate a garbage collection. It's more real time needs to be more predictable. It needs to be low resource. And we've traditionally you see C++ for that at Microsoft. So you're using systems code, but it's also coming down to Malac and Free or let someone else do it, and we don't trust that in the kernel in Ring Zero. It's not that we don't trust.

trust them doing it. Of course garbage collectors are fantastic because it eliminates a variety of classes of memory safety problems. The problem is performance and predictability. Pauzes. Yeah. Not knowing when they're going to happen. Exactly. Yeah. Everybody wait. We're doing a GC. Yeah. Okay. And also memory consumption because you're sitting there accumulating crap that you don't need, hence the GC. So you can't all of a sudden, hey, I need more memory and let's go

to do a GC to get it. It's just in the middle of responding to something that needs to be real time. So that said, I think then there's the non GC languages and there's the GC languages. But you called it out. You said system code and non system code, but it really comes down to GC versus non GC. Well, that you map onto system code, just non systems code. Right. Okay. And there are many of them, but why are the only ones we're talking about

putting in the system are C and Rust. Because those are the only mature, non GC languages. And I say mature, meaning there's an ecosystem of tooling behind them and packages for those languages. Did I ever tell you by the time my son and I went to Finland? No. So I take a 16 year old to Finland and he notices that this finished language is weird. I've told the story before. It's a weird language. It's from Mars. It doesn't fit into the

language tree of languages, but the fins. It works for them. They love the language. And he said, because he's 16, why do they bother? It's not going to win. And that was a very practical, pragmatic thing. It's the kind of weird stuff that programmers on YouTube and Twitter say, why does Erlang bother? Why does Scala care? They're not going to win. They should all just do JavaScript, right? JavaScript has become the English language where it's

like this weird language that is stolen from all the other languages. It was not designed. It just happened. It's not the one we deserve. It's the language that we have. So just as English is this crazy, bastardized, colonized mesh of a language. It's a big cafeteria. It's a mall in Midwestern United States of languages. JavaScript is that way. English is that way. But finish, they feel very strong. They've got a purity of language. They

can do, you know. So I told him, well, it's not about winning or losing. They like it. It makes them happy. They can do poetry in it. So let the small languages exist. Does that analogy do you think work towards programming languages? I think so. I mean, so first of all, I want your opinion on this. Do you believe in there's some languages that are better than others? I think that languages that have...

And I'm talking about programming languages, right? Programming languages that have hindsight. I think are better. Like to Kotlin's credit, it looked backwards and it said we're not making those mistakes again and did other stuff. Now, they might make other mistakes. But as a general rule, I think Kotlin is demonstrably better than jobs. Are you saying modern languages are generally better than older languages?

No, I wouldn't say that because I feel like things that C did and C++ did nailed it on the first try, but it got resolved later in different versions. But modern languages that have thoughtful hindsight, yes, are better than that because we know more stuff than our forefathers and foremothers. All right. So I think we need to answer a question before we move on discussing the philosophies of programming languages. Oh. And that is what's your favorite programming language?

So, unfortunately, it's C sharp because it's the language... Why is that unfortunate? Because I want to make sure that I am exposed to a diverse group of languages so that I'm not being blinded and missing something. People will say, oh, handsome and like C sharp because he works at Microsoft and they pay him to like C sharp. Right? But I started in C. I started with pet sold and C. Well, actually, no, I started in

6502 assembler. But, you know, by the way, I want to talk about that too because that's I started around there too. Yeah. So like I always talk about like stick shift versus automatic. Like I started writing, driving stick. So it's like commoner 64, 652 assembler, then C++. Wait, you skipped basic. Oh, yeah. Well, so basic was an interesting one. I didn't even think about basic as a language. The same way I didn't think of logo as a language. logo was the turtle.

Language where we'd move the turtle around. When I learned basic, I didn't consider it a real language. I thought it was just a toy that they used to tease children. But then when I would did visual basic, it clicked for me because like visual basics thing wasn't the language. It was the wind forms thing. The drag a button, double click button. I thought I just saw somebody said visual. They got visual basic working. Oh, yeah.

It's back. There's a whole resurgence of visual basic delivered. But then Delphi. So I was huge in Delphi and I would write Delphi and thunk into inline assembler. So I shipped commercial products that were written in Delphi. Oh, yeah, started. I've got, I've actually got one. Yeah. Where's my, I've got one of my first applications. See now I'm going to jump up and people are going to have to cut this out because I'm going to grab a piece of software. Why they have to cut it up.

Well, because you're looking at my butt. Probably right now. I'm not looking at it. Well, you're trying not to. I'll look at the rest of your office while you're doing that. The rest of my office while I look for my piece of software. Because in 1990, something, something, I wrote a piece of software called foolproof. God dang it. It's around here somewhere. But it's written in, it was right on the edge of Windows 3.1 and Windows 95. And we had to ship a

16 bit version and a 32 bit version at the same time. But we didn't want to write the middle part of the code twice. So we thunked around and then I needed to write a UI in Delphi. So it was one of those mishmosh type applications. And we had a turbo vision, DOS version, calling into our main shared library. And then we had a Delphi front end for Windows 95. And then we had a win 32 C front end. It was called foolproof software. And it was meant to keep kids from breaking into the librarians

computer in the, remember that? Yeah. We would sneak into the library with a boot disk and get away from you know. So we wrote a boot sector virus that was a formal, literal boot sector virus to prevent people from booting into the a drive without holding down certain keys. But the front end of that was written in Delphi. Sorry. My Delphi is great. My Delphi stories. So we're writing

Windows administration software at Winternals for like, diskb fragmentation and recovery. And the way that the UX standard for management tools was MMC, Microsoft Management Console, which was a C++ Com driven platform. And anybody that's done that knows what a nightmare it is. Oh yeah. And so I'm like, I'm not dealing with this. So I figured out how to get Delphi working so that I could write UX code for MMC snap ends using Delphi. And it was much much better experience. Yeah.

Why is it that the Danes are so good at writing programming languages? You mean the Danes? Like Anders? Well, there's the Danes. I think there was one other Danes. Yeah. But yeah, I'm just saying like Anders did Delphi and Jero Pascal and C sharp and I'm asking co pilot, why are the Danes so good at making programming languages? I'll see what it is. So the idea of my son trying to get the why would this thing win? Like, these kids want things to win. Strewstrap is Danish.

Yeah. Well, C++ then. Yeah. Yeah. I was talking to him on the LinkedIn. He just put a book out. Just talking to him a couple days ago. I was C++. Yeah. Yeah. Like the whatever final version updated version. Yeah. I have a thing. I want to get it on the podcast. But like he was like, yeah, why don't they win? So like JavaScript people who are like bought in on JavaScript in the front end of the back end are like, why do you bother with these other esoteric languages?

And I think it's just because there's joy in not having a monoculture around programming languages. I think that's part of it. But there's also different, there's stylistic differences between them and people have stylistic preferences. But that's why I think the language, human language, parallel works. Yeah. Because there's like words in Spanish that are paragraphs in English. But you just pick the right word, you know, or like, yeah. The way we steal like umami.

By the way, there was a study recently done to look at the information density of languages across the world. Yeah. Because the belief is that languages that are spoken faster are transmitting information at higher bandwidth than ones that are more slowly spoken. I remember this. I saw this. This is where you're going. Yeah. And the answer is drum roll. They're all about the same. They're all about the same. Because they have to use extra words. My wife's language, my wife

speaks northern end of belly, which is a goony language that sounds like Zulu or Esekosa. And when she speaks end of belly with her mom, it sounds unbelievably fast. But it's because they only have a couple hundred thousand words. So they'll end up using a bunch of extra words to say stuff that they could have used loan words for. And that's why I think English, other than colonialism, is so popular

as a language is that we're unapologetic about stealing words. Yeah. So you're just like, oh yeah, meet you in the foyer. Oh, you the foyer? You know, we'll just make, they'll just steal that word and make it into English word now, rather than come up with a room for the entry way to the front of the house. You didn't ask me a line line, favorite language. What's your favorite

language, Mark? I don't have one. Actually, and I really don't, I'm pretty agnostic about it. I'll use whatever what I used and still use a lot is C and C++ because the system turtles tool suite are all written and C++. Yeah. Like you and I did that presentation on Zoom it, which with the infamous 5,000 line. Yeah. If folks tolerate this podcast, you might also tolerate our talk we did. And I said, let's go and fix a bug and zoom it. And he's like, oh, yeah, I'll give you access to

the code. I felt very special. I felt like I'd been asked into thinking this back room archive or whatever. The elegant code that is Zoom it. And it was one main dot C that's like 5,000 lines. Yes, speaking of the code to zoom it, I announced this just recently that Zoom it is going into power toys as a power. So the salsa in power toys as well as a standalone. So yeah, which means it'll it's a it'll be open source. You have secured your legacy. Yeah, I've made it. You finally made

your own power toys. Actually, this is going to let me show you this. Now, he's one in a way. Okay. Okay. He's run off somewhere. I'm coming back. I mentioned whoops. I mentioned this in the I think in that talk, but I got to Microsoft in 2006. I'd already written Zoom it because I'd written that in the early 2000s for helping doing presentations. And at this internal conference called whips, which is the Windows hardware something conference. I can't remember. Yeah, they

renamed it. It's called reverb now. Anyway, so I got invited to go there and then they have lightning talks. And I got invited to give a lightning talk. So I gave the lightning talk on Zoom it because I figured it'd be good for people to know about its existence that give presentations. They could use it. And they give they were back then they gave awards different for different things at the end of whips. And I got this award, which is the least likely to ship award for Zoom it.

Is that a gong? Can you hold that up and give us a little bit of a gong? We is this we've we reached the part now where we run to our shelves and grab our awards and then hold them up in front of the well, this one was relevant. I thought oh, excuse me. Well, then I'm going to go. What is your channel nine award? It's my channel nine award for best podcast. Wow. Yeah, well, I want to point out that it's not this one. Just throwing that in. Not this podcast.

No, not this podcast. We are awardless. That hurts. Well, you know, it's only been a couple of episodes. So lower your expectations. Anyway, my point was going back to my favorite language. I write. Yeah, still a lot of CC++. I don't really like CC++. It takes a lot of brain energy. But I've been doing a lot of Python the last couple of years because I've gotten into AI research, which is if you want

to have an example of basically your force to use a language for that. Okay. So because the ecosystem because of the ecosystem, that's the thing. People in my opinion incorrectly assume that a programming language takes over a space because of some unique feature about the programming language. Sometimes that's the case. But as a general rule, they all have similar keywords. They're all

congealing into lists and collections and stuff. But why did Python pop 10 years ago in ML and data science and why did R and Julia pop and why did like C sharp get why did I not become the language for neural networks? It's more fun to say Python. Yeah. Easier to Google. I don't know. That was my explanation too. But in any case, I really, I just mentioned that. But I think it's

probably true. It's probably true. But I really enjoy Python, which has very similar characteristics JavaScript in terms of its a repel language as well as a language that you can write and ship to it with. I was talking to Guido about Python and I was asking Guido who invented Python. And I said, you know, do you feel like you're on action? You want to mention which Guido you're talking about? Ben Noshm. Ben Rossman. I asked him if he was an expert in Python and he says not

anymore. And I thought that was such a cool thing to say because he like wrote the thing. But it's beyond him now. And he's like, no, I'm learning stuff every day. And I thought that was wonderful. That is. So how would you pick your programming language though? Did you pick a language or do you look at the ecosystem and then follow the language? I think if there's an ecosystem like for AI, you can't pick. You just got to use it. You go to Python just because you have to.

There's other places where, hey, I'm going to write some new tool. What do I use? And this is where I go. If I'm writing a systems tool that can't garbage collect, I'm going to use rust, not CC++, which you can make safer. But you're sworn off seeing now like your rust, you'll go rust found a few years ago in Azure. I declared a policy of no new CC++ code. So new code in Azure, if it's system code, like we've got in our boost accelerated offload card,

which has Linux on it and the agents there. Some of those were ported over from the host, which was Windows based CC++ code for systems. We've been rewriting those in rust and new ones are written in rust. But for inons, not, you know, if it's not a systems code thing, right? Then it's like, okay, C sharp Python go maybe rust even. Okay. So why and why did go not become rust? Why is it? Because it's not collected. Because of the collection again. But then rust and

rust is primary claim to fame is its ownership system. Right. So no point or dereferences. And for memory safety and concurrency safety data races forcing you like, you know, you just can't get unless you use unsafe keyword. You cannot create a memory safety problem. As opposed to CC++, which is we'll try to stop you from doing it, but can't guarantee. Footguns abound. Yeah. Cool. You probably pick programming language.

This boy. That's how I pick. How do you pick? I guess you have one choice. C sharp. Sure. So I will say that is a thing that I'm bad at is I will fail at C sharp before I'll pick another one for a lot of stuff. Like this. You just try to force it. I just kind of like, how can I p invoke my way to glory? You know what I mean? Like extern C my way. There's a great example of some really cool work. Have you seen Anthony Shaw's C Snakes tool that he's been working

on? No. Dude, this is hot. It's C like the word C Snakes. And it's meant to be like a Python, but C it's a snake. It's like a whole thing. So Anthony Shaw is a god and he spun up a little V team. He did a lot of really great work and then he got Guido and a bunch of other folks to do a hackathon. And it lets you run Python within C sharp in process. So it will use source generators.

And you have a Python. So I just take marked up PY included say literally using Python. And then a source generator looks at the Python, parses it and creates a mirror source generator version of that in and you just call it. And it allows you to then from C sharp consume Python data science libraries. Just pip them in and start calling them like PyTorch. That's the goal. You say goal like not yet. Yeah, well, yeah, they got that working now. I'm just saying that

there's probably edge cases we haven't thought about. But the goal is PyTorch. The goal is not anything. So what Anthony and the team are doing that I think is very thoughtful is coming up what a way to do this but constraining it and saying we're not trying to like iron Python and Python.net and all the other attempts to make a Python that tried to be.net. This is running Python in process. Yeah. And then just marshaling data across it. I'll check it out. Yeah, it's cool.

C snakes. Check it out. Cool. Well, I've learned something. I think I think that's a sure I always take. Go forever. One last thing I think. Well, it's all the languages that you've coded in in your life. That's a good question. It's good. It's good. It's good. Mark asked questions. Logo basic. Correlin. I did. You do. Logo in school. Like in like in elementary school. 1983. Yeah. 84. Yeah. There was a robot on a big piece of butcher paper with a

Sharpie. And it was right. Spire graphs. Yeah. So we write spire graphs and flowers and stuff. Yeah. With a big long ribbon cable because there was no Wi-Fi or wireless. So we'd have a 20 foot ribbon cable and we make the robot draw. So yeah. So logo 6502 assembler during the demo scene in C in in the column 64. 8086 assembler. C. Petzold book. C++ with Borland and Owl. Then Turbo Pascal in DOS with turbo vision. Then Delphi with inline assembler. Then visual

basic 3456.net. Visual basic.net. Then C sharp. Visual basic.net was the gateway drug to C sharp. Python. Haskell for a time. What? That's I was taking a class on functional programming. And that was the one they wanted to do. So then it was Haskell old camel. And then F sharp came out. And then I was like, ah, having that base maybe understand F sharp better. And then then all the little utility ones that you learn that aren't really programming languages.

Yeah. And then JavaScript. Yeah. But I would say my JavaScript is not idiomatic because it moved so fast. My JavaScript is stuck about five years ago. Yeah. And then when JavaScript started taking like async and await and promises, that's when my JavaScript got a little goofy. And I just said screw it. And I went to TypeScript. Yeah. Yeah. Yeah. I think that's it. There's probably a couple more. But those are other peripheral languages. Was that an acceptable list? Yeah.

It was great. So great. Let's go. What about yourself? Did you list yours out? We don't have that kind of time. People are going to be like checking their watches. All right. Yeah. I got really fast languages. My first one was basic Apple 2. Apple soft. That's good. Machine language for 65 with 2, 80, 88. A bunch of assembly languages for other processors. Turbo Pascal. Delphi. Delphi or Delphi? I'm going to say Delphi. I'm

going to own that. All right. Delphi. Yeah. Cc++. Fortran. I've ever did Fortran. Yeah. Do that in my master's program. And then at CMU, we had programming language class. It's small talk. Ditto a lot of Lisp. Oh, Lisp. Yeah. Missed that one. Yes. That did that. All the parentheses. Car and cutter rust. I've talked about Python, JavaScript. I think that's it. Okay. Which one do you dream in? I still probably dream and see. Yeah. Yeah. I think I dream in a non-specific

preloaded track. And abstract curly bracelet. Because I was looking in an IL. Kotlin's, yeah. Like I looked at Kotlin. It's like you squish your eyes. It's everything. It just depends on where you put your braces. Yeah. All right. I don't know if this one had value or not, but I enjoyed it. I learned a lot. Yeah. I did too. Yeah. That's cool. Be sure to check us out at markandscottlearn2.com. Or if you're sassy, markandscottlearn.to, which I thought was a nice

a nice gift from our producer. Appreciate you getting that for us. Be all free to, oh, Scott and Mark. I forgot. I have to correct myself. It's Scott and Mark. You're not going to find anything at those other domains. We can even buy those out. Scott learns. It's just Scott and another guy learn to do some stuff. We're going to need to buy those domains and redirect them to the canonical, canonical domain. But check us out like and subscribe and help us out by sharing

this on your favorite social network that's not evil. And we'll see you again next week.

This transcript was generated by Metacast using AI and may contain inaccuracies. Learn more about transcripts.
Scott & Mark Learn To... Pick a Programming Language | Scott & Mark Learn To... podcast - Listen or read transcript on Metacast