I'm not super eager at having to watch a few 1-2 hours videos to even understand why I should use Jai.
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.
The page says "Jai could be described as a modern replacement for C"
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?
I'm into PL(T) stuff and I've gotten tired about hearing about Jai. One thing I like is Jai adopting the SPAD X-form (Chi-form); he (mis)attributes it to Sean Barret:
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] ...;
I really like that the arrays are a full type that pack their size information. C has always frustrated me on this particular point. One question though : Is the array types passed as a pointer and an int or copied locally ? I guess 1. because 2. would not make much sense (although this the C behaviour for structs in C... I wonder why...)
Which moment have you been waiting for? I have also spent a lot of time watching his streams, but I don't believe Jai is a thing anybody can use yet, is it?
Why must every new language use a completely unique syntax?
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.
Most of it doesn't seem terribly new. It's like a hybrid of some classic-Algol-style, C-style, and Haskell-style (particularly at the function/struct declarations), but mostly C-style.
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.
Well, if you split "language" into 1) syntax, 2) semantics, 3) standard library, then why would you think that #1 (syntax) is the only part that can't be improved upon?
[+] [-] mariusor|5 years ago|reply
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.
[+] [-] hardwaregeek|5 years ago|reply
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.
[+] [-] lhorie|5 years ago|reply
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?
[+] [-] 6gvONxR4sf7o|5 years ago|reply
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.
[+] [-] thechao|5 years ago|reply
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:
... and this would fail to compile.[+] [-] dang|5 years ago|reply
2018 (a bit) https://news.ycombinator.com/item?id=16596282
2016 https://news.ycombinator.com/item?id=11086708
2015 https://news.ycombinator.com/item?id=10346985
[+] [-] cassepipe|5 years ago|reply
[+] [-] dmit|5 years ago|reply
The language has come a long way since this writeup.
[+] [-] dang|5 years ago|reply
[+] [-] viktorcode|5 years ago|reply
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)
[+] [-] Rickasaurus|5 years ago|reply
[+] [-] warkanlock|5 years ago|reply
[+] [-] RobotCaleb|5 years ago|reply
[+] [-] dgellow|5 years ago|reply
[+] [-] Rickasaurus|5 years ago|reply
[+] [-] iherbig|5 years ago|reply
[+] [-] trynewideas|5 years ago|reply
[+] [-] dang|5 years ago|reply
[+] [-] OneGuy123|5 years ago|reply
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.
[+] [-] Jtsummers|5 years ago|reply
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.
[+] [-] dmit|5 years ago|reply
[+] [-] aarpmcgee|5 years ago|reply