This was FANTASTIC! It was so great to see Prime walk through and ask the questions and Bill answer and explain the design choices and background to it all- I learned so much. Opened my eyes to different language features and the design of them. Thanks Bill & Prime ❤
Amazing interview, probably the best one you've done so far. ( I also loved the one you did with Jon Hjengset) Odin seems like a really good language. thanks Prime!!
"I thought why would you need anything other than Java? Then I discovered Javascript and thought why would you need anything other than Java?" - HAHAHAHAHAHAHA
Many of the reasons for Odin are similar to Zig. However, there are a few key differences. Super cool about how it unlocks the power of the GPU and implements SOA instead of AOS. Great for games, and really anything that requires quick iteration through large arrays. I would be interested to here the creator of zig and odin discuss this.
The benefits of SoA are specifically you can imagine you have some A's, B's and C's. With an array of structures you get the memory layout [ABCABCABCABCABC], with structure of arrays you get the memory layout [[AAAAAA][BBBBBB][CCCCCC]] That means any operation you need to work on a A's linearly is faster because with the first memory layout, you load a BC in the cache for every A, which is wasting 66% of the cache with prefetching making your operation slower, but also when you work on ABC you don't really lose anything.
I absolutely agree with the point Bill made at 32:24 about it being easier to port to Linux from Windows then the other way around. Though for me it's usually because getting a cross platform library to run on Windows is a gigantic chore compared to Linux
Kinda disappointed that they skipped over how overloads work, instead of just all functions with the same name being in the same overload set, odin has you declare which functions are in an overload set like add :: proc{add_ints, add_floats, add_numbers}; This lets you fully control how your overloads work. instead of being forced to juggle names and you can pull out a specific function if you need it because they are named.
The SoA stuff is really cool by the way. When go ahead an build something with Odin, it might be cool to experiment with it and the performance it can bring in large data sets (because switching from AoS to SoA is just adding an "#soa" when declaring a variable).
@@0xCAFEF00D, it's described in the spec that the compiler tries to accomplish that, with some caveats for the sake of compatibility. No idea how well it lives up to that claim.
I guess I would learn that lang instead of Golang so I would not have to deal with Google and its telementry in the Golang compiler. Look so similar and without garbage collection can be a plus.
This was FANTASTIC!
It was so great to see Prime walk through and ask the questions and Bill answer and explain the design choices and background to it all- I learned so much. Opened my eyes to different language features and the design of them.
Thanks Bill & Prime ❤
ty ty
@@TheVimeagen Agreed, amazing
man this channel is ridiculously hard to find
Amazing interview, probably the best one you've done so far. ( I also loved the one you did with Jon Hjengset)
Odin seems like a really good language. thanks Prime!!
yaya
The Ginger Beesknees begins at: 17:14
"I thought why would you need anything other than Java? Then I discovered Javascript and thought why would you need anything other than Java?" - HAHAHAHAHAHAHA
Many of the reasons for Odin are similar to Zig. However, there are a few key differences. Super cool about how it unlocks the power of the GPU and implements SOA instead of AOS. Great for games, and really anything that requires quick iteration through large arrays. I would be interested to here the creator of zig and odin discuss this.
Zig can transform SOA into AOS and vice versa through its comptime mechanism. Search for an example online if you are interested.
@@astroid-ws4py thanks! I will check it out.
awesome interview!!! nice
The benefits of SoA are specifically you can imagine you have some A's, B's and C's. With an array of structures you get the memory layout [ABCABCABCABCABC], with structure of arrays you get the memory layout [[AAAAAA][BBBBBB][CCCCCC]] That means any operation you need to work on a A's linearly is faster because with the first memory layout, you load a BC in the cache for every A, which is wasting 66% of the cache with prefetching making your operation slower, but also when you work on ABC you don't really lose anything.
I absolutely agree with the point Bill made at 32:24 about it being easier to port to Linux from Windows then the other way around. Though for me it's usually because getting a cross platform library to run on Windows is a gigantic chore compared to Linux
Kinda disappointed that they skipped over how overloads work,
instead of just all functions with the same name being in the same overload set, odin has you declare which functions are in an overload set like add :: proc{add_ints, add_floats, add_numbers};
This lets you fully control how your overloads work. instead of being forced to juggle names and you can pull out a specific function if you need it because they are named.
The SoA stuff is really cool by the way. When go ahead an build something with Odin, it might be cool to experiment with it and the performance it can bring in large data sets (because switching from AoS to SoA is just adding an "#soa" when declaring a variable).
There's the obvious benefit of better cache locality (often) but does Odin do better autovectorization? Presumably that's LLVM.
@@0xCAFEF00D, it's described in the spec that the compiler tries to accomplish that, with some caveats for the sake of compatibility. No idea how well it lives up to that claim.
Want your thoughts on lobster lang
I guess I would learn that lang instead of Golang so I would not have to deal with Google and its telementry in the Golang compiler. Look so similar and without garbage collection can be a plus.
Odin should have async await:
for {
person1.speak().await or_return
person2.reply().await or_return
person1, person2 = person2, person1
}
39:43 .. inheritance == bad
Is this a new YT channel? is it official?
this is official prime stuff
How many channels will you great? I want them all.
08:47 more token leaks!, what a whole some msg! I Agree with him.
Ups i sendt it as a replay to one of my earlier comments.
I always read his name as Ginger Beer
@GingerGames I would’ve lost it if your hot take was just “Rust is trash use Odin bro” 💀 @theprimeagen 1:08:00
Great content, i think you should do something about the channel name, you can't find it if you don't spell it exactly right
Odin is not a game-dev oriented language, some people see it this way. It is a general purpose language that aims to replace C and Cpp.
Ayo what's this spinoff channel?
Stream vods will be posted here i thinks
holy shit, ember gen is absolutely wild
great.
Now get Larry Wall :)
There's a difference between a dynamic array and a slice?
dynamic, len, capacity, ptr
slice, len, ptr
slices are immutable :)
@@TheVimeagen You can also pass a custom allocator for the dynamic array. You can see the structs at Odin/core/runtime/core.odin#L397
I'm the reail ODIN
Writing a Pico editor: th-cam.com/video/f64jNXptMEo/w-d-xo.html
promo sm