Jai vs Odin systems programming languages (Non-spicy takes!)

  Рет қаралды 67,645

Context Free

Context Free

Күн бұрын

Code: github.com/contextfreecode/ja...
Thanks much to Gideon ( / gidcheeen ) for adding me to the Jai beta! Also to Jonathan and Bill for their great work! Also to each for putting up with me covering their work, and not necessarily in ways they'd individually prefer.
* Jai's name isn't actually officially Jai.
0:00 Intro
2:22 Overloading example
4:53 Multiline strings and binary data example
7:34 Number guessing game example
13:09 Fake web scraping example
19:34 Summary

Пікірлер: 241
@joshuaworman4022
@joshuaworman4022 8 ай бұрын
Odin has this really cool feature where it exists
@jupiterapollo4985
@jupiterapollo4985 7 ай бұрын
😂😂😂
@michaelzomsuv3631
@michaelzomsuv3631 5 ай бұрын
Very good one lol
@Whatthetrash
@Whatthetrash 22 күн бұрын
😂😂
@contextfree
@contextfree Жыл бұрын
Thanks much to Gideon (twitter.com/Gidcheeen ) for adding me to the Jai beta! Also to Jonathan and Bill for their great work!
@contextfree
@contextfree Жыл бұрын
@@ccriztoff As I replied in your other comment, I even had to look up theprimeagen to know who/what that was. I don't watch much in the way of tech videos, oddly enough.
@user-ql5bp5my9c
@user-ql5bp5my9c Жыл бұрын
Care to try asking JB for an interview? He often gives gamedesign interviews on KZbin, but it would be nice to see him talk about the language in that format.
@contextfree
@contextfree Жыл бұрын
@@user-ql5bp5my9c I think that could be great, and I've actually asked him in the past, but he hasn't been interested so far. Maybe situations will change sometime, though.
@user-ql5bp5my9c
@user-ql5bp5my9c Жыл бұрын
@@contextfree I see. Well, maybe sometime later, hopefully.
@FrankHarwald
@FrankHarwald Жыл бұрын
It's really good that people trying to improve system programming languages but I'm really worried about splitting of developer base & duplication & hence wasting work when there are multiple groups basically trying to achieve the same thing but don't watch the ones whether the work they have done & problems they have sold have already been done or solved. Zig, Odin, Jai, Carbon & Rust should really have a look at each other but also the history & theory of computer language & compiler design to avoid duplicating efforts & already solved problems.
@godnyx117
@godnyx117 Жыл бұрын
Hello! For the last months, I started working into making my own programming language. I spend a lot of time into designing and implementing it (along side with writing a system library cause I don't want to use `libc` for the compiler). However, I found myself getting discouraged and unmotivated due to the language's syntax. I wasn't able to create something that I liked and I saw myself giving up more and more every day. This video however, saved my dream! I got inspired by the syntax these two languages use and I think I'll use some of these ideas! I already created some stuff and I love it so far!!!! Thanks a lot for making this video brother!!!! *Edit:* The language is called Nemesis and can be found on Codeberg.
@prayer4675
@prayer4675 15 күн бұрын
How to find your language in GitHub or in any other Git hosting platform?
@godnyx117
@godnyx117 15 күн бұрын
@@prayer4675 Do you even get any reply?
@godnyx117
@godnyx117 15 күн бұрын
@@prayer4675 Check the update.
@Tobiky
@Tobiky Жыл бұрын
Man I love this channel. I always get happy and interested when I see a video notification from Context Free.
@gnuvince
@gnuvince Жыл бұрын
Odin and Zig are the two languages I'm most keeping my eyes on, because their values on what programming languages (and software in general) ought to be like match my own values.
@felixp535
@felixp535 Жыл бұрын
The metaprogramming and the compile-time code executing really is what makes Jai so great in my opinion. Also, I generally prefer the design decisions taken in Jai, because I feel like more time was spent designing the features to make sure it's never annoying. For instance, what if I want to put a backtick in my multiline string in Odin? Do I have to escape it? Then what if I want to have that escape sequence? Do I have to escape it again weirdly? Having a matching pattern makes a lot more sense to me. Jai is also VERY VERY clear with the compile-time errors. You instantly know what is wrong and why it's wrong. Odin seems a lot less precise. In this example, Jai says "Cannot assign to immutable argument game.done" while Odin simply says "Cannot assign to game.done" without giving any idea why the assignment failed. I haven't spent much time with Odin, but all I can say is that this video has not convinced me :)
@myartikool
@myartikool 4 ай бұрын
I wish Jai was real
@jojodi
@jojodi Жыл бұрын
Great presentation. Given these are both designed as systems programming languages, I would like to see more examples related to low level memory handling and the like. I think it would also be interesting to explore the debugging experience for these.
@vincentdenboer1451
@vincentdenboer1451 5 ай бұрын
Great small comparison! I really liked the nuanced takes, a breath of fresh air from language wars :)
@neqkk
@neqkk Жыл бұрын
To get member names in output of structs in Jai, you pass a formatStruct inside the print call to tell it to use long names (which are used by default if the struct has more than 5 members). See modules/Basic/Print.jai and the how_to on printing functions.
@patriciaclavero3161
@patriciaclavero3161 Жыл бұрын
Thank you so much for all these tutorials bro. So much valuable knowledge
@jessevos3986
@jessevos3986 Жыл бұрын
Thank you for this level-headed comparison! Very insightful
@terra__
@terra__ Жыл бұрын
I'm so glad you got into Jai beta; looking forward to the next videos :D
@contextfree
@contextfree Жыл бұрын
So many topics to cover. And I usually focus on already open source things, so after Jai's public, I'll likely cover it more often. Still, I might include it here and there before that.
@maxrinehart4177
@maxrinehart4177 10 ай бұрын
​@@contextfreeI hope you include jai in future videos when you compare different system languages,. I always watch you compare c++, rust and zig, but hope you add jai and odin as well. Love your work and learned a lot of concepts from watching you. ❤
@akj7
@akj7 Жыл бұрын
Odin: Started because dev was annoyed at C++ Jai: Started because dev was annoyed at C++ Go: Started because devs were tired of C++ long build time and needed web related functions and package management Rust: Started to fix C++ security issues Swift: Started to replace object C, C++ Julia: Started to replace Matlab/Python/C++ in scientific computing PHP: Started because using C and C++ to create webpages was hard Java: Started because C++ was too hard C#: Started because they wanted a C++ like language with some easiness of Java
@vladimirkraus1438
@vladimirkraus1438 Жыл бұрын
Am I the only one still using C++? :)
@GingerGames
@GingerGames Жыл бұрын
And every language designer had a completely different idea as what he wanted to be different. You've gotta love the variety of the language and the choice it gives.
@contextfree
@contextfree Жыл бұрын
It's fine to use C++ if you enjoy it and are productive using it. I like exploring, but I'm not anti C++ at all, either.
@kim15742
@kim15742 Жыл бұрын
@@vladimirkraus1438 I started with C++ 10 years ago but once you try Odin or the others you will never want to go back, there are just so many frustrating things with C++. The one thing C++ has going for it, though, is reliability. That's why it's still used in scientific computing instead of Odin/Julia (unfortunately)
@v01d_r34l1ty
@v01d_r34l1ty Жыл бұрын
​@@kim15742 I've been using C++ for about 4-5 years now and I must say language itself isn't bad, the maintainers of the language are just taking it in the wrong direction, adding more complexity (making it more powerful) instead of adding more to the STL (making it more useful). I would love to see a STD implementation of sockets / web, would love to see a standard implementation for Vulkan, DirectX, and OpenGL, a standard implementation for desktop development, etc. Instead, they focus on the language aspects like coroutines, templates, etc. while also not having a standard package manager (most just use CMake nowadays) leaving projects written in it looking like a complete clusterfuck.
@todorsamardzhiev144
@todorsamardzhiev144 Жыл бұрын
Been having lots of fun with Odin. Can't wait to try Jai, too.
@alexitosworld
@alexitosworld Жыл бұрын
Great video with no drama!
@pissnotime1894
@pissnotime1894 Жыл бұрын
Thank you very much for this video
@ryshask
@ryshask 4 ай бұрын
jai compiler - not released publically yet, but Jonathan Blow is adding more and more people to a Beta Program. *including typo found on the inductive website*
@nexovec
@nexovec 9 ай бұрын
I really enjoyed my time with Odin, but there is no but. It's just more fun. No header files, class hierarchies, dependency injection, borrow checkers or operator overloads. The language itself is not extensible, but that's sort of the point. Odin is here to stay, as it's the first language to really trump C at its own game.
@raress.5073
@raress.5073 Жыл бұрын
Ima download it thanks for sharing!!
@malwaretestingfan
@malwaretestingfan Жыл бұрын
Excellent comparison. I like Odin, i think it's together with Zig one of the most professional and well done post-Go programming languages.
@nextlifeonearth
@nextlifeonearth Жыл бұрын
If I were to compare Zig to rust it kind of falls short in my opinion, support and syntax wise (especially feature wise). Never used Odin though. If you've ever used rust, how would you compare it to Odin?
@kcvinu
@kcvinu 4 ай бұрын
@@nextlifeonearth I had no experience in Rust other than a simple hello world program. But I did some nice projects in Odin and it's more than 15K LOC. Man, it's a nice language to work with. Productivity is super high. You can make anything in really fast. And as they said, it is really fun to code in Odin. The community is extremely helpful. Docs are almost complete. What else do you want ?
@krisdabrowski5420
@krisdabrowski5420 Жыл бұрын
Can you post the full set of comments from the Jai discord comparing Jai and Odin? I don't think we got to see them all in the video.
@contextfree
@contextfree Жыл бұрын
I felt a bit brave extracting what I did for the video, actually. Some of the remaining discussion was on whether the runtime type info was actually very similar or not. Also on how novel the context idea in Jai is or isn't. Jon Blow considers its design novel, and in another comment on this video here, gingerBill credits the context idea to Jai.
@geeksuperstar8564
@geeksuperstar8564 Жыл бұрын
Does anyone know, besides c, c++ and rust which languages are designed with manual memory management by default?
@contextfree
@contextfree Жыл бұрын
I personally wouldn't say Rust memory management is manual. But there's no runtime GC. C++ more and more tries to avoid manual management. I guess when I think manual, I think you explicitly write calls to tell when to free what memory. C usually does this. Other recent options I've looked into do include Odin and Jai. Also Zig. Others aren't fresh on my mind at the moment, but I'm probably forgetting things.
@LeonardoSkorianez
@LeonardoSkorianez Жыл бұрын
I would like to see a comparison between Zig and Jai metaprograming
@Cons-Cat
@Cons-Cat Жыл бұрын
Great comparison! Have you looked into the Vale language at all?
@contextfree
@contextfree Жыл бұрын
A tiny bit, but not enough to say much. Their ownership strategy is very interesting for sure, though. I need to look into the language more sometime for sure.
@Verdagon
@Verdagon Жыл бұрын
@@contextfree Let me know if you ever have any questions about Vale, happy to help. Great video!
@maksymiliank5135
@maksymiliank5135 Жыл бұрын
These languages seem interesting to explore. It's a shame that Jai is in closed beta and most people cannot just experiment with it.
@Ihavetoreturnsomevideotapes
@Ihavetoreturnsomevideotapes Жыл бұрын
jonathan blow really don't want to open source the project .He don't wanna here what the community wants and it is a inhouse solution for the projects he works on
@RockburnDesu
@RockburnDesu Жыл бұрын
@@Ihavetoreturnsomevideotapes he's going to release it as open source but wants to build what he wants first.
@TetrisMaster512
@TetrisMaster512 Жыл бұрын
​@@RockburnDesu Personally I'm always a bit skeptical of "open source eventually" promises. It seems pretty common that the release never comes. If he's willing to release it as proprietary to a small group he's probably willing to release it proprietary to a wider audience if he continues to see some personal benefit to it. In the meantime, the project seems to have a bus factor of only 1, so you'd better hope nothing bad happens to Jonathan during this time period if you want to see the language succeed. I've personally witnessed an "open source eventually" project get ground to a complete halt due to the dev having health issues. Shit happens.
@m4rt_
@m4rt_ Жыл бұрын
@@Ihavetoreturnsomevideotapes He has said several times that he will open source it later. But he want's to keep it small and private for now so that he can make it good before it goes into production.
@m4rt_
@m4rt_ Жыл бұрын
@@TetrisMaster512 That could happen, but Jai isn't only being developed by Jon, and he has said that in a few months time he will increase the compiler dev team.
@italianmeetschina3001
@italianmeetschina3001 Жыл бұрын
Great video! Thank you
@torkleyy9168
@torkleyy9168 Жыл бұрын
Can you do a video on V?
@OmniscientOCE
@OmniscientOCE Жыл бұрын
I'm honestly kind of interested in C3. Seems like it's the one closest to C but with some quality of life improvements. I might try it out this weekend.
@lucy-pero
@lucy-pero Жыл бұрын
why do you want something closest to C C came out in the 70's, we came up with better things in the meantime
@homelessrobot
@homelessrobot Жыл бұрын
​@@lucy-pero Because c's core set of abstractions are still king when it comes to a broad range of low level programming tasks. So much so that they are integral to these 'better things' you are talking about, specifically so those things can interface with C when they need to in order to take advantage of this.
@drygordspellweaver8761
@drygordspellweaver8761 Жыл бұрын
@Lucy you can’t even define what that “better” is, let alone prove that statement lol
@kcvinu
@kcvinu 4 ай бұрын
Did a project in C3 and it's also a nice language like Odin. PLus we can do little more things which Odin can't do. It's an evolving language. I think the current version is 0.5.
@stephenkamenar
@stephenkamenar Жыл бұрын
don't forget jai is a language for games. of course it can be used for anything, but most of the community is game devs. so all the game related libraries/bindings are up to date and have many examples. and vulkan, dx12, dx11, opengl bindings with examples come built in
@stephenkamenar
@stephenkamenar Жыл бұрын
although i guess that's true for Odin too? The whole handmade community is mostly game devs
@GingerGames
@GingerGames Жыл бұрын
Odin has official support for all of the graphics APIs straight out of the box as part of the vendor library collection: OpenGL, Vulkan, D3D11, D3D12, and Metal (native). And support for SDL, GLFW, Raylib, MicroUI, ENet, PortMidi and so much more. And coupled with Odin's array programming, swizzling, matrix type support, and quaternions, Odin is in many ways much better suited for game development than Jai out of the box.
@stephenkamenar
@stephenkamenar Жыл бұрын
@@GingerGames time to download Odin
@chyza2012
@chyza2012 Жыл бұрын
@@GingerGames Any way to have vector types in odin without having to prefix it with the package name constantly? I really tried to like the language but code gets really cluttered when you have to write "math.vec3" (or whatever it was) all the time instead just vec2, like half my code is "math." and its just ugly to look at.
@GingerGames
@GingerGames Жыл бұрын
@@chyza2012 you can just make your own quite easily. It's just a language feature, not a library feature. And depending on the context, it can be inferred the type not requiring it for the literal.
@sandeepvk
@sandeepvk 3 ай бұрын
which is better jai or Odin ? _Odin has more out of box comfort_ *Jai has more empowerment for the user*
@smx75
@smx75 Жыл бұрын
At 9:00 the ok value gets shadow. The return ok and the if ok are different.
@captlazerhawk
@captlazerhawk Жыл бұрын
Odin those values are scoped to the block so it doesnt shadow I believe
@smx75
@smx75 Жыл бұрын
@@captlazerhawk yes the value are scoped to the block but if you do a "naked" return in this block you do not get the ok as true.
@tonywtyt
@tonywtyt 25 күн бұрын
I started out as a C developer, but that was a long time ago. Now, if I try to go back or try to work with libraries for C or C++, I feel demoralized. Things seldom seem to be setup out of the box. Sometimes you need Visual Studio, others you need GNU environment of some kind. Either you're struggling with the IDE project configurations, or CMake, which is whole other language in itself. This is my rant on C/C++ development and build tools. I'm tired of hearing about Jai... Its been year now, so its not an option for anyone who wants to do something today. I'm interested in Odin : )
@contextfree
@contextfree 19 күн бұрын
Odin is definitely a great option for people that like C but want something more convenient and more modern.
@nesvand
@nesvand Жыл бұрын
Your comment at the end took me by surprise - I swear I remember Jonathan mentioning on a stream (a long time ago now) that he wasn't looking to open source. Very interesting news if that has changed (not fussed either way, but cool if true!)
@contextfree
@contextfree Жыл бұрын
My understanding is that these notes in the wiki represent the current plans. I have no idea of timeline, though. And I don't know how BSD/MIT correlates with blocking takeover by large corporations. github.com/Jai-Community/Jai-Community-Library/wiki/Overview#licensing
@nesvand
@nesvand Жыл бұрын
@@contextfree very interesting! I guess we'll have to see how they'll avoid the problems of more permissive licenses, but in the very least I'm excited to know other studios will be able to use and contribute back as needed to improve the tooling.
@drygordspellweaver8761
@drygordspellweaver8761 Жыл бұрын
He plans to keep it closed source for a while just because it’s better to develop in a closed environment. Then eventually release it open
@chyza2012
@chyza2012 Жыл бұрын
13:15 I don't have access to jai but I watch a lot of Jon's streams, and I'd say the philosophy in jai would be to not obfuscate things with maybe and just return a value and an error (or just a bool), like in go.
@gideonunger7284
@gideonunger7284 Жыл бұрын
It's the same for Odin. Bill doesn't love maybe but people request it so he has it in std lib. And since Odin has unions you get it for free anyway
@awwastor
@awwastor Жыл бұрын
How do these languages compare to Zig and Rust in their goals?
@contextfree
@contextfree Жыл бұрын
I'd say Rust is the most different of the 4 you've put under consideration, including its focus on safety. And Zig has some metaprogramming, but it feels different than what I've seen so far in Jai.
@QW3RTYUU
@QW3RTYUU Жыл бұрын
Cool! No "face-smashing" with opinions for once. Remembering that both can exist in a world of diversity without being forced to like one more than the other!
@MurtagBY
@MurtagBY Жыл бұрын
John is a great guy, I am following Jai with a great interest despite being Python programmer professinally and not having much energy into investing into learing C/Go/Rush. When Jai will be released I will try my best to learn some of the performance-tuning wisdom from John and getting-shit-done attitude
@tsalVlog
@tsalVlog Жыл бұрын
I can't find the community post again, but as far as I'm concerned, your video quality and value is enough that I don't care if there are ads on day 0, but can understand waiting a bit before enabling ads. Maybe a happy medium of a week?
@damaomiX
@damaomiX Жыл бұрын
Why almost all new language use syntax like "var a: int = 1" instead of "int a = 1"? I always prefer the latter because it is easier for eye and brain to parse especially when reading a real project.
@pewhorn
@pewhorn Жыл бұрын
Because those languages can have different modifiers for defining new variables, like var/let/let mut/const depending on the language. "int a = 1" doesn't allow that.
@vladimirkraus1438
@vladimirkraus1438 Жыл бұрын
@@pewhorn Of course `int a = 1` allows that. C++ has for example `const int a = 1`.
@smx75
@smx75 Жыл бұрын
I think this is cause by inference. "var a: int = 1" "var a = 1". You have to either have different operator for variable definition and assignment or have a keyword. That said "var int a" and 'int var a" are possibilities. Parsing simplicity ? I don't know.
@Aidiakapi
@Aidiakapi Жыл бұрын
I think it's because it tends to allow for more consistency, and it puts the more important things first. 1) Keyword to signal variable declaration. 2) Variable name. 3) An optional explicit type (inferred by default). That way you get more consistency between inferred and non-inferred syntax, without turning an "inferred type" into a special keyword itself, which is what C++ does with their `auto` keyword. You also avoid issues such as in C#, where you end up with ambiguity between types and keywords. Without showing you the rest of the code, you cannot know what this will print: var x = 1; Console.WriteLine(x); You might expect `var` to mean, infer the type, and the type will be `int`, and so it'll print 1, but add the following code, and it'll print "Hello World!": struct var { public static implicit operator var(int _) => new var(); public override string ToString() => "Hello World!"; } If you have dedicated keywords for variable declarations, you avoid this: var x: i32 = 1; const x: i32 = 1; Etc. With an inferred type if you omit it.
@FlanPoirot
@FlanPoirot Жыл бұрын
it's a type inference thingy saying the type is meaningless most of the type, you can know the type by what u assign to it int x = 1; is pointless let x = 1; does the same and if you change the type you won't have to change the variable type, it knows its different you only truly need to say the types in function arguments, constants, etc once you get used to this way of doing it you'll find that it actually makes sense and is less verbose and less annoying to work with But objectively speaking, it being prefix or postfix has nothing to do with "easier for the eye" it's merely a matter of being/getting accustomed to it
@cbbcbb6803
@cbbcbb6803 Жыл бұрын
How hard is it to create a programming language?
@contextfree
@contextfree Жыл бұрын
Depends on what you want to achieve and your methods. See Crafting Interpreters by Bob Nystrom for a commonly referenced starting point. Also see the lang jams by JT: github.com/langjam/langjam
@yanko694
@yanko694 4 ай бұрын
Where to get access to jai?
@contextfree
@contextfree 4 ай бұрын
He allowed all people currently in the beta to invite someone else. That's how I got my invite. Not sure what his current plans for the future are.
@DanelonNicolas
@DanelonNicolas Жыл бұрын
oh btw, what do you think about serenity os Jakt language?
@contextfree
@contextfree Жыл бұрын
I'm super interested in it. And some compare and contrast with both Swift and C++ will be especially interesting there. And I plan to invite Andreas for an interview at some point for sure. Andreas is a super hero.
@contextfree
@contextfree Жыл бұрын
I could include JT on that interview, who helped kick off Jakt with Andreas, but JT has already been on my channel, so I'd probably focus on Andreas.
@contextfree
@contextfree Жыл бұрын
And I finally just figured out that Jakt includes both JT and AK (Andreas Kling) in its name. I'm so fast.
@DanelonNicolas
@DanelonNicolas Жыл бұрын
@@contextfree check office hours of Andreas channel, last one was with JT. it was super cool 👌🏻
@HairyPixels
@HairyPixels 11 ай бұрын
It looks like Odin was watching Jon Blow and started implementing his language as he went along and now released it to the public before he did.
@shokhbozbekkhalimjonov6998
@shokhbozbekkhalimjonov6998 Жыл бұрын
nice crack i subbed
@mikumikudice
@mikumikudice Жыл бұрын
John Blow is an excellent programer and game designer, but in this one I'm with Bill. His approach is more elegant in my view _O cara manja das paradas_
@guilhermemoreira4603
@guilhermemoreira4603 Жыл бұрын
realmente, to com o bill nessa também
@bijinregipanicker6916
@bijinregipanicker6916 Жыл бұрын
How can I get a beta key for Jai?
@contextfree
@contextfree Жыл бұрын
In the recent expansion, everyone in the beta was allowed to give out one key. That's how I got in. I don't know what plans for expansion exist for the future. I'd recommend just to open it to the public, but I also respect Jon's right to do what he feels good about.
@felixp535
@felixp535 Жыл бұрын
Got mine by simply asking for it. I sent an email with my background and mentioned what use I would have. I was added in a waiting list then eventually received an email telling me I was now in the beta
@m4rt_
@m4rt_ Жыл бұрын
I prefer Jai. Odin can work, but it feels kinda annoying, and I just enjoy Jai. Edit: I have now had access to Jai for a few months, and I still agree with this.
@SEOTADEO
@SEOTADEO Жыл бұрын
Your voice and intonation is very close to Jonathon Blow hahaha
@iatheman
@iatheman 7 ай бұрын
So true
@divcegahbawaslukabpnd4301
@divcegahbawaslukabpnd4301 Жыл бұрын
going to go make my first soft! My first soft!! Here I go! Wish luck.
@platin2148
@platin2148 Жыл бұрын
There isn’t really a huge preference for spaces or tabs in odin.
@yash1152
@yash1152 9 ай бұрын
1:55 odin has pattern matching switch stmh awesome.
@psyjax2
@psyjax2 Жыл бұрын
i like the concept of these two languages but I find the syntax a bit noisy and hard to read. I suppose I'd have to get used to it. I know syntax can be mostly aesthetic but ugly, hard to read, syntax can indeed be an impediment.
@peezieforestem5078
@peezieforestem5078 Жыл бұрын
Could you please add timestamps?
@contextfree
@contextfree Жыл бұрын
Do the current timestamps not work for you?
@peezieforestem5078
@peezieforestem5078 Жыл бұрын
@@contextfree oh, now they do. Thank you!
@Otomega1
@Otomega1 Ай бұрын
isnt that jon blow with a voice modifier lmao
@wijiler5834
@wijiler5834 Жыл бұрын
Wish I was in jai beta 😢
@wijiler5834
@wijiler5834 4 ай бұрын
I got in :D
@androth1502
@androth1502 6 ай бұрын
1 year later, jai is still vapor while odin can be used right now.
@kcvinu
@kcvinu 4 ай бұрын
Yes!!!
@Hoowwwww
@Hoowwwww Жыл бұрын
Odin seems more approachable, i like errors in jai better, they seems more readable other than that, they are pretty similar, i think i like odin better too bad you haven't covered debugging, how do they play with debuggers? and do they have a language server? we have lot of choice with languages, but tools is where some are failing behind i don't want to program in vim or emacs and debug using gdb terminal
@GingerGames
@GingerGames Жыл бұрын
You can produce verbose error messages in Odin, it just defaults to single line ones. The languages are semantically nothing alike but people seem to fixate on the similarities of the declaration syntax. Both languages can be easily debugged in any normal debugger, just like C and C++. Odin has an (unofficial) language server called OLS, I recommend joining the Odin discord to find out more. n.b. I could easily change the declaration syntax of Odin to look like Go or Rust and have the exact same AST, and no one would be making the Jai comparisons ever again.
@joseph199627
@joseph199627 Жыл бұрын
I know that they work well with visual studio. And for linux, odin works ok, but the values of the constants can’t be seen in the debugger
@GingerGames
@GingerGames Жыл бұрын
@@joseph199627 constants are compile time only and don't exist at runtime in Odin. They are closer to a type safe #define than `const`.
@eduardabramovich1216
@eduardabramovich1216 Жыл бұрын
@@GingerGames When you think the language be production-ready? 2024?
@GingerGames
@GingerGames Жыл бұрын
@@eduardabramovich1216 it's been "production ready" for about 3 years, especially since we've shipped EmberGen 1.0 with and developing numerous other products such as LiquiGen and GeoGen here at JangaFX. The issue is that Odin hasn't reached 1.0 itself, even if the language itself is effectively done.
@nadercarun
@nadercarun 7 ай бұрын
Odin all day!
@prayer4675
@prayer4675 15 күн бұрын
So, what language should I use to hack the Pentagon?
@ArcWeltraumpert
@ArcWeltraumpert Ай бұрын
jaiho
@godnyx117
@godnyx117 Жыл бұрын
The fact that "Jai" uses it's own backend it's a reason why I'm right away interested in it!!! Now if only the didn't required semicolons....
@drygordspellweaver8761
@drygordspellweaver8761 Жыл бұрын
I know- the semicolons are a turn off... maybe to speed compile time
@godnyx117
@godnyx117 Жыл бұрын
@@drygordspellweaver8761 No, it is not to speed the compile time. You can search for a newline (" ") instead of a semicolon. It's the exact same thing...
@drygordspellweaver8761
@drygordspellweaver8761 Жыл бұрын
@@godnyx117 Nah. After making a statement like that its clear you definitely don't understand compilation.
@godnyx117
@godnyx117 Жыл бұрын
@@drygordspellweaver8761 Well yes. I'm writing a compiler but I surely don't.... 🤦
@westislandmedia
@westislandmedia Жыл бұрын
That would be 99 percent of us
@platin2148
@platin2148 Жыл бұрын
I see odin as a more clear way todo things.
@MurtagBY
@MurtagBY Жыл бұрын
Also to be fair defer comes from twisted, not from Go originally
@codenamelambda
@codenamelambda Жыл бұрын
I honestly personally much prefer Zig over the Go-ish error handling and general "vibe" of these two languages, different as they may be. The implicit parameters honestly kind of remind me of implicit parameters in Idris2, which are *really* nice - in fact, you could even leverage the type level guarantees Idris2 gives you to give you some extra [though kind of unnecessary in this example] correctness guarantees. However, Idris2 definitely still has some... Things that need fixing, while trying to implement the guessing game as a needlessly well typed example for what I meant, I kept running against too many unhelpful error messages, so I'm giving up. Shouldn't deter anyone reading this from giving it a look though - the things that *do* work [which is most things if you're not going to abuse the type system for proofs too much] work pretty well in my opinion.
@contextfree
@contextfree Жыл бұрын
How are implicit parameters in Idris 2 vs Scala?
@codenamelambda
@codenamelambda Жыл бұрын
@@contextfree I'm afraid I can't really speak too much to that because I've never learned Scala, though from the looks of it it seems similar. Though Idris also has auto & default implicit arguments (though those are not really implicit and instead optional, using the same syntax, which I'd assume Scala has just "as normal arguments"), where auto implicit arguments actually attempt to construct the value instead of a straight forward search for an exact match - this is iirc also how type classes ("interfaces") in Idris are implemented, since Idris2 `Monad m => a -> m a` is really equivalent to `{0 a : Type} -> {0 m: Type} -> {auto _ : Monad m} -> a -> m a` (`0` means it's erased, so it's only present for type checking); and it's also useful for proving properties that are "obvious enough" automatically, like a natural number not being zero (which has a type to prove it that can only be constructed as `NonZero (S n)` where `S` is the successor constructor for natural numbers)
@mccGoNZooo
@mccGoNZooo Жыл бұрын
Having tried both at this point, first Zig back in 2019->2020 and now Odin, I can say I prefer Odin's version. Zig still does not have error payloads that you can attach to errors so they have to be propagated in other ways, whereas Odin allows you to return a tagged union as an error that can integrate well with its `expression or_return` syntax, which is like saying `try expression` in Zig. Overall it works out better in Odin at the moment. Zig might fix error payloads being attached to error values in time, but for the moment the Odin version is definitely easier to return good error values with.
@kim15742
@kim15742 Жыл бұрын
Okay, the languages are actually much more similar than I thought with the temporary allocator, context, const paramters, etc
@GingerGames
@GingerGames Жыл бұрын
The `context` system comes from Jai because it solves the problem of intercepting third party code with it's allocations and logging, as well as getting around callback problems. That is the purpose of the context system. As for temporary allocator, that's a really common practice is high performance programming, especially game development. As for const parameters, that's an obvious optimization that can be done over C. Why not do it?! Other than that, Odin and Jai are very very different languages with very different semantics and only the declaration syntax makes them superficially similar to people have not used both languages.
@kim15742
@kim15742 Жыл бұрын
@@GingerGames Yeah, exactly. I was guilty of comparing Jai to Odin early on but then quickly realized that mostly only the syntax is similar. So that is why I was surprised now but you are right that these are either obvious features or in user-space
@BryanChance
@BryanChance Жыл бұрын
I tried Odin and I love it. I don't know anything about Jai, yet. As long white space and identation is not part of the syntax. LOL
@nicostirnemann5374
@nicostirnemann5374 Жыл бұрын
The key difference also, is that Odin is already in production.
@DanelonNicolas
@DanelonNicolas Жыл бұрын
F**K!!! I LOVE THIS CHANNEL!!!! FOR GOD SAKE!!!!!!!! sorry, I mean, hey nice video :) both languages are super interesting, yay! nice comparison :)
@FlanPoirot
@FlanPoirot Жыл бұрын
chill
@zyptoskid
@zyptoskid Жыл бұрын
"you can copy my homework but please change it slightly" the homework: 2:22
@hailuong9295
@hailuong9295 Жыл бұрын
Odin tries to bring all the good thing of other languages to it (go like syntax, compile time like of Zig, explicitly stated function overload, bultin context improve from Zig,...), whereas Jai... i'vs already seen some shoot yourself situation in C/C++ would happend here (no joke looking at that # template give me header guard nightmare and namespace conflict PTSD in C/C++ )
@jondoe6608
@jondoe6608 Жыл бұрын
I don't want to sound negative but Jai meta programing looks very clunky, I wish more languages would look at what Dlang is doing. (sorry for dlang shilling) Thank you for the video, love the channel a lot!
@contextfree
@contextfree Жыл бұрын
I definitely need to study D more. Maybe a metaprogramming comparison between the two would be interesting for sure. And maybe some Zig. And maybe throw Ruby in there for a completely different kind of language.
@jondoe6608
@jondoe6608 Жыл бұрын
​@@contextfree The dlang website has a link to a community discord under the community tab, they are a lot of help. Also whats neat is that there has been a lot of ideas from zig & other languages floating into D, the importC compiler inside of the D compiler is a new addition we got & its been making life a lot better. So it would be cool to see a comparison done with zig. Very exited.
@tuatarian6591
@tuatarian6591 Жыл бұрын
@@contextfree nim too, nim metaprogramming is pretty much second tk none atm as far as I can tell
@chyza2012
@chyza2012 Жыл бұрын
I think it only looks clunky in this specific example, in general it seems really straightforward, since you can just write normal code and #run it, since jai doesn't really differentiate between compile and run time.
@jondoe6608
@jondoe6608 Жыл бұрын
@@chyza2012 out of curiosity, is there anything like the string mixin feature of D in Jai? in D you can execute most of the language at runtime, couple this with easy to use templates and compile time introspection and you can already write some very powerful stuff, take a look at std.traits to see some of the introspection you can do. But there is a even more power full tool in D, called string mixins, you can think of them as eval but for compiled languages, you can take D src in a string and then have it compile inline. So you can write a function that returns a string run that function at compile time, it generates src code that then gets compiled.
@RockTo11
@RockTo11 Жыл бұрын
It may be that it would take some time to get used to, but the syntax of both these languages is ugly and pretty difficult to visually parse for me.
@felixp535
@felixp535 Жыл бұрын
Definitely takes some time to get used to, but after one or two months it's really not a big deal. It's just like starting any new language, as if you were trying out Python or Javascript for the first time
@porky1118
@porky1118 Жыл бұрын
I like implicit returns like in Rust or Lisp. Else these languages would be pretty nice.
@FlanPoirot
@FlanPoirot Жыл бұрын
meh, have it or don't, it don't change much
@KhoaNguyen96
@KhoaNguyen96 Жыл бұрын
I'm sorry. I failed to see what are the problems that these languages are trying to solve. What is the real benefit of using these languages over Rust, Go or even C# or Java?
@eduardabramovich1216
@eduardabramovich1216 Жыл бұрын
Someone would have to try these langs in a real world app to see how they differ from the ones you mention in terms of implementation and then in terms of performance. Go, C# or Java are garbage collected, so no comparison at all, since Odin has different goals. Odin can be compared to Rust since both are focused on systems programming with high performance without a GC.
@thelawgameplaywithcommenta2654
@thelawgameplaywithcommenta2654 3 ай бұрын
Well they'res a lot of stuff jai has for games specifically. Like audio debugging is built in and creating a window for in-game display is simple.
@recreationalplutonium
@recreationalplutonium Жыл бұрын
Odin wins: It's actually available and it has a great name.
@ylluminate
@ylluminate Жыл бұрын
Been interesting hearing people preferring V over Odin and Go lately.
@skaruts
@skaruts Жыл бұрын
At this point in time I'm always irked by any new language that still requires semi-colons. Because, from a user perspective, it serves no purpose at all, other than to add clutter to the code, to distract you and to waste your time. You'll be wasting time and effort paying attention to needless punctuation, and dealing with the inevitable times when you will forget it and the compiler will complain about it, instead of complaining about some mistake that really matters. Over time I lost count of the times where I went _"ok, compiler, tell me if I got something wrong with the code I just wrote.... oh... there's a semi-colon missing......... alright, tell me what I got wrong now....... oh, there's another semi-colon missing......."_ and it just blocks you from actually moving forward, and for no good reason.
@kamertonaudiophileplayer847
@kamertonaudiophileplayer847 Жыл бұрын
It's again, to understand a simple program, I need to go back and forth several times. Odin looks also too verbose. Actually both are.
@dealloc
@dealloc Жыл бұрын
The verbosity is unavoidable given the goal of both languages; to provide a general purpose language with game developers in mind. It's necessary to allow developers to optimize for their specific use-cases; there's not a one-size-fit-all when it comes to game development, and especially in memory management.
@gerardmason7349
@gerardmason7349 7 ай бұрын
Ironically, if JBlow had written the game in C++ he'd have finished it and be raking in the money by now.
@zhulikkulik
@zhulikkulik 6 ай бұрын
It's not really about money and games tho. He actually wants to make a language and the game is like a demo of that language.
@drygordspellweaver8761
@drygordspellweaver8761 Жыл бұрын
I'm not sure I like the needless :: in both languages. There was absolutely nothing wrong with type declarations in C. If you wanted an integer named Var, you just typed int Var;. Now with these you have to type Var :: int. That's five extra key strokes for nothing. Multiply this by tens of thousands and it weighs on you over time. There is implicit casting in Jai which is nice, but once again there is nothing necessitating the use of the colons. Var = 7. Boom- done.
@contextfree
@contextfree Жыл бұрын
To clarify, the `name :: value` syntax is for assigning constants, and the `name: Type` syntax is for declaring variables. As for syntax preferences, people definitely vary. In my toy language I sometimes work on, I intend to use `name = value` to define constants, for example.
@drygordspellweaver8761
@drygordspellweaver8761 Жыл бұрын
@@contextfree I see. That can justify the extra keystrokes in that case since you no longer have to type 'const' a million times either. I like your solution better though ;)
@Elrog3
@Elrog3 Жыл бұрын
Programming that is worth doing is bottlenecked by problem solving, not typing speed.
@drygordspellweaver8761
@drygordspellweaver8761 Жыл бұрын
@@Elrog3 Not true in all cases. Having to spend more time on syntax takes away time from the problem solving. Also, problem solving often involves writing and testing code- all of which takes time.
@jstro-hobbytech
@jstro-hobbytech Жыл бұрын
odin and jai are gonna have a hard time with Google basically replacing c++ with carbon. I want to see a 3d engine made in both aiming to do the same thing and which run and looms better
@user-ov5nd1fb7s
@user-ov5nd1fb7s Жыл бұрын
I don't see why anyone would use either language at a company, to do production software. You have Rust and Zig already and you can efficiently develop pretty much anything in both.
@SimGunther
@SimGunther Жыл бұрын
Semi-spicy take here: If Jai intends to be the model of "capitalism", I hope that it has great educational material and helpful guidance through compilation errors similar to rust (not necessarily borrow checking, but something like "this is what you gave me, here's a fix that should get you closer to the answer you want") that gets programmers up to speed with the language like playing a game. Hopefully Jai doesn't just become a tool intended for "super programmers" like he has foreshadowed in his earlier talks or else we'll get neo-lib (or worse yet, ancap) weirdness in code form that will be tiresome very quickly. I get that those "empowering tools" are awesome, but they may also be the very thing that unintentionally creates a supply shortage of upcoming programmers fit to maintain Jai codebases.
@SimGunther
@SimGunther Жыл бұрын
@@chyza2012 And those special metaprogramming mechanics gives people the freedom to make those error messages even more powerful. That's the real freedom that the language (and by extension Jon) believes in. If people want to just deal with the default error messages in the hopes they'll eventually decipher them in simple cases, that's fine enough. If they want to work constantly to create metaprogramming functions that hook onto the compilation process to catch some bonkers/off-the-wall errors in program behavior that might be acceptable to the default compiler, they can do that too. I know he has said something similar about worker co-OPs, which he thinks shouldn't be forced onto every single business, but instead would be something the business owner needs to consider before just going with the default corpo structure. That's probably why I even made the "capitalism" analogy besides Jon's blind obsession with Elon Musk and his infinite environmental failures (including the battery mining and the ridiculous tunnel which is supposed to be for his cars instead of a train 🤦‍♀️) while pretending to be "environmentally friendly."
@TechnologyBudda
@TechnologyBudda Жыл бұрын
gingerBill is like a soulless Simon Pegg making a dope language
@TechnologyBudda
@TechnologyBudda Жыл бұрын
Language wars are pretty fruitless and stupid. Likely not one of us has a truly original idea in his head. Do you like arguing or coding?
@contextfree
@contextfree Жыл бұрын
I oppose language wars for sure. Non-spicy FTW!
@GingerGames
@GingerGames Жыл бұрын
People ought to use whatever language is the best for the problem, and what makes them the most productive.
@DroolRockworm
@DroolRockworm 7 ай бұрын
What the fuck is this new usage of the word spicy to refer to like anything. It's so creepy. Like sexual? Smh
Interview with Odin language creator gingerBill
22:08
Context Free
Рет қаралды 27 М.
Dear Functional Bros
16:50
CodeAesthetic
Рет қаралды 446 М.
Sigma Girl Education #sigma #viral #comedy
00:16
CRAZY GREAPA
Рет қаралды 66 МЛН
КАК СПРЯТАТЬ КОНФЕТЫ
00:59
123 GO! Shorts Russian
Рет қаралды 2,7 МЛН
小路飞姐姐居然让路飞小路飞都消失了#海贼王  #路飞
00:47
路飞与唐舞桐
Рет қаралды 94 МЛН
5 reasons why Odinlang is great for gamedev ✨
10:10
Karl Zylinski
Рет қаралды 13 М.
unlock the lowest levels of coding
7:05
Low Level Learning
Рет қаралды 221 М.
The most important talk on programming by Jonathan Blow
22:55
Not Sure
Рет қаралды 190 М.
[Programming Languages] Episode 2 - First Impression - V language
1:00:11
15 crazy new JS framework features you don’t know yet
6:11
Fireship
Рет қаралды 378 М.
Zig for Impatient Devs
9:48
Isaac Harris-Holt
Рет қаралды 62 М.
Python 3.12 Generic Types Explained
18:27
ArjanCodes
Рет қаралды 56 М.
The Most Efficient Struct Configuration Pattern For Golang
11:10
tree-sitter explained
15:00
TJ DeVries
Рет қаралды 67 М.
Теперь это его телефон
0:21
Хорошие Новости
Рет қаралды 1,7 МЛН
Carregando telefone com carregador cortado
1:01
Andcarli
Рет қаралды 1,8 МЛН
🤔Почему Samsung ПОМОГАЕТ Apple?
0:48
Technodeus
Рет қаралды 450 М.
Топ-3 суперкрутых ПК из CompShop
1:00
CompShop Shorts
Рет қаралды 99 М.