 All right, so I'm here with my buddy Randall. We are at KCDC 2019. All right And I am here with Hunter from Veteran Home Loans. I'm here with my buddy Brian I'm here with Cory from Twilio. Happy to be here. We're here at KCDC and we're gonna play a little game of creating the perfect programming language. All right And we're gonna play a little game of creating the perfect programming language. What programming language do you normally use? C-Sharp. Typically Java. C-Sharp. C-Sharp? Yes. Why? God I didn't even think about it Maybe I should have thought about it. Python is my preferred language with probably Go-Lang and then JavaScript being a close second Okay, why do I love C-Sharp? Because it's so versatile. So the way this game works I've got 12 cards here with features of programming languages and you get to pick six. You are gonna have to pick out of these 12 All right, which features you want your perfect programming language to have? You pick one and then I get to pick one and if I pick one it means that you can't have that feature But every time you pick a feature I take one away And if I take one away it means your language has to have the opposite of that. Oh, okay. So choose carefully. Okay All right, so here we go. You take the first pick. So what is your most important feature for this imaginary programming language? Most important features as strong and friendly community. That is that is a good choice. Yes I'm gonna say cross-platform. I'm gonna do this because vibrant library ecosystem Python definitely has this and it's amazing. So I'm taking that. My first choice is gonna be helpful error messages. It's definitely something that you run into problems a lot. If you're gonna take helpful error messages, I'm going to steal away from you real-time debugger. No, okay. That was my next choice. I am going to take static typing and now you can't have it. Oh, that's that's hard. So I'm gonna pull package manager. So built-in package management is no longer a feature of this language, which means you're gonna have to have third party package Hey, that's why we have a strong and friendly community. I'm gonna steal the interactive interpreter Now your language does not get that's all right. I rarely use the repo. Anyways, whatever. All right, let's see What is your next most important next? See this is tough. There's a lot of things. I'm pretty nerdy about the next most Important thing. Oh, you know what we need? Real-time debugging. I'm gonna grab that. Yeah, I'm gonna say debug. Real-time debugging. Yeah, all right. Built-in package management though This is actually great. So I'm gonna take this. If you're gonna take functional syntax, then that means you're gonna have to have a dynamic typing language then. Oh So I'm gonna take job availability now you don't get to get hired anymore for this perfect programming language Oh, I didn't even see that one. Yeah, I didn't I look my eyes literally glossed over that somehow, okay I'm gonna take away the interactive interpreter. I'm gonna take away your interactive interpreter Oh, you have real-time debugging, but you have to you have no raffle. You have no raffle Next most important feature concurrency cross-platform Built-in conferencing. I'm taking away your static type. Oh damn it debugging Concurrency support. I'm gonna take away package management. Oh, I'm going to take concurrency because hey, that's pretty cool Hey, you know what? This is getting fun functional syntax Vibrant library ecosystem. That is a good choice If you take the library ecosystem, I'm gonna take away your community This is no longer a cross-platform language And I will also take Static typing. I know you have functional language, but you're gonna have to get away without using closures now Which is gonna be a challenge. I think so I feel like JavaScript people watching this video are gonna get angry if I don't pick closures or functional syntax, but There's a lot of JavaScript people who hate me already So functional is pretty much the range right now, but I'm gonna say error messengers are more important I will take closures All right, JavaScript fans rejoice closures. Well, then let's get a vibrant equal system going I took real-time debugging and I'm also taking away your interactive interpreter So you're now you're gonna have a real hard time running these programs But it's good because my error messages are super clear. At least you've got helpful error messages. Yep You know what? I'll take the helpful error messages employable or functional syntax at the end of the day I want to be paid So I'm going to pick employable. I'm gonna take helpful error messages Okay, so next I'm gonna go with Vibrant library ecosystem that means no job. No jobs There you go. All right. So what do you end up with? We got a language that is got a strong and friendly community, which is great In a vibrant library ecosystem, which is phenomenal right because the community is engaging and helpful and all things We use a functional syntax that has built-in concurrency support. That's amazing We get real-time debugging and super helpful error messages This actually does make me feel like this could be a strong a strong language I mean, you may not be able to get a job, but you may have to use their pretty package managers But overall, it's a pretty good language. This feels like a good one. What did you end up with? What is your perfect programming language? All right, so it's employable great error messages Vibrant library ecosystem. I think that's that's critical cross-platform. That was my number one. Yep real-time debugging Yep, and then concurrency support. Would you say that Java has all or most of these features right now? I would say that yeah, I would I don't think I missed anything. I think the error message. I think any error messages could use help Okay, so this language according to this terrible trade-off exercise you jerk has a vibrant library ecosystem That's pretty cool built-in package management That's also pretty great, right? It's cross-platform So won't just run on like Solaris 3.2 or something built-in concurrency support So we can you know go web-scale with this thing closures So that's fantastic, and then finally helpful error messages So in the event we do somehow write a bug we can recover on our own without the help of a strong and friendly community So how close does this end up to being C sharp then? Well, not quite what you're used to. No, it's not okay. It's fine. It's good to learn new languages Yeah, okay. Well, thanks for playing. Thank you so much, dude. That was fun. Thanks for playing the programming language game I hope you happy with your perfect programming language. Bye everyone