Learning Jai via Advent of Code
forrestthewoods.com
forrestthewoods.com
Learning Jai via Advent of Code - https://news.ycombinator.com/item?id=34805622 - Feb 2023 (2 comments)
Learning Jai via Advent of Code - https://news.ycombinator.com/item?id=34785826 - Feb 2023 (1 comment)
(Reposts are fine on HN if the story hasn't had significant attention yet. These links are just for people who might be interested.)
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!
Do you think this is just a necessary trade-off when you are trying to be a performance oriented game programming language like Jai?
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.
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.
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?
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
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.
>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 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.
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!
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?
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.
Jai: “Yes, don’t do that terrible thing.”
Refreshing philosophy. Sharp tools have their place, even if they are dangerous.
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.
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.