Chris Lattner
๐ค SpeakerAppearances Over Time
Podcast Appearances
And then you can have everything that's great about Python, all the things you're talking about that you love, plus not be forced out of it when you do something a little bit more computationally intense or weird or hardware-y or whatever it is that you're doing.
So Mojo, the complicated answer, does all the things.
So it's interpreted, it's shit compiled, and it's statically compiled.
And so this is for a variety of reasons.
So one of the things that makes Python beautiful is that it's very dynamic.
And because it's dynamic, one of the things they added is that it has this powerful metaprogramming feature.
And so if you look at something like PyTorch or TensorFlow or, I mean, even a simple use case, like you define a class that has the plus method, right?
You can overload the dunder methods like dunder add, for example, and then the plus method works on your class.
And so it has very nice and very expressive dynamic metaprogramming features.
In Mojo, we want all those features come in.
We don't want to break Python.
We want it all to work.
But the problem is you can't run those super dynamic features on an embedded processor or on a GPU.
Or if you could, you probably don't want to just because of the performance.
And so we entered this question of saying, OK, how do you get the power of this dynamic metaprogramming
into a language that has to be super efficient in specific cases.
And so what we did was we said, okay, we'll take that interpreter.
Python has an interpreter in it, right?
Take that interpreter and allow it to run at compile time.
And so now what you get is you get compile time metaprogramming.