Jai Language Primer (2017)
github.com
github.com
The best place to get information about the language is this youtube playlist: https://www.youtube.com/playlist?list=PLmV5I2fxaiCKfxMBrNsU1...
However it has a lot of content.
jblow seems like a really talented developer. I loved Braid and there's clearly some great work being put into Jai. But if (and this is a big if) he wants to make Jai into a language people use, he should seriously consider putting more effort into the documentation and distribution side.
In addition to what other people have said, Blow is explicitly working on documentation over time and closed beta users have access to a fair number of documents detailing both language features and the philosophy behind the language.
One huge reason why the language IS still in closed beta is because Blow believes heavily in not releasing half-assed work. Documentation is a part of that.
That's a circular argument given what's discussed in this thread.
The "make or break them" presupposes the goal is for the language to "break out", whereas the parent said the goal is for the creator to be satisfied and use the language himself.
There tons of languages in domains like gaming where nobody cares if they "break out" or for network effects. People write them to use them themselves.
That is only one of the goals. The author is also interested in making that language public at one point, even if that comes as a far secondary concern for him, otherwise he wouldn't have bothered to publish anything.
"That's a circular argument given what's discussed in this thread."
What would you say to "whether anyone else outside of his company uses it is almost irrelevant"?
The compiler is not out yet, it's in a closed beta to a small number of developers with plans to release later this year (to the best of my knowledge).
Rust and Zig are other languages that more or less try to be replacements for C. Without having looked too deeply, it feels like Jai could more or less be described as similar to D (with the -betterC flag, perhaps). Does that seem like a reasonable characterization? Is there something specific that Jai brings to the table that those other languages don't?
That being said if you are in a situation where you cannot use the GC you probably wouldn't need the stdlib all that much anyway (there's a bunch of alternatives available).
Not only can you actually read the code, you can also express things in a platform agnostic way rather than the inevitable "which make are you actually" bug report
Damn. I was hoping that had changed. I'm curious to see the hype, but I'm not into PL stuff enough to dig into a language I can't play with.
The syntax name: type = value; specifies that a variable named name is of the type type and is to receive the value value
Where the inferred/imperative-assignment form is a visual reduction: name : type = expr
name := expr
It has the lovely property that if you elide the type expression the variable gets an inferred type. If you keep the type expression, then the language has both a type-expression for type-checking and type of the value-expression for type-inference; then, the PL can be designed in one of a few ways:1. If the type expression mismatches the type of the value-expression, fail;
2. If the type expression can be unified with the type of value-expression, keep the unified; or,
3. If the value expression can be coerced to the type expression, keep the type expression.
SPAD used the second behavior and it was the bees-knees. This was especially true since SPAD supported refinement (quotient) types, so you could do things like this:
name : int(-2 < n and n <= 10) = ... complex expression that we can't prove is in the range (-2, 10] ...;
... and this would fail to compile. var damage: float = 10.5
var damage := 10.5
var dynamic_typed_damage = 10.5
If you use the colon you get a static typing, without it you get dynamic typing.https://docs.godotengine.org/en/stable/getting_started/scrip...
2018 (a bit) https://news.ycombinator.com/item?id=16596282
The language has come a long way since this writeup.
For more current info check out beta user's impressions (and the language primer) here: https://www.youtube.com/watch?v=i1vbvikDiI8 (first video in the series)
This is so tiring...why can't they just stick to syntax that everyone knows...each one has to reinvent random new syntax and destroy old conventions that people already know thus needlesly creating friction.
That he seems to have thought deliberately about stepwise refactoring is actually pretty nice. This is hard to do in many languages (where refactoring-to-function/method is often a wholesale endeavor). Doing it stepwise means you can iterate and test more deliberately throughout the process, and is nicer if you're not using a refactoring tool beyond your text editor.
In the end, reading the example code caused me no headaches, it was as clear as any other C/Algol-derived language.