From what I hear, it is also trying to solve the multi-language problem.
From what I hear, it is also trying to solve the multi-language problem.
While formally this solves the "2 language problem" (and by design creates the same 1.5 language problem discussed in this talk, but only worse), I don't think it is a good trade off between performance and usability.
Have you fired it up and tried to use it? I have not seen a single programmer who has used it and still called it a "superset of Python". It's definitely not a superset of Python, that's marketing which IMO will backfire when people actually try the thing. It can call Python (and its syntax for calling Python is actually quite similar to Julia's PyCall.jl), but it's not supersetting it into a larger language. If you want an explicit simple moniker to describe it, it's a whitespace sensitive Rust with a PyCall package built in. Its actions and memory management is very similar to Rust in how explicit it is, and its type system is clearly based on it.
That's not a bad thing perse, Rust is a very good language. However, because Rust is a good language, you have to ask why scientists have not flocked to it in droves and instead have stayed on R/Python/Julia. All of those languages are not surprisingly dynamic. There's a rather strong contingent of folks who believe in the superiority of static languages over dynamic languages and tend to be very vocal about how if they somehow got everyone to see the light then they will be validated in how right they are. Mojo is now an attempt to sell a static programming language as a superset of a popular dynamic one, where its actual actions and memory managements have nothing to do with the dynamic one but are instead pulled from a popular static language.
Will that actually work? I'm a bit skeptical that the reason the majority of programmers are using dynamic programming languages is because they are too stupid and need to be tricked into using a static programming language. I'd instead take it at face value that scientists and engineers are using something that they have found to be the most useful and productive, and today that's a lot of Python/R/Julia. Thus I would instead bet on a dynamic language which has features to force some static behavior, i.e. Julia learning from Typescript and adding similar features with compile-time enforcement, rather than assuming everyone will wake up one way and think C++ or Rust style programming is what every scientist should be doing. That's not to say Julia is perfect today, but I think it has the right bones to move into the direction that the future needs to, which is a dynamic base with optional static features with clear guarantees.