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

Поделиться
HTML-код
  • Опубликовано: 4 ноя 2024

Комментарии • 267

  • @joshuaworman4022
    @joshuaworman4022 Год назад +301

    Odin has this really cool feature where it exists

    • @jupiterapollo4985
      @jupiterapollo4985 Год назад +15

      😂😂😂

    • @michaelzomsuv3631
      @michaelzomsuv3631 11 месяцев назад +4

      Very good one lol

    • @Whatthetrash
      @Whatthetrash 6 месяцев назад +2

      😂😂

    • @sigmundwong2489
      @sigmundwong2489 4 месяца назад +3

      hahaha lotta sour grapes about not being in the closed beta lol. Shame it is closed, though.

    • @joshuaworman4022
      @joshuaworman4022 4 месяца назад

      @@sigmundwong2489 na im fine with that. it's just been ten years. at some point im kindof giving up on ever getting to use it.

  • @akj7
    @akj7 2 года назад +138

    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 2 года назад +33

      Am I the only one still using C++? :)

    • @GingerGames
      @GingerGames 2 года назад +47

      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  2 года назад +37

      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 2 года назад +9

      @@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 2 года назад +16

      ​@@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.

  • @contextfree
    @contextfree  2 года назад +60

    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  2 года назад +2

      @@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.

    • @drp-l6j
      @drp-l6j 2 года назад +4

      Care to try asking JB for an interview? He often gives gamedesign interviews on RUclips, but it would be nice to see him talk about the language in that format.

    • @contextfree
      @contextfree  2 года назад +5

      @@drp-l6j 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.

    • @drp-l6j
      @drp-l6j 2 года назад +3

      @@contextfree I see. Well, maybe sometime later, hopefully.

    • @FrankHarwald
      @FrankHarwald Год назад +1

      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.

  • @nexovec
    @nexovec Год назад +32

    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.

  • @olbluelips
    @olbluelips 21 день назад +2

    Direct comparisons of language design on RUclips are hard to find! Thanks for the upload

  • @Tobiky
    @Tobiky 2 года назад +23

    Man I love this channel. I always get happy and interested when I see a video notification from Context Free.

  • @godnyx117
    @godnyx117 2 года назад +53

    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 5 месяцев назад +1

      How to find your language in GitHub or in any other Git hosting platform?

    • @godnyx117
      @godnyx117 5 месяцев назад

      @@prayer4675 Do you even get any reply?

    • @godnyx117
      @godnyx117 5 месяцев назад

      @@prayer4675 Check the update.

    • @Sourusophyexe
      @Sourusophyexe 3 месяца назад

      @@godnyx117 If you post a link, RUclips will not show it. Most YTbers disable the option for commenters to share a link (to avoid bots).

    • @godnyx117
      @godnyx117 3 месяца назад

      @@Sourusophyexe Thanks for letting me know! I have added the link in my channel's description

  • @felixp535
    @felixp535 2 года назад +63

    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 10 месяцев назад +14

      I wish Jai was real

  • @gnuvince
    @gnuvince 2 года назад +76

    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.

    • @sef-kc9vk
      @sef-kc9vk 5 месяцев назад

      ummm no

    • @egorsozonov7425
      @egorsozonov7425 5 месяцев назад +1

      I used to watch them too, but noticed they both suck. For example, they claim to not have exceptions but actually panic on things like array out of bounds, with no ability to recover from a panic. So it’s like an exception if every exception brings your whole process down. Compare this to C where you can longjmp and then recover using setjmp, and it’s like these “better C” languages are actually worse than C.

    • @slyfox3333
      @slyfox3333 4 месяца назад +10

      @@egorsozonov7425 C doesn't even check for OOB array access AT ALL. It's just UB. So what the hell are you talking about? You'd have to explicitly check for them and handle them yourself, which obviously you can do in any language. Most of the time C will just silently let you access memory you shouldn't be able to with 0 complaints. Explain how thats "better".

    • @ar_xiv
      @ar_xiv 4 месяца назад

      @@egorsozonov7425 tagged unions can be used like exceptions (in odin)

    • @jhny0
      @jhny0 4 месяца назад +2

      @@slyfox3333 well thats C for you, dont expect the language to hold your hands while programming. It doesnt give false impression of safety when it doesnt exist in the first place

  • @terra__
    @terra__ 2 года назад +25

    I'm so glad you got into Jai beta; looking forward to the next videos :D

    • @contextfree
      @contextfree  2 года назад +7

      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 Год назад +3

      ​@@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. ❤

  • @jojodi
    @jojodi Год назад +17

    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 10 месяцев назад +2

    Great small comparison! I really liked the nuanced takes, a breath of fresh air from language wars :)

  • @neqkk
    @neqkk 2 года назад +23

    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.

  • @malwaretestingfan
    @malwaretestingfan 2 года назад +21

    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 2 года назад +3

      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 10 месяцев назад +5

      @@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 ?

  • @todorsamardzhiev144
    @todorsamardzhiev144 2 года назад +3

    Been having lots of fun with Odin. Can't wait to try Jai, too.

  • @jessevos3986
    @jessevos3986 Год назад +2

    Thank you for this level-headed comparison! Very insightful

  • @mikumikudice
    @mikumikudice 2 года назад +33

    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_

  • @m4rt_
    @m4rt_ Год назад +14

    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.

  • @stephenkamenar
    @stephenkamenar 2 года назад +16

    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 2 года назад +6

      although i guess that's true for Odin too? The whole handmade community is mostly game devs

    • @GingerGames
      @GingerGames 2 года назад +22

      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 2 года назад +8

      @@GingerGames time to download Odin

    • @chyza2012
      @chyza2012 2 года назад

      @@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 2 года назад +1

      @@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.

  • @LeonardoSkorianez
    @LeonardoSkorianez 2 года назад +19

    I would like to see a comparison between Zig and Jai metaprograming

  • @patriciaclavero3161
    @patriciaclavero3161 2 года назад +2

    Thank you so much for all these tutorials bro. So much valuable knowledge

  • @ryshask
    @ryshask 9 месяцев назад +1

    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*

  • @nesvand
    @nesvand 2 года назад +3

    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  2 года назад +4

      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 2 года назад +2

      @@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 2 года назад +6

      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

  • @alexitosworld
    @alexitosworld 2 года назад +4

    Great video with no drama!

  • @tonywtyt
    @tonywtyt 6 месяцев назад +4

    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  5 месяцев назад +2

      Odin is definitely a great option for people that like C but want something more convenient and more modern.

  • @chyza2012
    @chyza2012 2 года назад +11

    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 2 года назад +5

      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

  • @sandeepvk
    @sandeepvk 8 месяцев назад +4

    which is better jai or Odin ?
    _Odin has more out of box comfort_
    *Jai has more empowerment for the user*

  • @MurtagBY
    @MurtagBY 2 года назад +4

    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

  • @maksymiliank5135
    @maksymiliank5135 Год назад +47

    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 Год назад +6

      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 Год назад +30

      @@Ihavetoreturnsomevideotapes he's going to release it as open source but wants to build what he wants first.

    • @TetrisMaster512
      @TetrisMaster512 Год назад +4

      ​@@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_ Год назад +5

      @@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_ Год назад +3

      @@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.

  • @koopa-if5sr
    @koopa-if5sr 4 месяца назад +2

    Liked the video, but the diffs added too much noise to clearly understand what the difference were. I guess it would've been better to highlight the diff while going through post-production.

  • @tsalVlog
    @tsalVlog 2 года назад +2

    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?

  • @QW3RTYUU
    @QW3RTYUU 2 года назад +4

    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!

  • @OmniscientOCE
    @OmniscientOCE 2 года назад +5

    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 2 года назад +1

      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 2 года назад +7

      ​@@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 2 года назад +3

      @Lucy you can’t even define what that “better” is, let alone prove that statement lol

    • @kcvinu
      @kcvinu 10 месяцев назад

      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.

  • @SpelMalmer
    @SpelMalmer 2 месяца назад +1

    The Odin killer feature is the array math operations and swizzling that also compiles into simd when applicable. Does jai have anything like it?

  • @godnyx117
    @godnyx117 2 года назад +8

    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 2 года назад +1

      I know- the semicolons are a turn off... maybe to speed compile time

    • @godnyx117
      @godnyx117 2 года назад

      @@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 2 года назад +8

      @@godnyx117 Nah. After making a statement like that its clear you definitely don't understand compilation.

    • @godnyx117
      @godnyx117 2 года назад

      @@drygordspellweaver8761 Well yes. I'm writing a compiler but I surely don't.... 🤦

  • @raress.5073
    @raress.5073 2 года назад +1

    Ima download it thanks for sharing!!

  • @Cons-Cat
    @Cons-Cat 2 года назад +5

    Great comparison! Have you looked into the Vale language at all?

    • @contextfree
      @contextfree  2 года назад +5

      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 2 года назад +2

      @@contextfree Let me know if you ever have any questions about Vale, happy to help. Great video!

  • @nicostirnemann5374
    @nicostirnemann5374 Год назад +7

    The key difference also, is that Odin is already in production.

  • @divcegahbawaslukabpnd4301
    @divcegahbawaslukabpnd4301 2 года назад +3

    going to go make my first soft! My first soft!! Here I go! Wish luck.

  • @henrikholst7490
    @henrikholst7490 4 месяца назад +1

    V-lang have them both beaten for my kind of programming. The error handling has an explicit out-of-band handling that you cannot screw up.

  • @torkleyy9168
    @torkleyy9168 2 года назад +4

    Can you do a video on V?

  • @SEOTADEO
    @SEOTADEO Год назад +3

    Your voice and intonation is very close to Jonathon Blow hahaha

  • @italianmeetschina3001
    @italianmeetschina3001 Год назад

    Great video! Thank you

  • @smx75
    @smx75 2 года назад +3

    At 9:00 the ok value gets shadow. The return ok and the if ok are different.

    • @captlazerhawk
      @captlazerhawk 2 года назад +1

      Odin those values are scoped to the block so it doesnt shadow I believe

    • @smx75
      @smx75 2 года назад

      @@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.

  • @androth1502
    @androth1502 Год назад +4

    1 year later, jai is still vapor while odin can be used right now.

    • @kcvinu
      @kcvinu 10 месяцев назад

      Yes!!!

  • @Br4dButt0wski
    @Br4dButt0wski Год назад +3

    Does anyone know, besides c, c++ and rust which languages are designed with manual memory management by default?

    • @contextfree
      @contextfree  Год назад +7

      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.

    • @Caesim9
      @Caesim9 4 месяца назад

      The most prominent one at the moment is probably Zig. Zig did not have a 1.0 release yet, so the language still changes.
      In this video presented are Odin and Jai.
      There is an extension of C, called C3. There is Ada which is focused on safety critical applications but doesn't have the best track record in open source.
      There is a newer language called Hare, it has some interesting choices, but the creators of that one reject porting it to Windows or Mac. There is also an older language from the 1970s, called Pascal which fits the bill.

  • @hailuong9295
    @hailuong9295 Год назад +4

    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++ )

  • @awwastor
    @awwastor 2 года назад +8

    How do these languages compare to Zig and Rust in their goals?

    • @contextfree
      @contextfree  2 года назад +3

      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.

  • @krisdabrowski5420
    @krisdabrowski5420 2 года назад +2

    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  2 года назад +2

      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.

  • @BryanChance
    @BryanChance Год назад +2

    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

  • @psyjax2
    @psyjax2 2 года назад +6

    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.

  • @DanelonNicolas
    @DanelonNicolas 2 года назад +8

    oh btw, what do you think about serenity os Jakt language?

    • @contextfree
      @contextfree  2 года назад +11

      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  2 года назад +8

      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  2 года назад +13

      And I finally just figured out that Jakt includes both JT and AK (Andreas Kling) in its name. I'm so fast.

    • @DanelonNicolas
      @DanelonNicolas 2 года назад +3

      @@contextfree check office hours of Andreas channel, last one was with JT. it was super cool 👌🏻

  • @slowpnir
    @slowpnir 5 месяцев назад +1

    I'm watching and thinking rn: thanks god and SPJ we have proper constrained overloading in haskell, and not _this_

  • @codenamelambda
    @codenamelambda 2 года назад +4

    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  2 года назад

      How are implicit parameters in Idris 2 vs Scala?

    • @codenamelambda
      @codenamelambda 2 года назад +1

      @@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 Год назад +2

      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.

  • @damaomiX
    @damaomiX 2 года назад +10

    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.

    • @vladimirkraus1438
      @vladimirkraus1438 2 года назад +7

      @pewhorn Of course `int a = 1` allows that. C++ has for example `const int a = 1`.

    • @smx75
      @smx75 2 года назад +1

      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 2 года назад +2

      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 2 года назад +3

      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

    • @chyza2012
      @chyza2012 2 года назад +4

      neither of them have a "var" keyword, its just a: int = 1, or a := 1 for short

  • @Leao_da_Montanha
    @Leao_da_Montanha 4 месяца назад

    nice format

  • @platin2148
    @platin2148 2 года назад +4

    There isn’t really a huge preference for spaces or tabs in odin.

  • @platin2148
    @platin2148 2 года назад +5

    I see odin as a more clear way todo things.

  • @jondoe6608
    @jondoe6608 2 года назад +9

    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  2 года назад +7

      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 2 года назад +1

      ​@@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 2 года назад +4

      @@contextfree nim too, nim metaprogramming is pretty much second tk none atm as far as I can tell

    • @chyza2012
      @chyza2012 2 года назад +3

      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 2 года назад +1

      @@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.

  • @wijiler5834
    @wijiler5834 2 года назад +9

    Wish I was in jai beta 😢

  • @kim15742
    @kim15742 2 года назад +3

    Okay, the languages are actually much more similar than I thought with the temporary allocator, context, const paramters, etc

    • @GingerGames
      @GingerGames 2 года назад +7

      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 2 года назад +1

      @@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

  • @shokhbozbekkhalimjonov6998
    @shokhbozbekkhalimjonov6998 2 года назад

    nice crack i subbed

  • @MurtagBY
    @MurtagBY 2 года назад +1

    Also to be fair defer comes from twisted, not from Go originally

  • @prayer4675
    @prayer4675 5 месяцев назад +1

    So, what language should I use to hack the Pentagon?

  • @cbbcbb6803
    @cbbcbb6803 Год назад +1

    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

  • @Otomega1
    @Otomega1 7 месяцев назад +1

    isnt that jon blow with a voice modifier lmao

  • @Hoowwwww
    @Hoowwwww 2 года назад +6

    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 2 года назад +9

      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 2 года назад +1

      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 2 года назад +4

      @@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.

  • @recreationalplutonium
    @recreationalplutonium Год назад +6

    Odin wins: It's actually available and it has a great name.

  • @yash1152
    @yash1152 Год назад

    1:55 odin has pattern matching switch stmh
    awesome.

  • @zyptoskid
    @zyptoskid 2 года назад +1

    "you can copy my homework but please change it slightly"
    the homework: 2:22

  • @yanko694
    @yanko694 9 месяцев назад +1

    Where to get access to jai?

    • @contextfree
      @contextfree  9 месяцев назад +2

      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.

  • @HairyPixels
    @HairyPixels Год назад +6

    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.

    • @marcsfeh
      @marcsfeh 4 месяца назад +4

      did you know you can literally just look at Odin's history instead of saying this sort of thing?

  • @nadercarun
    @nadercarun Год назад +1

    Odin all day!

  • @bijinregipanicker6916
    @bijinregipanicker6916 2 года назад +5

    How can I get a beta key for Jai?

    • @contextfree
      @contextfree  2 года назад +4

      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 2 года назад +5

      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

  • @RockTo11
    @RockTo11 2 года назад +3

    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 2 года назад +3

      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

  • @westislandmedia
    @westislandmedia 2 года назад

    That would be 99 percent of us

  • @peezieforestem5078
    @peezieforestem5078 Год назад

    Could you please add timestamps?

  • @ArcWeltraumpert
    @ArcWeltraumpert 6 месяцев назад +1

    jaiho

  • @ylluminate
    @ylluminate 2 года назад

    Been interesting hearing people preferring V over Odin and Go lately.

  • @porky1118
    @porky1118 2 года назад +3

    I like implicit returns like in Rust or Lisp. Else these languages would be pretty nice.

    • @FlanPoirot
      @FlanPoirot 2 года назад +5

      meh, have it or don't, it don't change much

  • @DanelonNicolas
    @DanelonNicolas 2 года назад +1

    F**K!!!
    I LOVE THIS CHANNEL!!!!
    FOR GOD SAKE!!!!!!!!
    sorry, I mean, hey nice video :) both languages are super interesting, yay! nice comparison :)

  • @SimGunther
    @SimGunther 2 года назад +8

    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 2 года назад +3

      @@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."

  • @skaruts
    @skaruts Год назад +3

    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 2 года назад +5

    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 2 года назад +12

      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.

  • @TechnologyBudda
    @TechnologyBudda 2 года назад +3

    gingerBill is like a soulless Simon Pegg making a dope language

  • @drygordspellweaver8761
    @drygordspellweaver8761 2 года назад +2

    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  2 года назад +5

      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 2 года назад +4

      @@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 Год назад +3

      Programming that is worth doing is bottlenecked by problem solving, not typing speed.

    • @drygordspellweaver8761
      @drygordspellweaver8761 Год назад +3

      @@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 2 года назад

    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

  • @gerardmason7349
    @gerardmason7349 Год назад +2

    Ironically, if JBlow had written the game in C++ he'd have finished it and be raking in the money by now.

    • @zhulikkulik
      @zhulikkulik 11 месяцев назад +3

      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.

  • @KhoaNguyen96
    @KhoaNguyen96 Год назад +1

    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 Год назад +2

      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 8 месяцев назад

      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.

  • @TechnologyBudda
    @TechnologyBudda 2 года назад +8

    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  2 года назад +8

      I oppose language wars for sure. Non-spicy FTW!

    • @GingerGames
      @GingerGames 2 года назад +13

      People ought to use whatever language is the best for the problem, and what makes them the most productive.

  • @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.

    • @marcsfeh
      @marcsfeh 4 месяца назад +2

      Did you know: What *you* think of a tool you have never used is irrelevant to the users of said tool?

    • @user-ov5nd1fb7s
      @user-ov5nd1fb7s 4 месяца назад

      @@marcsfeh these tools you like using are designed for domain specific issues. And this domain happens to not make any money. Games don't make money. Rust is not a domain specific language. It's made so you can write good software in general. So my opinion matters for people that want to actually make money, which is almost everyone.

    • @TWlaz
      @TWlaz 25 дней назад

      @@user-ov5nd1fb7sYou’re right, games don’t make money! So people who want to make games as an art hobby in their free time, or small, dedicated teams who need to move quick will have incentive to use tools that allow for a flexible and fast iteration process… like Jai and Odin.

  • @DroolRockworm
    @DroolRockworm Год назад

    What the fuck is this new usage of the word spicy to refer to like anything. It's so creepy. Like sexual? Smh