Devreal

Past, Present, and Future of Scala: Clos...

Event: Scala by the Bay

SBTB 2015: Martin Odersky Panel on the Past, Present, and Future of Scala

Recording: SBTB 2015: Martin Odersky Panel on the Past, Present, and Future of Scala

All right guys, so let's get this started. It's been a long day. It's the final event of our third SCAL, by the way, conference. I hope that you enjoyed it. We see still, you know, a lot of you around here. And I think this is the first time in the history of the area that Martin is on the panel here. So we're pleased to have creator of SCAL on the panel. And the last one is this

So basically that kind of, you know, I was gonna ask everybody basically to introduce themselves and say what was the most interesting, most significant thing they did to SCAL. And it's kind of, you know, doesn't make sense because, you know, Martin invented this. So I'll ask a different question. So I'll ask everybody first to introduce yourself and let's kind of do it in, you know, one or two minutes. And basically say what is the most fun thing you ever did with SCAL? How about that? Don't choose me first. Oh, we're going left to right. Okay, good. Because I need a second to think about it

I think you're on the left, right? No, no, you're on their left. So, Bill Venner's, ScalaTest. And I do actually several different things. I do teaching so I get to see what people, what's hard for people. I really enjoy that. I do consulting. I do publishing, editing, writing. Those kinds of things are also really fun

But I think really the funnest thing is actually coding and doing ScalaTest because people use it and I work with them. And so that's it for me. I'm Julie Pitt and I'm co-founder of Order of Magnitude Labs and I'm on a quest to build intelligent behavior machines that are capable of intelligent behavior. And I would actually say that the thing that I have the most fun with in Scala changes probably week to week. And since my most recent excursion was in Scala JS, that was a heck of a lot of fun. So that was a lot of fun. Hi, Martin. You know me

I think there's lots of fun things I did with Scala. But if I should pick one, then I guess it's probably worksheets to work on worksheets to develop the concept because that's sort of, I've seen that puts it on a new level, the interaction with Scala and also the ease of use of how many people approach it. Eric Osheim, My name is Eric Osheim. I work at meetup.com as a senior software engineer on the data team. I've been involved in Scala open source for I guess about four or five years now. And, you know, again, it's sort of tough. There's a lot of things that are fun. I think probably the thing that has been most fun over the years was sort of the development of the compiler plug-in I wrote, Kind Projector, because it started out as this like really ugly hack

I mean, incredibly ugly, right? It transforms untapped trees. It's really horrible. And I never expected that it would actually ever be used in production by anyone, you know? And it just kind of kept going and going and there were kept being these, I was like, oh, I don't think I can solve this part. And then I figured out a way to do that. And so now at this point now, you know, it's got tons of features and people use it. And it's just been kind of a funny to see the whole thing unfold this way, you know? And for me, I think Julie's answer was really good because it changes a lot. But the one that popped into my head first was I wrote a something called a linkage disequilibrium calculator, which is used in genetics to figure out whether genes are related to one another. And at the time I wrote it, the scientist who tasked me with the job neglected to tell me that these things are always written as kind of batch operations

So I wrote it as a real time thing. I couldn't get it fast enough. I kept iterating over it and getting it faster and faster. And finally she comes back and says, how's it running? And I said, I can only do about 4,000 of these a second. And she's like, well, how long does it take to run overnight? And I'm like, no, you just do them right now. And apparently people don't do that. So it was kind of cool that she was as surprised as I was. That this thing ran in real time

So that was probably my coolest one. All right. So here's how this is going to go. So basically, I'll ask one starting question from each panelist and they'll answer it all again in sequence where we'll go in the other direction for fun. And then we collected a tremendous amount of questions. So when I started the survey several weeks ago and asked TypeSafe to basically email everybody, I thought, you know, I really want every Scala user in the world to ask a question. And we got about 60 questions, right? So obviously, like, there are more users in the world. So I wonder, you know, are people, whether they don't have questions or kind of, they can think of a good question

But this is an interesting, you know, thing. I'm going to probably send a survey why didn't you ask the question in the first place, right? And we'll see what happens. But we've got some really good questions. So thanks for sending them here. And what we've asked all the panelists to do is to basically look them over and select one question which they like and then answer it, right? So that will be the second question for each of the panelists. And then we'll open it to the audience. So we have two mics here. So once, you know, every panelist answers two questions, we'll basically, you know, open it up

And we have five awesome TypeSafe bags, backpacks to give as prizes for the best questions. So, you know, while you guys are asking questions, each of us will make some mental notes and then we'll compute the set intersection. of ordered sets, in a sense, if there is such a thing, right? And basically, we'll need to come up with an algorithm on the spot, essentially, to assign these bags to the winners. What could possibly go wrong? Yes. So here's the plan. So, okay, so the question which we prepared for each of you guys is should Scala strive to be a mainstream language like Java? So, a lot of folks, you know, you remember, you remember, you know, you remember, you know, you remember, you know, you remember, you know, you remember, you know, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you I think, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember you remember I don't think that the question is necessarily right, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember the word, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember you remember there's also, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember so, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember it's sort of strange, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember, you remember you remember, you remember Yeah, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so I keep my fingers crossed that something good will come out and once we have that, that will be a prototype, we have to sort of stabilize that and then at some point hopefully get that back into the Scala C compiler and make that essentially then a alternative backend. I believe that it will probably work that for a while there will be the choice of the new experimental tasty backend and the old one and then once we have that then hopefully we can essentially attack the binary compatibility problem but it will be will take some time. It's just that there is light at the end of the tunnel

I really hope there is. I think that there is a great idea. Thank you. Many, many years ago there was assembly and then came C and killed it and then it was like a king and then came C++ and like sort of killed C and then there was Java. So what is it in Scala that for it someone younger will kill it or it's inevitably is going to be king forever. I still know who is someone who writes all their code in assembly. So it's at least one person out there. And C never died

I don't think it's necessary that a language dies. Maybe we wish it had died. Go is trying to kill it. But I saw a good tweet the other day. Many languages are fighting the last war. But go is fighting the war of 1812. I'm sorry. I'm not I'm not anti go but that one did make me laugh

Yeah. Someone tweeted immediately. But yeah, no, I don't think that I think there's room for. I don't know what it is, but I expect something to eat at lunch. I didn't really I mean I figured something would would come along after Java, but I really didn't see what it was until it hit and I like I like that. Maybe it will be the first quantum programming language that kills it. We actually asked Martin one time appeared at one of our very early courses Dick and I did. We had him come as a cameo

And when he showed up on the screen it was just this dark figure like like a like someone who doesn't want to be known what his identity is. And we asked you like what what people be saying about Scala in 10 years and he's going to say well they're all going to be complaining about it. Which was a joke at the time but now everybody is complaining about it. And we all laughed. It's like oh this is so verbose right. But you hear all these complaints and I think it's because people are using it. And so they actually encounter things they wish were different or something. But it's a sign of its success

But anyway I do think it's something will come along. Hi I'm Vlad and I guess many would agree that we have this interesting dark corner in Scala world which is SBT. So can you shed some light into that dark corner and like if there are any future. I can take a quick stab. Yeah. I am I am Mr. I hate all build tools. I really am

Build tools in my opinion are just a detail of my job that I really don't care about. And they take far too much of my attention away from what I really care about which is writing the thing. Having said that the advances in SBT have made it almost bearable in my opinion. So the fact that you don't have to use the crazy fish bone operator anymore and some of the other stuff in there. I get on okay with it these days. I am not about to I don't know declare undying love for any build tool. But I don't hate it so bad. I can do simple things in it now

Sorry. I can do simple things in it now and before I just felt like. I can actually write custom tasks and do. Yeah. Many of the things that I want. The guy who can do that ends up being the SBT guy in the project so. I try not to get that good at SBT. So as long as I can just copy and paste then I'm okay with SBT

That's fine. And I want to say that you know people complained about it and I even talked to Mark one time. I was like does that bother you? No. But they complained about certain things but then everybody used it because they loved certain things. One thing that's great about it. Yeah. Just to be positive is the say constantly have everything on the path. Yeah

That's fantastic. I get a grapple with everything on the path or the test path. And the other thing that's great about it. That's which is the real reason I think people started using it was the you know was figuring out what to recompile. Yeah. And now you can get that with Maven with zinc. But you know. I like that

That's great. Those are great things about SBT. I like the continuous. Oh yeah. The tilde. Yeah. That's great. Yeah

If you know what the tilde is. Yeah. I mean so I was never a Java programmer before I came to Scala. So I have no even instinctual understanding of Maven or Ant or any of it. So I mean my experience was contrasting it with like make or something like that. And I mean I used to find SBT really hard to use. And I feel like there's been a ton of work in the last year or two. And suddenly I find myself just able to do it kind of

And like kind of like what Julie said. Nowadays the build file is a lot easier to get right. There isn't this white space formatting issue. Like it's not so incomprehensible. So like I can just read someone's thing, copy a few lines over and it just kind of seems to work for me. And now I'm using SBT plugins and it's a wild and crazy world. So I don't know. I mean I'm sure there are still problems

But I think the sort of oh SBT is bad joke. I don't really I think that's a tired joke. You know I don't think that's an interesting statement to make any more about it. You know like SBT can be hard. But actually I think people have spent a herculean amount of time making it better. So I'm mostly like neutral slash positive on it these days. I've never heard as many people complain as loudly about SBT as I've heard people complain loudly about Maven. So it's all relative

Where we are back at usages. Yeah. But I largely echo Eric that I think. It's been through a lot of rough years but lately it's been shaping up. It's becoming barely usable. Yeah. By the way that the canned version the thing I say to people when they're learning this is you don't have to use any of the less than equals operators at all anymore. All they do is unpack the thing that's inside one of those settings

And you can just say plus plus equals and say setting dot value instead. It's the same thing. Once you know that trick a ton of your stuff gets easier. That's the one helpful nugget I guess. Well I guess so my organization is saying basically we're kind of hitting our time limit today. So what we're going to do. Let's do one more question from the audience. If there is one

Then I'll ask each of the panelists to basically wish what should happen. Like the community we should do next year. And so next year when we get together for Scala by the Bay 2016 we'll check if that happened or not. Like what is the most important thing in the next year to assure the future and progress of Scala. Right. Like what should each of us do. What should kind of VPFL do. Right

So basically make kind of a wish slash you know resolution. And after that we'll you know go in order and basically assign you know prizes for the best questions. So if you have any more questions. Yeah. So my brother-in-law who has a degree in political science but knows that there are people out there going to these crash courses in JavaScript and things like that. Has asked me for my opinion. And I'm wondering if anyone has had any success stories with a certain book. I know the Coursera course is very popular

Or is there no hope and should I say go back to school for a CS degree and then come back and we'll talk. Atomic Scala. Yeah. Is the question that someone who isn't like a trained computer scientist or. I see a lot of people doing that and I've seen great programmers who had no CS background like philosophy background and they're just. So I think somehow this field you can actually. I know a certain genetic scientist who was fixing bugs in Scala's head stream and proving all sorts of stuff about that. And he was a genetic scientist

So no formal computer software training. Of course he was a smart guy. I think they picked it up somehow. Part of my question was do you have any success stories in terms of. Do you know what approach they took to learn the language. I'd like to recommend Scala but I honestly don't know where to start. I would say for somebody that's completely new to computers or never done anything computer science related. That having something that is

Has visual feedback immediately. So I would go back to. I keep plugging this you know Scala JS. You can learn Scala. You can immediately see the feedback in the browser. That really drives home you know. What is what is it that this person is actually doing. So I would recommend that approach

Well you could you could also. I have I have to give a nod to my former passion. Python is a very good beginners language. And you can get them hooked on Python. Then get them hooked on Spark. And then get them to make the Python Scala transition through Spark. Who can do all this here. No

Python. Okay one more question for the audience. Hi. My name is Bill Goldsworthy. So let's be quick. When I started learning software is when I changed into computer science right. That was my first course and the program chose Java. I was curious

All these years later I read the letter by Edgar. D'Eystra at the University of Texas saying why functional was so important. And it got me thinking maybe I should learn it. Is there been a increased adoption or readoption of functional programming. Sort of recent upsurge. And my second follow up question was. At what age is it is it appropriate to start teaching functional programming. Because I've got kids who were interested

And if anyone had any feedback on that. So yeah. I think indeed there is an increased adoption of functional programming. And it's. When you have new technology adoption you always need sort of draft the initial spark. That sort of brings it over the hump. And I think for functional programming. That was like parallelism and also distribution in data centers

Because then you're in particular the distribution thing. Then you have to deal with events. And then you want to wrap them in futures. But then you want to be able to compose your futures. And boom. You are. You have a monarch. Right? So I think that that was very very important

Now it is. I think a lot of people are drifting to it. Because they have realized that well it's actually safer. It makes you happier. It. You have fewer stupid bugs. And. You can actually be more productive

And more happy at the same time. So these things are then sort of secondary effects. Because you can't sell people initially on. You're going to be happier doing that. Because they won't believe you. will need sort of a hard technical reason. And that reason has happened. And now we're sort of in the second stage

That I think. It's almost generally accepted already. That functional programming is. a very nice and good methodology. And we should be doing more of it. As to teaching. Yes. I absolutely think we should

think hard about. Starting to teach with functional languages. At my university we're currently. Thinking about how that could happen. There are other examples. Like there's Trinity College. Michael Lewis has a very successful course. In Scala

There's Kai Horstman here. At San Jose State. Who does the same. What these people usually do. Is they. You just sit people in front of a REPL. And let them work with lists. Or even arrays

It doesn't matter. You just don't need to. Stress the mutual. Mutable nature of. arrays. And just let them experiment. With these things. And one interesting thing

I noted. Is that people usually say. Python is actually a good first language. Because it doesn't have the types. So what I heard from Michael Lewis. Is to say. Well if you start that way. With the REPL

Then types are not an issue. Because you don't write them. The REPL. Will give you back the types. So types actually help. And I think that's a great way. To get started with it. And so

Nowadays I would actually recommend. Yeah. Start with REPL. So worksheets. And plunge head first. Into functional programming. So there's this great website. Called light bots

And it teaches. Recursion to five year olds. So I think there's no limit. To you know. How young we can start. With functional programming. Can you repeat that? I believe it's called light bots. Like as in robots

Okay. You have this little. Robot. You're trying to move around the screen. And you have to light it up. So. Yeah. After a couple levels

Recursion. Yeah. I mean. I sort of agree. I mean. I think that. You know. Like

I've heard of kids. You know. Writing Minecraft plugins. For example. Right. Learning sort of Java. Or I mean. If you can do it in Scala

I've met people who write Minecraft plugins in Scala. So I mean. In some sense. You know. I think if you want to talk about kids learning functional programming. That. Julie's right. Where you just need a

You need an interesting thing that's going to behave a certain way. That they're interested in doing. And. People will figure it out. People are resourceful. As far as anecdotal evidence. I mean. A friend of mine

Whose father was a. Like a. Linguistics professor. I think actually was taught LISP. When he was like. Twelve. Or something like that. So

I mean. You definitely can learn this stuff. When you're a kid. It's definitely possible. I mean. On the other hand. There's nothing wrong with learning in college. You know

Like. It doesn't. I was eleven. Right. Were you eleven. A college graduate. You can still. I mean

I've known people who were great programmers who didn't start until they were in their mid twenties. So. You know. I don't think there's a. I don't think you're going to like miss the bus. Or. You know. Be too early for the bus

You know. Either way. You're not going to blow anything up. Not unless it's connected to a nuclear power station. Don't let them play with your nuclear power station console. Right. And you're good to go. Different ripple

Yeah. One other tool. The first thing we started out with my niece. We were showing her. How to. Program was called processing. There's a Python and a Java interface. We did the Java one

That was like a. No. You just. Run it and it pops up and you can write program in it. So you didn't have to do any. setup. It was really simple. And you write some code and you push the button and it drew graphs

And that. They really responded to that. So I think. Processing was what. That was a kind of a weird name. But that's what it's called. All right. So I think the last

You know. Round will be. One thing we should do for the betterment of Scala next year. And. I think the last. You know. Round will be. One thing we should do for the betterment of Scala next year

And. We'll. Check in next year. That's all. Okay. So my. fondest hope is that by this time next year. The contributor story is well known to everybody

People are. Talking and thinking in terms of sips and slips and so on. And this. process is sort of. Sustaining itself rather than as it is at the moment. Which is somewhat like I feel like I'm sort of. Pushing the car and jumping in and driving a bit. And then getting out and running behind and pushing the car a bit again

So hopefully we can. I think. The thing that I would sort of say is. I. think my vision would be if you know. If. all Scala projects came with. Sort of

Long form narrative. Tutorials and documentation with type checked. Runnable. Code examples. I mean. I think that.