57 comments

[ 4.4 ms ] story [ 124 ms ] thread
[flagged]
How is Jai ‘fake’ and what qualifies a language as ‘real’? Jai is in development and the creator is building a game engine with it.

It’s very demonstrable in its capabilities (see the Sokoban game progress) and as for documentation and end-user availability it’s so early in development that a lot of language features aren’t finalised so it’s not necessarily worth doing to an incredibly detailed level yet.

This may not have much of an impact on u/JaiFanClub but I can understand what the commenter was saying and I'm not sure she/he deserves the downvote.

For AoC, I understand giving Jai a whirl. For just about anything else, I can understand being reticent to build too much on the shifting sands of an unreleased, beta language.

See the blog post:

> Q: Would I use Jai in production? > A: No, of course not! It's an unfinished language. The compiler is not for distribution. It's not ready for production.

I've even seen a few articles, on this site, asking Qs like "Which C++ successor are we going to pick?" and including unreleased languages like Circle and Jai. It's more than a little ridiculous.

> like Circle and Jai

Sorry, I meant Carbon! Circle is way more real than Jai or Carbon.

That's a pretty bizarre definition of 'fake'.

Why use misleading terminology in your comment?

If I can't use it, it is not real to me. If it is not real to me, it is, by definition, fake. Why is that bizarre?
You can't use the SpaceX Starship either, so is it also fake?

https://en.wikipedia.org/wiki/SpaceX_Starship

It's "fake" in the sense that you can't rely on it. Maybe it will one day be real, but I certainly wouldn't start e.g. planning a mission schedule based on their declared payload numbers.

That said, ultimately I believe, based on available information, Starship will likely fly in something close to its envisioned form. I don't believe Jai will ever be publicly released in a way that remotely delivers on what it's been claimed to offer. It's vaporware in the classic sense, and a few demo videos do not change that.

This is just factually wrong. Across thousands of hours of Blow's streams, massive amounts of codebase, both from jai itself as well as the game that it is used to develop, has been shown. You are free to not care about it until it's public,even be skeptical. And that's perfectly fair aproach. But saying it is a vaporwave as if it's all promises and no substance is just objectively wrong.
The publicly released part of it is all promises and no substance. Neither the alleged language nor the alleged game are available and I'm sceptical that they ever will be (we're well past the time where one would reasonably expect them to have come out if they were ever going to). The likes of Xanadu or the Mill had really cool demos, but that isn't enough to make them not vaporware.
>Publicly released parts of it all promises and no substance.

True, but again, there is more you can look at then that, and just because something isn't publicly released yet doesn't mean it doesn't exist or that you can't look at something. Both game and the language itself have enough materials online to validate their existence on a stage much, much more advanced then 'vapor wave promise stage', even if access to it is less convenient then having an open repository

> we're well past the time where one would reasonably expect them to have come out

Jai is now about as long in development as Rust was until its stable release, though it's not funded by Mozilla and has fewer people working on it who are simultaneously building a game which isn't yet as long in development as Blow's previous (and less ambitious) title.

I don't know what timeframe you find reasonable but I don't see anything wrong here. Multiple people have publicly used the language, so it's real and definitely not "alleged" even if you are doubtful of its future.

> Jai is now about as long in development as Rust was until its stable release, though it's not funded by Mozilla and has fewer people working on it

Rust at this time in its life did not have a "stable" release, but there were already plenty of public releases of Rust and of things written in Rust, and plenty of non-video documentation.

Fake is more the opposite of genuine. The language isn't fake just because it's not accessible.
Jon Blow is making his own language, because he is sick of working in C++ is what I have gleaned.
If you ever see his stream, it seems like jon blow is sick of everything, including every language, every game, every programmer and all of his viewers.
I'd agree if you were writing your next $1 million program in Jai, but this is Advent of Code. Learning new esoteric languages, by teaching you new esoteric concepts, can make you a better programmer in existing ones.
Did we read the same article? The one where the author is using Jai for something, talking about Jai, and showing others how to use Jai? The one that clearly explains the limitations of Jai's beta, and covers features that could trivially be used to make libraries? The article that begins with paragraphs dedicated to answering your question? (It's because it has neat features.)
Jai has the most impressive metaprogramming of any imperative language I've seen, but outside of gamedev I make my bones with lisp (clojure). Going from homoiconic metaprogramming in lisp to generating code from strings is still going to be a massive step down.

Other than that , I appreciate the focus on code being self contained, straightforward, and simple to read. It feels like Jonathon Blow has been working on Jai now for almost a decade, so I wonder has the ideas behind the lang have evolved over so many years of iteration.

EDIT: looks like I tabled the post right before it got to the good stuff! You can walk the abstract syntax tree & generate type safe code, not quite homoiconic but color me impressed!

It would be nice if there was a language specification so that all of this would become a little more concrete.
I think Blow hasn't finished designing the language yet, so a language specification is probably not in the cards. Also I doubt that it will ever be, as the current compiler will most likely be the only implementation.
Going from homoiconic metaprogramming in lisp to generating code from strings is still going to be a massive step down.

Do you think this is just a necessary trade-off when you are trying to be a performance oriented game programming language like Jai?

what does that mean?
Seems like Jonathan Blow, the creator of Jai, releases a game every decade or so. I wonder if the plan is to release his next game in a couple of years. Presumably it is written in this new language? Maybe the compiler will be released at the same time under the guise of “hey this is so production ready we have already shipped a game with it.”
(comment deleted)
He’s currently developing a Sokoban game in Jai and often streams on Twitch.
I believe he intends to ship the game for free with the language, as a demonstration of how to write games using jai.
That's exactly the idea. They even plan to release the source for the engine for the game as the 'example' project along with the language.
“Wait wouldn’t that feature allow you to do X horrific unsafe thing?”

Jai: “Yes, don’t do that terrible thing.”

Refreshing philosophy. Sharp tools have their place, even if they are dangerous.

(comment deleted)
Jon has a lot of opinions about how this is stupid or he'd never hire anybody who does that and so on, and yet Jon does these things anyway, because he's human and humans are fallible.

This is less obnoxious than it might be because at least Jon is self-aware enough to identify that e.g., this code written by "an idiot" was in fact written by J. Blow himself which suggests maybe he's an idiot. But his resistance to adjusting Jai in light of these observations is a (modest but non-trivial) problem with the language.

The necessity of sharp tools doesn't excuse needlessly dangerous edges.

If that's the case, just use C then.
Is the compiler available yet to mere mortals like myself or just a handful of friends still? I love the philosophy and would absolutely take a day off work to play with it but being a private developed publicly makes it feel a bit too marketing/advertisement to go out and ask for it.
It is available for mere mortals, however I think you need to prove you have an interest more than just using it for a day. (ie, track the email Jon has set up for the language, write an email asking for access, make it a half decent request/justification, etc).
I can't be the only one puzzled by the notion of only offering a closed beta for a programming language...
(comment deleted)
Taking your question at face value, it’s so people not invited don’t feel entitled to input for design decisions.

Jon is creating the language with a particular audience in mind so he is only taking feedback from people who he feels are most representative of that audience.

Jai has a lot of interesting and clever design ideas but I would never use it for anything serious, even if it was actually released.

Jon Blow is probably the worst person possible to be in charge of a programming language. He seems to be disgusted by everyone and everything and have complete disdain for anything that didn't come directly from him. The fact that he still hasn't released this language after over half a decade shows that he just doesn't create things for other people non commercially.

He certainly doesn’t like shitty programs… which seems to be the vast majority of software today.

You can shit on him and Muratori all you like for this push they are doing, but ultimately, they have both put their money where their mouth is.

for this push they are doing,

I know about the handmade hero website and love it in theory, but how does an unreleased language that no one can use because the author looks down on everyone help anyone?

>no one can use because the author looks down on everyone help anyone.

Citation needed. Blow has different aproach when it comes to building the language (it's project driven, as he is working in it alongside his bug commercial game), but that's it. Nothing about looking down on others

As much as I like Muratori, making sweeping statements about performance overlooks that vast majority of people prefer performance penalties over feature penalties.

How software is used and maintained should dictate how you develop it.

Is it some software that thrives on features being delivered fast (office suite, image editors)? Perf can suffer, bugs are acceptable.

Is it something that needs to be safe at all cost (critical car safety, medical software)? Perf must be tolerable but bugs are no go.

Is it something that has no hard perf requirements but will be maintained for decades. Make code clean, treat performance as non-issue.

You’re exactly the type of “excuse factory” person that Muratori talks about.

>maintainable software means bad performance

It literally doesn’t. In many cases, it’s actually the exact opposite. Interestingly, “maintainable software” not only has shit performance, but also often has incredibly shit maintainability.

Muratori, in fact, isn’t even pushing for low level optimization or even benchmarking at this point. In his latest talks, he’s actually just pushing for “don’t make your software garbage based on ominous ‘it’s NoT MAiNTaInAbLE’ claims”, or as he puts it, “non-pessimized”.

He literally just pushes for “writing the code that actually needs to be written to accomplish the task”. That’s it.

The programmer ego problem is substantially out of hand, so let’s just spell it out:

You cannot and will not successfully predict the future of your code, so stop making your code worse by trying to.

> It literally doesn’t.

It literally does. You want high performance, and not just low hanging fruits? That means branchless code, SIMD and manual loop unrolling. That code is highly arcane.

I'm not talking about just use better data/algo. That's every CS grad common knowledge.

> He literally just pushes for “writing the code that actually needs to be written to accomplish the task”. That’s it.

If he does, it goes against his rants about slow software. If slow software sells, it already accomplished its task. Getting sold/accepted.

Maintainable code means easier for others to start working. And lessening the future bus factor (what happens if most knowledgeable person leaves). I.e. you're optimizing for different set of constraints.

> You’re exactly the type of “excuse factory” person that Muratori talks about.

Man, you need to watch less Muratori. You're tripping things.

> he just doesn't create things for other people non commercially.

and it's his right not to. He is making a language for himself to make games with. It's designed for that purpose.

It's a nice "coincidence" that it's also good for other purposes. His opinionated choices is his, and if you don't like it, it doesn't make his output any worse than anybody else's. He's certainly not the worst person to be in charge of a language - esp. if that language is meant to be for himself!

and it's his right not to

I didn't say it wasn't.

He's certainly not the worst person to be in charge of a language - esp. if that language is meant to be for himself!

This thread is about other people using jai (even though it isn't released), what point are you trying to make here?

(comment deleted)
Now the question is, why is a personal language that he doesn’t want other people to use getting so much publicity?
> he doesn’t want other people to use getting so much publicity?

i dont think it's the case that he doesn't want other people to use it. he just doesn't want other people who don't have the same opinion as him to bother him about changing it in a way that he doesn't care for. As an example, there's bugs in the compiler, but those bugs could be worked around currently if not annoying. However, it would be a folly for jonathan or his team to fix those bugs at this stage rather than spending time exploring the design space of the language.

By keeping it closed and selective, he would not have to deal with such problems.

As for publicity, i have no idea. It's an interesting language, and interesting things gain publicity presumably.

I'd argue that having a disdain for everyone and everything is actually an upside, and while I won't expect such aproach to become mainstream, I definitely appreciate it as a niche possibility
Maybe if he released the language and updated his changes in a main branch on github, but he won't do it. How many years has it been? All this time people could have been building libraries and tools.
I remember hearing about this language almost a decade ago as a kid and never since then.