1,600 karma · joined December 21, 2016
This left me feeling like "I wish I had decorators and annotations" from other languages, not a way to write arbitrary compile-time code. The use case for that is so rare, and kludgy, that I don't think its worth it.
Now it did shine with basic hygenic macros, which felt useful and solid. Its basically how C macros should have been done originally (a function that emits code at compile time). However conventions like $Code where a bit jank imo, again felt like using someone's home-spun scripting language, rather than a well thought out solid design, versus something like Rust's Syn.
I know Jon Blow hates "design by committee", as he is so much smarter than others, but honestly a lot of this felt like listening to any sane reviewers would catch this stuff. I mean really basic stuff like #cast which reads like a compile-time macro/pragma, but its actually a runtime cast? Or mixing casing conventions, underscores or not, etc. Names of modules are all over the place, it just feels like one dude trying to make a half-baked lang over a long period while being distracted doing 20 other things.
A human mathematician that turned in this kind of unreadable detritus wouldn't get published, and they would be laughed away.
This is just getting unpaid volunteers to wade through the AI slop, and refine / correct it for them (assuming there are no major errors).
If you are making custom game engines, Jai has some conveniences (especially if you don't use any libraries or care about docs, ecosystem, community, etc). And if you really like "roll your own" with a dash of "everyone thinks I'm nuts but I'm just that much smarter", its perfect. Its one step above "I wrote my own scripting language".
Hence why I say, if you are doing complex / multi-threaded code, good luck to you.
This is why the GC and memory safe languages have mostly taken over. They have even more ergonomic syntax, and none of the footguns. You can still do all the normal pointer casting / abuse type stuff in most of these languages too.
Hillarious how people are like "I don't want my AI agent to do this hack, because people are probably watching the server, so they will see what the agent outputs." Hah, they can also prompt an agent for less than $500 to find out (also the CVE is public info).
God help you if you are doing multi-threaded with closures and callbacks, web programming, something high level like ML, etc. I feel like the thesis statement of Jai starts with "Ok, so lets assume most programmers are trying to program custom game engines...". True for a very limited set of people, but makes it very painful to use generally.
Its the same feeling you get trying to use Unreal for anything except 3D first person shooters. Its possible, it just doesn't feel very good, and you start to see all the quirky assumptions of the framework.
I just meant as my general purpose goto language, I couldn't add to the roster. C++ is already filling that niche for me (except with all the aforementioned benefits), python for scripts, C# for a solid GC lang, there's just no place for a scrappy quirky lang with lots of sharp edges and no value propostion.
I'm just not sure why you would choose _this_ language for those needs. There are like 10 new langs that are all trying to be "the next C" and they all kinda suck (Jai included). I dunno, for me none of them had the same kind of feeling that you get from the really top-tier languages, they all felt like "we took C and solved these annoyances" not "we had a fundamentally new vision".
Having really sophisticated memory management, type checking, semantics, safety guarantees, etc. is not at all trivial. The only part that has gotten easier is syntax => AST => machine code, but that is probably 10% of a PL if you want it to do something people will actually use.
Of course Jai "is fast" (meaning it has none of those things), so obviously LLVM is 90% of the work (just translating AST into LLVM calls). Yes, you can do this with AI in an afternoon, no its not useful to anyone. The real work of making a usable, interesting, useful language is not diminished, and it has little to do with the syntax => AST => LLVM part of the compiler.
Said another way, no one is choosing C, C++, Python, or Java because they are "easy ways to get generate machine code". They choose them because they have: superior semantics (design, memory management, portability etc), 3rd party libraries, frameworks, debuggers, ecosystem, documentation, support, standard library, etc.
It has some design choices that I appreciated at first, but are really strongly suited to a particular way of writing games, and I wouldn't call it general purpose (those same design choices are very limiting in other domains).
I do appreciate compiler speed, but ultimately I bounced off of it because the slight improvement in syntax doesn't justify losing massive tooling, libraries, docs, support, etc.
The language is also quite quirky in its conventions, which I think is due to Jon Blow's style, but which can feel quite odd to anyone who has a wider breadth of programming (than just custom game engines).
Also of course, any contributions or suggestions are met with the typical JB politeness and charm :)
All the flaws people mention here, are simply because you just don't get what a genius he is, those are actually features!
Everyone and their dog has been saying its a bubble, there is no moat, this is all known techniques being scaled (very inefficiently) onto increasingly expensive hardware clusters at exponential cost, etc.
I suppose this is where "gears turning" and "screw loose" come from, vestiges of that time. It will be interesting once we emerge from our current attention sequence model fever dream what vestiges leave a lasting imprint in the parlance.
Same with programmers. The craftsmen feel the hit, the people that just saw it as a job and/or code as an obstacle to making a product say "what's the big deal, code was just a tool all along".
The end state is that more and more activity will consolidate to fewer controllers because of capital costs. Eventually the "makers" will be outcompeted by the few companies holding all the robots / AI swarms (at which point the other crabs in the bucket will say "told you so"). Sure you could create a startup, at which point your idea is instantly replicated (assuming it wasn't already thought of by millions of agents). Then you're merely facing the huge marketing, name recognition, and production ability of the megacorp versus your one unknown idea for the "factory" you "manage".
That's what's missing from the "factory manager" discussion -- how well can you compete with a Toyota factory? You're free to create your own factory right now. And just wait for the regulatory capture...
I actually think that AI has little to do with the brain / human intelligence, but in this regard, human thinking is also spontaneous, where the next thought just seems to emerge from the combined effect of all inputs to your brain (including the memory of recent thoughts).
"Buy the index" isn't a solution for human influence and corruption, there are people in control of what goes into the index too.
People here often say "we can't set rules, because imagine how hard it would be to follow them at scale". That same strange cognitive bias applies here. Somehow the "push a magic button and it works" and "of course it can't do it just as well as a person every time" kind of take over.
Imagine if many tech issues like access to pornography, corporate ad tech, violent/racist material, AI slop, etc. were all just armies of people doing it (like google / X actually just had a person curate your results really fast for every search). Of course people would be outraged at the quality, but its "automated" so no one questions.
Similarly, if AI was just a giant outsourced coding firm with 10M programmers that could write you a slop app in an afternoon for $1, people would be complaining at how idiotic it is, and how inferior to regular devs. But instead, the "machine bias" takes over and people try to forgive the shortcomings.
there is something in the human psyche that badly wants to replace itself with a machine, despite it spelling our own undoing, and often resulting in worse outcomes along the way. I suppose the whole "make a tool" drive has been wildly successful overall, but this is probably the required downside to such an innate drive.
Like have you seen the 3d printed houses? They are the uggliest, shittiest houses in the world, but somehow the lure of "yes but we can build them in 24 hours" seems to somehow get people interested. If a human made one of those dung heaps they would be pillaried as a village idiot, and rightly mocked, but somehow because "machine do thing", we should get excited about excreted dung beehive houses...
For example, in ruby some kind of stringly typed reflection utility might Dry out code. In Rust, that might mean writing a trait over some subset of types and a macro helper, but would require careful dosing work.
Letting the LLM decide is the approach in question and the author was pointing out how spectacularly it failed to translate a complete, human designed system.
Getting a UI that explains the parts of a bike is ok I guess, but isn't it simpler to get an actual breakdown? Google "parts of bicycle breakout" gets tons of useful images instantly.
Getting a specialized app to split a bill? It was already trivial to put in a calculator if we cared to go item by item on the bill. Having to provide names and tag every item as I go is just more work. Usually real people just go $total divide by 5, I had more, let me chip in an extra $10.
Same with booking travel and wedding plans, these aren't things people would even delegate to a trusted friend usually, much less a one-off request to an AI bot or custom UI.
Most of the useful tasks it can do right now are research, technical question/answer, coding. In terms of "build a flexible ui that solves real-world problem", if existing mobile app isn't useful in this arena, then its unlikely a completely custom UI will do the job.
That said, I've done a few small ones like a quick one to practice alphabet of a foreign language, or prototyping a web game, and the like. But ultimately its nothing that is worth trillions of dollars.
I guess on a theoretical level, if you had a button which would create breakthroughs in a field, but you yourself couldn't understand it, would you push it? I would because otherwise the field may not discover it, and others will be able to understand the breakthrough.
I suppose if this framework allows physics and other sciences to rapidly progress (e.g. publish more findings), that is good? It destroys a certain model we had, that science should be arduous and require a genius many years of work to uncover something, but if these papers truly add knowledge via this new tool, then this is for the good.
Not sure implications for researchers, but from the public perspective, now we have 36 new papers that increase our knowledge. But maybe an expert can weigh in, the papers might be slop?
This is no different than if a gain-of-function virus lab keeps making "apocalypse level" viruses, warning everyone if the viruses escaped it could kill everyone. Despite several leaks, they continue doing so, and even infect live animals to see if it could escape or transfer to humans. The C-suite and senior management push researchers to do even more, automate the virus production and outbreak testing, increase viral effectiveness as fast as possible. Once a leak occurs and starts killing people, would you say "it was just a mistake, no one is responsible"?