0:00
Hello everyone, welcome back to the Cloud Show
0:11
I am not at home today, I am somewhere else. I have lent this studio graciously by
0:17
my friends at SSW down in Australia. I am not again at home because I'm at conference
0:23
I'm at NDC conference in Sydney. I urge everyone to take a look at NDC conferences
0:28
They're always really good. They always have really great speakers there, and the food and everything is usually really, really nice
0:35
I have the opportunity now to lend the studio again, thanks guys, and sit down with a good friend to talk about
0:42
some things related to language because I have a treat for you
0:47
I'm sitting down with no one less than Mads Torgersen. Hello, Magnus. Thanks for having me here
0:53
Hello, Mads. It's so good to see you. It's wonderful to have this opportunity to sit down and chat
0:58
It is. Obviously, talking to you, it's going to be talking about languages
1:03
I don't know if you guys know this. If I describe Mads to someone else
1:08
I would say, he's not the father of C-sharp. He didn't invent the thing
1:12
He's not the father of TypeScript either, but maybe the mother because you care for it
1:18
You take care of the language. Is that an appropriate description? No. That seems a little gendered to me
1:24
Well, maternal. I'm his legal guardian. Legal guardian. That's who I am
1:29
The legal guardian of the languages. Brilliant. That's mostly a joke, of course
1:35
but it sets context. You take care of these languages in Microsoft and evolve them. C-sharp
1:43
C-sharp. Yes. C-sharp. Cool. C-sharp is your baby-ish. What I want to talk to you about is what's in a language
1:56
Why do we care which language we use and what's appropriate for different scenarios
2:03
Just because you have C-sharp doesn't mean that everything, the C-sharp hammer, everything is a nail
2:09
No. You might need to use other things as well. That is true. C-sharp
2:14
tries very hard to be a general purpose language, and it is being used for a surprising number of things
2:19
Certainly, I think the original inventors of C-sharp more than 20 years ago would be surprised to see
2:26
all the things it's being used for today and all the platforms it's being used on and so on. That's probably true
2:30
But even so, there are definitely characteristics of C-sharp that make it more well-suited for some things
2:37
and other languages would do a better job elsewhere. So, there's still a little bit of that
2:43
So, if I'm a project manager, and I'm maybe not so technical, not necessarily
2:48
I can be, but what if I'm not super technical, and my engineers, my developers are coming to me
2:54
excitedly talking about which language to use for the project. How do I even approach to evaluate something like that
3:01
if it's the right fit or not the right fit? Well, first of all
3:05
I think most things, to be honest, most things are the right fit
3:09
Most things are good enough. That's a point that's been made at this conference also
3:15
People get very intense about this is the best technology, this is the best technology
3:22
and most things are actually good enough. I think there are definitely technical differences
3:28
and sometimes they're crucial, but mostly they're not. You want something, typically
3:34
if you're building bigger projects that will be long-running, and where there's a number of engineers involved
3:43
Well, you want to use a technology that's stable, that has strong backing
3:47
Like C-Sharp. Like C-Sharp, but also like other things, that have probably a great future ahead of them
3:56
and where the investment of people, A, you can find a bunch of people who are already experts
4:03
but the investment of people to then learn it if they don't, will pay off for them as professionals as well
4:10
and for you if you keep them around. That's a really good point. So, if it's a big investment you're making
4:16
I think you'll just want to make sure that you're not running a big risk
4:20
Then if you want to play with more exotic things, or newer, or smaller
4:27
do it in smaller projects. It's interesting that that applies to languages as well
4:33
I didn't think about that really, because I have an example of something that
4:37
zooms out just one step from that, because there was this team that they were building an app
4:42
and they were setting that up to run in a platform somewhere
4:46
and then they came with the specs, like here's what we did
4:50
It almost felt like they had taken great care to use all the things that were not standard
4:58
They had every tool, and everything, and every technology, all mashed up
5:05
and that team was probably excellent at managing that, but to hand that over to someone else to operate it
5:13
and then the longevity of that project, maintain this. That's ridiculous. That would just never work
5:20
That's where you standardize. That's what your point is. You should be thinking about the longevity of things
5:28
Yes, you definitely should. I'm not here to say that you pick whatever you like
5:32
C Sharp is great. Yes, you would pick C Sharp. I would pick C Sharp. Yes
5:37
You don't have to. I would pick it for most things. There are probably things where I wouldn't
5:41
But we try our best to strike that balance of being stable and reliable
5:52
being a good investment for the long term, but also investing heavily in its evolution
5:57
and that's sort of my part of it, so that it doesn't gradually disappear in the rear view mirror
6:04
and become like legacy that in 10 years' time, you'll need to, you know
6:09
there'll be fewer and fewer C Sharp developers, and they'll demand a high price to maintain your outdated thing
6:16
because it was written in C Sharp. We want to stay a living language that does the things modern developers need to do really well
6:25
And being that a living language that should be sustainable and should hopefully attract many users in many years to come
6:34
is that, I mean, that's the great challenge, I suppose, but is the language going to evolve forever
6:40
Things will be changing, so the language will always evolve? I, you know, yes
6:48
I mean, there might be, look, some things can happen. You know, there could be like a paradigm shift in the industry
6:59
where there's a turn that C Sharp just can't take. Like, sometimes there's this paradigm shift, like the cloud
7:06
It would be sad, though, like, remember C Sharp once upon a time
7:10
that the thing we're not using anymore? That sounds so sad. Let's say that we all do quantum programming 20 years from now
7:16
C Sharp can't do that, and it can't be modified to do that. Most other program languages wouldn't, right
7:20
That would be one of those things, a mass extinction kind of event. Oh, sure
7:24
But, and then the other thing that can happen, of course, is that at some point it becomes too hard for us
7:31
to keep evolving the language in a way where it still kind of hangs together and feels consistent
7:36
That point is something that I think we would all have thought we had reached long ago, but we're still not there
7:42
Still adding new features. Somehow it still really works out, and people are still really happy
7:46
with the way that we integrate new features into the existing fabric
7:50
And so, even though I keep worrying that that point will happen
7:54
because then I'll have to find a new job and, you know, it just seems to not happen
7:59
We're trying to be just really careful that we don't break anything
8:05
that we don't, like, make big mistakes. We're trying to be really thoughtful about what we add
8:10
but then still being really eager to, once we've established that this is going to be a good, solid thing
8:17
to actually do it and not be too cautious and not kind of fall off the wagon
8:21
So, maybe a contentious question, but potentially, let's check. I'm going to give you an option, though
8:30
Option to add anything to the language right now that you wish you had, just be able to add
8:36
or maybe just remove something that you feel is in your way
8:40
I wish we hadn't done that. Like, pick something. Okay, well, I think I'll pick one of the latter
8:49
But things I wish we hadn't done in hindsight... Sure, because you don't know where we're going exactly
8:57
I don't think there are things that are completely terrible, but I could go all the way back to C Sharp 1 and say
9:03
I wish we had added proper function types instead of those weird..
9:08
This is very technical. Instead of weird delegate types that are like
9:14
some combination of function types, but they're also collection types. Do you know you can add two delegates and then you call it
9:23
and then you call two functions? You know, weird stuff like that. So, they're kind of things I would want to go back and clean up
9:29
Okay, but now it's hard to remove things after the fact. The thing is, you can't remove them
9:36
You could always say, oh, here's something better. Here's the new and better function type
9:41
But every time you do that, we have a massive ecosystem. Of course
9:45
We have our own big frameworks of 20 years that kind of go along with .NET
9:49
and then there's everybody who built things around it. If you say, oh, that thing that you have 100 million lines of code already using
9:58
you should use this instead. Like, who does that help? No, it doesn't help
10:02
So, there are some limitations. That's too hard. Yes, of course. Okay, cool
10:05
Well, we want to keep these videos short and snappy, and I don't want to take up too much of your time
10:12
And so, to be mindful about everyone here, and we're going to go back to the conference now
10:16
but it was lovely talking to you today. Mads, thank you for being on the Cloud show
10:20
Thanks for the opportunity. This was fun. Thank you, Magnus