> What features in Jai make it superior to C++ for writing games specifically?
I know that Jonathan Blow can be abrasive and one-sided in his talks on programming, but I think we should be open-minded about Jai. Yes, he is making this language because he doesn't like C++, but you make it sound like he is hating on C++ just for the sake of it.
I mean, is it really so hard to imagine that someone might not like something about C++? There are plenty of people who think we could have a better systems language, which is why we have seen languages like Rust, Zig, and Odin pop up.
In Blow's case, he has said that he doesn't like Rust because he feels that satisfying the borrow-checker slows down iteration time[1], which is important especially in the early stages of game development when you are still experimenting with mechanics are where requirements and architecture are still very much subject to change.
As far as what Jai offers, it seems his focus is on making a simple but powerful language (contrary to C++'s ever-growing bag-of-tricks), with fast compile times (less than 3 seconds on a full build of his new game), better build and dependency management (no more cmake), and powerful meta-programming features.
In a talk on the language[2], he demos how he is able to use the language's meta-programming features to develop powerful code-analyzing and memory-analyzing tools.
These tools, in particular, hint at his philosophy: lots of ideas in programming like RAII, garbage collectors, and borrow-checking exist to save the programmer from themselves. He's not interested in this and believes that these features come with hidden costs. Instead of accepting those costs, he would rather have a language that gives him the tools to save himself.
Personally, I don't understand the hate. If Jai is a good language, then it will benefit all of us. If it's not, then his making it still hurts none of us.
I feel like a lot of people go after Jai because of what Jon Blow says about XYZ political issue. Jai seems perfectly reasonable for at least the narrow task of making games in an indie studio. The macro capabilities might be terrifying in a large enterprise, but if you're handrolling all your own code and don't have to worry about a software supply chain, who cares?
I go after Jai because I think the problems it is purported to solve are better and more readily solved with existing frameworks, libraries and engines, and I think the programming language itself is entirely too low a level for these things.
You don't need to design a specific language to implement structs of arrays, you can just... do that.
Jai hasn’t even had the whole array of structs to struct of arrays thing in years.
Also speeding up compilation time really does require a new language or at least a new compiler.
And why would you “go after” any language. If you don’t like it, don’t use it. The only thing going after it is going to do is to drive up the engagement metrics and make it more popular.
>And why would you “go after” any language. If you don’t like it, don’t use it.
We are on a discussion forum. One of the common use cases of a discussion forum is criticism and debate. Yes, we could all simply use the tools we want, and not use the tools we don't, and not waste time expressing an opinion either way, but again this is a discussion forum.
And it's not as if I posted "Jai delenda est" here, I think my opinions are mild compared to what people here have to say about javascript, or C++ or PHP or any other language. I just don't think that a gamedev specific language is a good idea, compared to implementing libraries and frameworks in an existing language. I don't like the bespoke languages used by frameworks like Godot or GameMaker either.
I know that Jonathan Blow can be abrasive and one-sided in his talks on programming, but I think we should be open-minded about Jai. Yes, he is making this language because he doesn't like C++, but you make it sound like he is hating on C++ just for the sake of it.
I mean, is it really so hard to imagine that someone might not like something about C++? There are plenty of people who think we could have a better systems language, which is why we have seen languages like Rust, Zig, and Odin pop up.
In Blow's case, he has said that he doesn't like Rust because he feels that satisfying the borrow-checker slows down iteration time[1], which is important especially in the early stages of game development when you are still experimenting with mechanics are where requirements and architecture are still very much subject to change.
As far as what Jai offers, it seems his focus is on making a simple but powerful language (contrary to C++'s ever-growing bag-of-tricks), with fast compile times (less than 3 seconds on a full build of his new game), better build and dependency management (no more cmake), and powerful meta-programming features.
In a talk on the language[2], he demos how he is able to use the language's meta-programming features to develop powerful code-analyzing and memory-analyzing tools.
These tools, in particular, hint at his philosophy: lots of ideas in programming like RAII, garbage collectors, and borrow-checking exist to save the programmer from themselves. He's not interested in this and believes that these features come with hidden costs. Instead of accepting those costs, he would rather have a language that gives him the tools to save himself.
Personally, I don't understand the hate. If Jai is a good language, then it will benefit all of us. If it's not, then his making it still hurts none of us.
[1] https://www.youtube.com/watch?v=4t1K66dMhWk [2] https://www.youtube.com/watch?v=IdpD5QIVOKQ