Hacker News new | ask | show | jobs
by dismalaf 21 days ago
> The entire concept of Odin seems to be taken from Jai. They're both aiming to be C/C++ replacements "for the joy of programming" (another thing that was in the early Jai videos that Bill ripped off). In addition to the syntax (which is eerily similar across the entire language), there is the "using" keyword, the "defer" keyword, the context system, custom allocators, native AoS, polymorphic procedures, etc.

Both Odin and Zig were inspired by Jai. Both creators were in the "Handmade" community and inspired.

That being said, a ton of these concepts existed in many languages that pre-date the developement of Jai by a very large margin.

> using

Literally in C++. Common Lisp has ":use" for packages/namespaces and "with-slots" for structs. Pascal has "with". A bunch of others too.

> defer

This came from Go.

> the context system

Jonathan Blow talked about where he got this, basically using obscure SML compilers in the 90's. Jon probably got this from MLKit. This is also how some Lisps did arenas in like the 70's... Ada also has a similar feature.

> The entire concept of Odin seems to be taken from Jai. They're both aiming to be C/C++ replacements "for the joy of programming"

Except D, Nim and Haxe are probably the actual precursors.

According to Jon the biggest feature of Jai is it's macros which are basically taken from Common Lisp although languages like Haxe, D, Rust, Nim and probably others also allow execution of any arbitrary code at compile time. At a recent LambdaConf he also talked about what he called a "plugin" system for the Jai compiler which kind of sounds like how OCaml or Haskell do macros/templates.

But Odin famously eschews macros. There's a few built-in features that do things at compile time but you can't just execute any code at compile time.

> began developing Odin AFTER he saw Jai

Jon (and Casey's) videos inspired the whole "Handmade" community, for better or worse. Both Bill (Odin) and Andrew Kelley (Zig) started their respective projects because of it. Both "took" ideas from Jai. Except none of those ideas are unique. There's literally nothing in Jai another language doesn't have. Even the syntax "name :: type" seems to come from Haskell type declarations, although :: is also used for types in Fortran and it's used in Backus-Naur form.

Anyhow in the end Jon's the one who just took a bunch of pre-existing functional language features, added it to a C-like language and acted like he reinvented the wheel. He didn't.

And finally, the "joy of programming" comes from Ruby's creator Matz.

1 comments

All your paragraphs were preempted in my comment when I said

> any one of those things on it's own is not a smoking gun, and many of these features and syntax are becoming standard in modern languages. But the fact that SO MANY of Odin's features and even it's marketing strategy seems to be copying Jon Blow is weird to me.

Why did you type all those paragraphs quoting me but happen to gloss over the one that already takes your entire comment into account? I never claimed that Jon invented any of these things. My point stands regardless, the way Ginger Bill has moved regarding Jai has been weird, and this most recent announcement confirms it for me. Its a vibe thing and if you're gonna "um akshually' me about where this or that language feature originated from, then you're missing the point.

> the way Ginger Bill has moved regarding Jai has been weird

Because everyone is inspired by everyone in programming language design but Jon Blow is the only one weird about it, talking about suing people on stream for features he himself took from others...