Transcriber: Amanda Zhu Reviewer: David DeRuwe
So as long as here we are in the computer science and AI laboratory,
let me ask, perhaps by a show of hands from the audience:
How many of you know what a programming language is?
OK, this is MIT after all, so maybe I shouldn't be surprised.
How many of you have programmed a computer?
Again, you know, this is a great audience.
This is MIT.
So I'm a co-founder, co-inventor of a programming language,
known as "Julia."
Perhaps some of you have used it.
And this language
is becoming increasingly popular for all of the various kinds of models
that will be coming up in the various talks today:
the climate models, the economic models,
the various political models,
and so forth.
So let me say a little bit about myself.
First of all, I'm a mathematician.
I'm a computer scientist here in this building.
I mentioned that I'm a co-inventor of the programming language Julia.
I have a wife and two children and the cutest little corgi on the planet,
so you might see him around here.
What I'm not ... to be honest,
I'm not a climate scientist, I'm not an economist,
I'm not a policy maker,
I'm not even completely sure why I'm even in this room,
except we are all on this planet together.
So about programming languages -
humans talk to computers,
specifying the instructions
that automate our world with programming language.
The climate models, the economic models, the political models -
they're all implemented as instructions to computers.
I co-founded this programming language, Julia,
that allows not only humans to talk to computers,
but it allows humans to talk to humans
about their intent on the computer.
So we all have this vision of you program a computer -
maybe you sit in your own little room in a little silo somewhere,
and you specify these arcane instructions that you tell the computer what to do.
I have a vision of the ability
to have other humans know what it is you're telling the computer
and what they can do.
You might think that it's a common occurrence
that, you know, somebody writes a program
and another person can look at it and see what's going on,
but I assure you it's anything but.
I've taken a look at some climate models,
some of the codes out there,
and I assure you it is very, very, very difficult
for a human to find out what is going on in those models.
Perhaps you've programmed - many of you've raised your hands.
There are languages out there that some of you may have heard of,
like Java and C++.
These are languages
that are very, very common in the business world.
There are other languages that are easy to use.
There's Scratch -
Python was invented as a language to become easy to use,
and because it was so easy to use, it became extremely popular,
and now it's very, very widely used.
So the common wisdom has always been, for programming languages,
is that you could have an "either" or an "or."
Either you can have a programming language that's easy to program,
but you'll pay the price.
Somehow the programs will execute much more slowly;
you will lose out on performance.
The other possibility is it's a much more difficult endeavor,
you have to be much more skilled at programming,
but then you can get the performance.
We set out to show that it wasn't one or the other;
you can have your cake and eat it too.
The Julia programming language lets you program readily
but also gets you performance.
If you look at the climate models,
you find some of the time that the codes are unavailable.
A lot of the time, scientists write a paper,
they put together some PowerPoints,
they might put together some output of their code,
but the code itself is unavailable for you to look at.
OK, this is what we call closed source.
Other times, the codes are available.
You can look at them, but they're not easy to look at, right?
Very often what people are doing is what's called low-level programming.
You specify very specifically what you want the computer to do.
Perhaps you get performance by doing that,
but you lose complete sight of what it is from a high level that's going on.
What continues to surprise me as a Julia co-founder
is that a programming language can let humans talk to humans.
A programming language can create community.
A programming language can actually create social action.
It opens very, very human possibilities.
So my own story is a testament to the power of language.
So I have a confession to make.
I'm going to make it publicly.
A year ago, I wasn't thinking about anything climate at all.
Sure, I read the papers.
I knew that the Earth was warming, and it was bad,
but I kind of lumped it with all the other bad news in the papers,
and I didn't particularly relate to it.
But now,
I've put solar panels on the roof,
we installed the electric vehicle plugs,
and maybe most important of all,
I feel guilty.
I feel personally connected to the problem.
Even when I see my little friend here with his fur coat,
who hates going out in the summer because of his fur coat,
and loves to frolic in the snow.
I almost feel the message
that we can't afford to be messing with the planet.
I see these messages everywhere I go.
A year ago, the ocean modelers at MIT came to my office upstairs
and told me about the CliMa project,
and their goal was to rebuild
a state-of-the-art model of the Earth, the climate.
What they told me is that what they wanted to do
was write the entire code in Julia.
They told me not to talk them out of it.
And they're doing this
because the old codes were just not working for them.
So when it comes to language,
let me point out
that philosophers and mathematicians
have been talking about the importance of language
for many, many years.
People have known for a long time that language influences us;
the words that we have available change what we can do.
Mathematicians, like Poincaré, have known for a long time
that your choice of notation
can enable new discoveries or can constrain new discoveries.
And so I'm here to talk
about the computer science version of all this.
And a good programming language design is really applied psychology.
Now again, if you think of a programming language
as just a means of specifying instructions that only a machine can understand,
then you're not seeing the real value of modern programming language.
Modern programming language can now be a kind of applied psychology.
It can allow us to create communities of people
who can work together to solve problems.
It can allow us to talk to humans as well as machines
when we want to specify what it is that a climate model
or an economic model or a political model is doing.
It enables all kinds of collaboration of programs
if you have a good programming model.
And of course, for all the complexities
of the various kinds of models that we're doing for the Earth,
everybody these days wants to do high-performance.
High-performance computing used to be a very small subject,
and now it's the sort of thing that everybody wants to do.
So scientists communicate with math symbols.
Here I'm showing, on the top, the kinds of mathematical symbols
that a climate modeler might put in one of his or her papers, right?
So it doesn't matter what the model is saying;
the point is that people communicate with these symbols.
People understand what they're doing with these symbols, OK?
But what does a scientist code, typically?
Well, you see it right there below the symbols:
you see a lot more lines of very, very specific instructions,
and I hope you can see my point
that it's not very easy to relate back to the symbols.
If you understand these symbols, the code really, really doesn't help.
So the code is really not the math, is it?
But with Julia, we tell people you don't code the math;
code is the math.
And so, at the highest level,
if these are the equations
that are going to tell you how the climate is changing,
you want, at this level,
to be able to just specify these sorts of symbols, right?
And this code actually runs and implements this model.
And we're doing the kind of research
that makes it possible to implement this sort of thing:
you could do it on your desktop, you could do it on a supercomputer,
you could do it on the GPUs that are running very fast,
and we've even played a little bit with the TPUs,
the Google Tensor Processing Units.
My final point, and my most important point,
is what is known as composability.
So when you write a program for yourself,
and somebody else writes another program,
you might think that they would work together very well,
but they never do.
How many of you have ever had a problem
with a computer not doing what you wanted it to do?
OK, that's probably everybody, right?
So computers are like that.
If you write a program,
and then somebody else writes a program
with no particular intent for them working together,
they usually don't.
Because people are able to write programs at a very high level,
we find that they compose -
the technical word is "composing" -
which means that these programs can run together.
And so, to give you an example of this composability,
we have this complex, interconnected planet -
you know, we need to work together in much, much better ways.
We have the folks with the CliMa project,
which I'm showing there on the upper left,
we have economists, who are working together
to combine with people who do risk modeling,
there are the environmentalists
who are tracking the motions of the animals on the planet,
energy trading.
We talk about how everybody can play a role,
but what we really would like to see is everybody playing this role together.
So no more of this
"You sit in your office, you write your program,
and you talk about it;
somebody else writes a program, and they talk about it."
We're trying to talk about a whole system where everybody can work together.
So the climate modeler, the economist,
the person who's doing an insurance model
might want to put all of this together and see how this can work.
Let me conclude by saying that what I've learned,
both personally and professionally,
is that everybody can play a role
in helping to solve the problem of the climate.
What I'd like to ask is, through personal action,
collective action, and participating together,
including through software,
we should all work together
to solve the problem of healing the planet.
Thank you.
(Applause)