#Gamelab2018

Поділитися
Вставка
  • Опубліковано 12 лип 2018
  • Jonathan Blow (born 1971) is an American video game designer and programmer, who is best known as the creator of the independent video games Braid (2008) and The Witness (2016), both of which were released to critical acclaim.
    In September 2014, Blow began work on a new programming language called "JAI" based on ideas he had previously expressed about video game development. It is aimed at "low-friction" and fluid development, whilst directly supporting data-oriented design for high performance. The language is currently active, but is a work-in-progress, as no JAI compiler has been publicly released yet. A small demo of the language was shown at Reboot Development 2017. Blow also uses Twitch to regularly stream demonstrations of new language features as well as improvements to the game engine that will be bundled with the language.
  • Ігри

КОМЕНТАРІ • 408

  • @SETHthegodofchaos
    @SETHthegodofchaos 5 років тому +907

    This is a short reminder to turn your volume back down after you finished watching the video :)

    • @faust1652
      @faust1652 5 років тому +8

      you are a saint

    • @michaelanderwald4179
      @michaelanderwald4179 5 років тому +9

      This video is about 17db too quiet. Someone didn't watch his LUFS on this one.

    • @tatoforever
      @tatoforever 4 роки тому +5

      Saving a pair of ears! 😅👌

    • @nathanesau1
      @nathanesau1 3 роки тому

      @@funnyonlineuploads for

    • @RogerBarraud
      @RogerBarraud 3 роки тому +1

      Thankyou :-)

  • @mkaatr
    @mkaatr 5 років тому +292

    Game compiles in 1.7 seconds, his reaction: that is pretty slow.

    • @seditt5146
      @seditt5146 4 роки тому +36

      @@JRichard86 I have heard mention from many of my coder friends that their projects at work, games and not, take like 4-6 hours in many cases for full rebuilds.

    • @0xCAFEF00D
      @0xCAFEF00D 4 роки тому +9

      @@JRichard86 ua-cam.com/video/7KXVox0-7lU/v-deo.html
      This is a good one. A build system that builds the game in a day if it doesn't crash.

    • @truthteller4689
      @truthteller4689 4 роки тому +13

      My Unity game is taking about 13 seconds to compile! It is too slow for me!

    • @myanrueller91
      @myanrueller91 3 роки тому +1

      Okay, but how many times did he do a compile before the talk just to keep it in registers and RAM?

    • @jonny__b
      @jonny__b 3 роки тому +33

      @@myanrueller91 I've seen him compile cold on his stream. It's still insanely fast

  • @bitchplease5895
    @bitchplease5895 5 років тому +169

    Lot of bad comments about the language, but I think we should just appreciate that someone has dedicated lots of hours to give us an alternative to C, which seems to focus on problems that most of the programmers face while working on large projects

    • @rallokkcaz
      @rallokkcaz 5 років тому +5

      Bitch Please check out the Crystal programming language as well. It's an exciting time for compiled expressive languages. Thanks LLVM!

    • @G33KN3rd
      @G33KN3rd 5 років тому +22

      this isn't an alternative to C, it's an alternative to C++.

    • @G33KN3rd
      @G33KN3rd 5 років тому +8

      @Caene Depends how Jai comes out. I mean remember that Jai isn't even released yet for use/testing. Secondly, why not use C99 for a game engine? I mean when Jai releases, the industry would likely evolve to have C and Jai mixed code which would be the more likely outcome rather than solely Jai.
      IIRC, a developer said at CPPcon that C++ is used in gaming industry just because culture norm and it just sorta became the standard that way and he said he preferred C99.

    • @G33KN3rd
      @G33KN3rd 5 років тому +11

      @Caene yea, most programmers stick to what they learned in college or what their job requires. It certainly doesn't help when tech recruiters just function off buzzwords to make money. I still contend that Java, with no unsigned types or any way to pass primitives by reference, shouldn't have reached top language status...
      Another thing I note is that, with Jai's arrival, we're pretty going into the Era of Industry Specific Languages; Java/C# for business/enterprise apps, Jai for gaming industry, C for the embedded systems/IoT, Python for teaching & scripting, etc.

    • @gracefool
      @gracefool 4 роки тому +3

      @@G33KN3rd
      I think you're talking about developer Mike Acton (now lead dev at Unity) in this talk: ua-cam.com/video/rX0ItVEVjHc/v-deo.html

  • @DanielGilchristYT
    @DanielGilchristYT 5 років тому +138

    The best way to make this presentation would be to find something that took so long to compile in a C language that he could give the presentation while it was building. And then build the same program in JAI at the appropriate time slot so they would finish at the same time, at the end of the presentation, just as he's ready to make his final point.

    • @invntiv
      @invntiv 3 роки тому +23

      Yeah you know like it would be so easy for him to have just rewritten a whole c++ game in Jai , its not like he’s spending his time writing a new language or anything

    • @saniancreations
      @saniancreations 3 роки тому +4

      @@invntiv I imagine he'd just write a C++ to Jai transpiler, and run that on a C++ game (maybe even The Witness)
      Not that making a transpiler any less hard, it'd be funny though

    • @lnus7832
      @lnus7832 3 роки тому

      @@saniancreations well the first jai compiler protyoe actually did just that. it would transpile to c(++) and then run that compiler

    • @Praernym
      @Praernym 2 роки тому +7

      that is unrionically a really common way to prototype your new language

  • @mindvoxel
    @mindvoxel 5 років тому +232

    He's the hero Gotham deserves. I will be using this language. He hit upon so many different everyday language annoyance that as a programmer you tend to notice, but you just throw your hands up and say "fine" because it's just what everyone is used to. What he said about IDEs being cumbersome especially hit home for me.

    • @dsego84
      @dsego84 5 років тому +12

      zig is also interesting, very much on the same track.

    • @rareraven9951
      @rareraven9951 4 роки тому +5

      @jqbtube aaah you are a troll. I see now.

    • @RogerBarraud
      @RogerBarraud 3 роки тому

      @jqbtube Maybe you're just rude.

    • @franciscofarias6385
      @franciscofarias6385 2 роки тому +1

      Like, I don't even think the problems are the IDE themselves, but the fact that some problems exist and we need the cumbersome IDE to alleviate them. I'm not really a C++ programmer nor a game dev, but I like the way Jon thinks and I'm eager to see how Jai turns out.

    • @bertiesmith3021
      @bertiesmith3021 Місяць тому

      What’s problems with languages got anything to do with whether someone wants to use an IDE or not?

  • @pymath5771
    @pymath5771 11 місяців тому +17

    The bit about climbing to heaven reminded me about a Carl Jung quote (I'm paraphrasing here): "The tree that reaches the heavens has roots that reach into hell."

    • @friedrichmyers
      @friedrichmyers Місяць тому

      And it should have those roots in hell to be a great tree. If you solely reach heaven and avoid hell, the tree would way, as is the case with modern high-level languages

  • @i_am_feenster
    @i_am_feenster 4 роки тому +69

    Wauw, I had to check , I loaded up the witness and holy shit, the game loads INSANELY quickly compared to games of a similar size... He really does care about quality of life for both programmer and user!

    • @gracefool
      @gracefool 4 роки тому +1

      I heard it crashes a lot.

    • @elmasyiyenzenginsisman4877
      @elmasyiyenzenginsisman4877 4 роки тому +32

      @@gracefool I finished it twice. Never crashed once.

    • @gracefool
      @gracefool 4 роки тому +16

      @@elmasyiyenzenginsisman4877 I guess it's an inherent problem of not using a big engine: you're more likely to find new os / device driver / library bugs. What I mean is, crashes that some people report may not be his fault.

    • @raccoonlad
      @raccoonlad 3 роки тому +22

      Also vouching for insane load speed and 0 crashes

    • @nolram
      @nolram 3 місяці тому +1

      And he takes 10 years to make a game

  • @berkano_plays
    @berkano_plays 5 років тому +338

    Interestingly, the presentation software he uses is written in Jai and he's done it because "PowerPoint wasn't addressing his needs".

    • @VolcanicPenguin
      @VolcanicPenguin 5 років тому +15

      Hahaha

    • @MilieuChris
      @MilieuChris 5 років тому +47

      Worst case of NIH i’ve ever seen. This is quite unfortunate, as *we do* need both languages and paradigm shifts for game/simulation programming, however he thoroughly misunderstands (or deliberately misrepresents) several basic computer science principles that are still needed and used. He may be bright, but there are plenty of bright people out there that can skillfully deduce when to apply a paradigm and when not to. This binary thinking he employs (not just on computer science) is getting in his way.

    • @dsego84
      @dsego84 5 років тому +123

      It's not nih, it's a way to test the language & compiler. only writing real software with the language is going to show you the pain points.

    • @TraceMyers26
      @TraceMyers26 5 років тому +24

      @Chris at Milieu - I think you're misunderstanding the fact that he's talking about misguided implementations.

    • @lipid9119
      @lipid9119 5 років тому +64

      You took a long time to say nothing. Why is it wrong that he made an in-house tool? What did he misrepresent and how? What are those principles you're talking about and why are they needed?

  • @joshualarson2808
    @joshualarson2808 5 років тому +87

    I really appreciate that he sees the value in visual debugging. I find it ridiculous that we don't have more visualization tools today. And I don't mean that there aren't a few tools scattered across completely different languages and domains. I mean visualization isn't a part of the CULTURE of programming.
    I like to think of it in terms of "How much of my brain am I using?" because that is simply the neurological fact of how we'd improve. The future of programming will involve linear, logical thinking; holistic, intuitive thinking; our highly developed ability to stereoscopically visualize complex patterns much better than text allows for; and it will also involve moving more of our body (simply because a significant portion of our brain is already devoted to that).
    Programming today is just plain horrible. I'm really grateful there are people out there who care about making it better for game developers. :)

    • @dragz888
      @dragz888 4 роки тому +6

      your brain can intensely focus using one part at a time.
      trying to use "as much of your brain as possible" is essentially mental multitasking, which has been shown to hinder performance

    • @dickpiano1802
      @dickpiano1802 3 місяці тому +1

      People want to be hackers. People prefer to feel like hackers rather than to be productive. End of discussion.

    • @bertiesmith3021
      @bertiesmith3021 Місяць тому

      You should try programming in COBOL in the mid nineties. We are much better off now.

  • @user-tt4dy1ti5v
    @user-tt4dy1ti5v 2 роки тому +27

    Q&A
    49:25 Thoughts on Unity's Burst compiler?
    50:53 Will Jai support SIMD and auto-vectorization?
    52:35 Thoughts on Bret Victor's ideas about visual programming?
    56:22 Will Jai be free and open-source?

  • @soulstudiosmusic
    @soulstudiosmusic 5 років тому +45

    Hey guys, Insanely low volume on this video.

  • @adamschlinker972
    @adamschlinker972 3 роки тому +17

    "It's the thing that knows what files are in the project" hahaha

  • @casvanmarcel
    @casvanmarcel 5 років тому +34

    I could just watch a 10h presentation from Jon Blow. this was very great. I watched it 3 times already. I am very hyped for his new language, and you should be too if you understand the implications it will have. thanks for the upload and to jon for the presentation

    • @gracefool
      @gracefool 4 роки тому +2

      He has many hours of stuff here on UA-cam.

  • @Autopawn
    @Autopawn 5 років тому +47

    A horrible ghost exists in the modern programming, we can feel it though we can't see him clearly.
    Any effort in detecting the ghost is a good effort.

  • @xaviervilloing6636
    @xaviervilloing6636 5 років тому +9

    38:46 That "context" part was sooo interesting ! Built-in Global customizable toolbox interface. So powerful.

  • @timonpasslick
    @timonpasslick 5 років тому +6

    If you use a vector/Vec/dynamic array class (with RAII), do you also get that many cache misses?

  • @Alonedream15
    @Alonedream15 5 років тому +42

    Go Jon Go the history of programing will rember you !

  • @logixindie
    @logixindie 5 років тому +92

    I like to pretend that I understand (:

    • @TBButtSmoothy
      @TBButtSmoothy 4 роки тому +22

      any keyword that makes you feel lost, pause, write them down as a "to search: " list. Pay attention to the context in which those words are being used, or blank out any word you dont know and read/listen to how the sentenced is structured and search based on the blanked out keyword... this is how i quickly understand/learn as fast as possible (:

    • @SETHthegodofchaos
      @SETHthegodofchaos 4 роки тому +8

      @@TBButtSmoothy Great advice!
      Dont be ashamed that you dont know something yet. Instead be excited that there is still so much to learn.

  • @Jericho_oO
    @Jericho_oO 3 роки тому +2

    can't wait to try it out.

  • @chenlim2165
    @chenlim2165 5 років тому +31

    Wow! The criticisms of "modern" languages are spot on. The conventions that focus on performance are brilliant. I hope this can do for client apps what Ruby and Rails did for server apps. Godspeed Jonathan!

    • @anonymousweeble2224
      @anonymousweeble2224 5 років тому +11

      What did Ruby on Rails do for server apps? From what I see, Ruby on Rails stands as another example of a language trying to make the climb to heaven. A failed attempt at touching the holy grail. I wish I could make web applications in c, but I recognize the language + framework is only one problem that arises from the web. We've got to get rid of the layers and start over.

    • @SuperJer
      @SuperJer 5 років тому +2

      What's stopping you from making web apps in C? (At least on the server side since we're talking about Rails.)

    • @minRef
      @minRef 5 років тому

      superjetdotcom
      umm, nodeJS is kicking Ruby on Rail's ass, and it was written in C

    • @noxabellus
      @noxabellus 5 років тому +8

      @@minRef totally missing the point

    • @hasen_judi
      @hasen_judi 4 роки тому +2

      @@minRef lol Ruby is also implemented in C

  • @Gomace
    @Gomace 3 місяці тому +1

    Either this will Blow people out of the water, or it will Blow. There's no in-between.

  • @pskocik
    @pskocik 4 роки тому +6

    Why would forcing all functions to silently pass a context struct pointer be preferable to just letting the functions that need it access it via a thread-local variable?

  • @anonymousweeble2224
    @anonymousweeble2224 5 років тому +3

    Great work! Interested to hear the talk about the problems of auto-optimizations mentioned at 51:40

  • @antonsimkin
    @antonsimkin Рік тому +2

    i tryied to increase volume like 100 times while watching this video

  • @marcelowind
    @marcelowind 3 роки тому +7

    Why do they pan away from the slides? Even when he is pointing and mentioning something that is in the slides?
    I caught myself pausing and step framing to see if I could see what he was talking about

    • @strictnonconformist7369
      @strictnonconformist7369 3 роки тому

      I agree, that’s a stupid thing if you’re wanting to read slides.
      Now, for those reading lips, if they did it right, it might be better, but then why not have a signer instead, beside him?
      Then there’s closed-captioning. Of course, he does speak fast enough that most would need to watch at .5x speed.

  • @khatharrmalkavian3306
    @khatharrmalkavian3306 5 років тому +41

    VOLUME

  •  5 років тому +16

    Which of Jonathan Blow's other videos goes into metaprogramming in more detail?

    • @nergethic7759
      @nergethic7759 5 років тому +18

      Check out his demos: "Self-Browsing code" and "Code Modification". I guess that polymorphism is also a kind of metaprogramming so you could look at "Structs with Parameters", Polymorphic Procedures" part 1 and 2, although they are slightly outdated :)

  • @prezadent1
    @prezadent1 5 років тому +9

    3:18 Mystery Science Theater 3000

  • @liran9492
    @liran9492 5 років тому +34

    Hi, I am reposting this video on a Chinese website for people who are interested but have no access to UA-cam. I will state that you own the rights to it. Just let me know if you have a problem with this. Thanks.

  • @nyrtzi
    @nyrtzi 4 роки тому +17

    So in other words there's a lot of hastily built bad traditional stuff getting in people's way but everyone's just so used to it that most don't care.

  • @Olodus
    @Olodus 5 років тому +4

    Great talk. Am really looking forward to the language. Really like the answer to the "Future of Programming" question.
    I would probably have asked something about Rust since it is atleast playing in arenas close to eachother. I really like the static grantees Rust gives a programmer. I know Jon has commented on it before and said that he liked some parts about Rust (it was then just in its infancy) but maybe not all the cruff it imposes on the programmer. I really think that kind of stuff is a good answer to how we move forward as an industry (though I am not a very experienced programmer yet so I might be wrong). Not in the gaming industry maybe (you don't need to prove a game) but in the larger software industry as a whole. Take a hit statically and be sure it is correct when it is sent out. Then again, with the speed and ease-of-use of Jai's compiler static stuff would probably be something that can be added.

    • @hasen1957
      @hasen1957 5 років тому +4

      He talked about Rust a lot. He said it introduces too high of a barrier with its ownership rules and it's basically a "big agenda" language, which is not what JAI is.

    • @Olodus
      @Olodus 5 років тому +1

      Ah ok thx, haven't watch as much of the streams as I would have wanted. Yeah I can see his argument there and would probably agree to some degree. As I said, I can see why Jon made Jai the way he did and are really hyped for it.
      But as I said, I do believe the other parts of the industry needs the security Rust gives and it is really awesome that we don't have to sacrifice any (runtime) speed to have it. But as I said "what do I know" really. I still believe dependent types and shit like that will make it to industry some day so...

    • @oblivion_2852
      @oblivion_2852 4 роки тому +4

      @@Olodus I think Blow's intent with Jai with his metaprogramming and compile time message systems are that you can literally write your own code to implement Rusts guarantees yourself. That's probably one of my favourite things about Jai is that that compiler is no longer a black box but rather a compatriot that you can talk to and ask for the finished data structure so that you can do tests and write in whatever style of thinking you prefer.

    • @atkascha
      @atkascha 7 місяців тому

      its never coming out and is just a hobby project most likely at this point in time. he's been working on it for 10 years, and its been 5 years since this talk. Rust will end up replacing C++ over the next 10 years

  • @junosoft
    @junosoft 2 роки тому +12

    21:48 1 Million lines of code per second might seen hard or impossible, but here is some perspective:
    I've written a toy compiler in C, and was comparing it to Jon's goal.
    It is capable of compiling 18127 lines of code in 57 Milliseconds. This is 318400 LoC/s, about 3.14 seconds to compile 1 million lines, 3 times slower than Blow is goal.
    real 0m0.057s
    user 0m0.029s
    sys 0m0.011s
    when outputting BF
    and about 3 seconds when outputting LLVM and then, calling clang.
    real 0m2.941s
    user 0m0.332s
    sys 0m0.162s
    (If you repeat, it gets down to 500 milliseconds, because of cache, but that is not fair.)
    Just 6000 LoC per second when calling clang.
    So my toy compiler is just 3 times slower, than blow's goal. (I never cared about performance on writing, except deciding to use C).
    But it is a toy compiler, and the language is very simple (It is C-like syntax, but only primitive types, no structs).
    Clang is much, much slower than what it could be, if Jon can write himself a C++/C like language performance-wise and blow this shit out of the park.

  • @daleowens7695
    @daleowens7695 4 роки тому +14

    I want to use this language already.

  • @xvidcap
    @xvidcap 5 років тому

    Thanks for the upload!

  • @robchr
    @robchr 5 років тому +23

    I think it's important to study both high level and low level languages. Learning Haskell has taught me to make smaller interfaces that follow algebraic laws. For example, data parallelism is the Functor interface and task parallelism is the Applicative interface. And if I need to sequence several operations on data I can use the Monad interface.
    Languages that can represent these abstractions easily usually require some sort of runtime cost because of GC. Now I've now started learning the Rust language and been able to represent these abstractions without the need for heap allocations and dynamic dispatch. I think that's very promising for using high level composable interfaces while still having low level control over where memory is allocated.

    • @jamma246
      @jamma246 5 років тому +8

      I agree with this. And I don't think that functional languages necessarily hide methods, so long as you understand them properly. The issue is that it's very easy for someone inexperienced to make a working but very slow program using a functional language, but similarly it's very easy for someone inexperienced to write a non-functional program which works reasonably quickly but has bugs. I think if you know what you're doing and keep organised, incorporating ideas from higher level and functional languages can be very helpful.

    • @gracefool
      @gracefool 4 роки тому

      Though it's not coincidence that you've both said *functional*, not object-oriented.

  • @pleggli
    @pleggli 5 років тому +3

    Go's incremental build (build cache) is quite nice. An directory is the smallest compilation unit in the language, the cache works by doing an hash of the source files in the directory to decide if it needs to be recompiled. The meta programming features of Jai probably makes this harder to implement thogh since any resource anywhere could be drawn in during the build.

    • @rationalcoder
      @rationalcoder 5 років тому +1

      I think the idea of Jai is that there is no incremental build solution because there aren't incremental builds. Everything is rebuilt completely every time and it still takes a few seconds max. It's just like `jai program.jai` and done, no matter the project size.

    • @pleggli
      @pleggli 5 років тому +1

      Well, with some kind of build cache that could become a fraction of a second instead which is even better.

    • @rationalcoder
      @rationalcoder 5 років тому +3

      Faster? Maybe. Better? Probably not, IMO. The whole point is for every build to be a unity build. Incremental builds are a serious annoyance in large projects. Having a full rebuild every time is the ideal development situation. It's one whole class of potential errors removed. I do imagine, however, that he wouldn't be against storing libraries in an IR for such purposes. For now, hitting his 1M loc / s baseline goal is fast enough. That's fast enough to compile unreal engine in ~2 seconds (In debug mode). Once you have a few million loc in your codebase (you would need like 10 M to get an annoying turnaround time), I figure pulling code out into libraries would be natural, and compile times would start to increase more logarithmically. Maybe incremental builds could be optionally enabled to help when you're working with release builds? I think incremental builds should be put off for as long as possible, until there is no other way to speed things up.

  • @opl500
    @opl500 3 роки тому +1

    I can see running code at compile time that *extends the compiler* getting abused.

    • @Mark-kt5mh
      @Mark-kt5mh 3 роки тому +1

      That sounds a lot like “real programming” interesting results are possible, but they never make up for the productivity and debugging inefficiencies.

  • @arwahsapi
    @arwahsapi 3 роки тому

    So has the compiler been publicly available yet?

  • @Q_20
    @Q_20 Рік тому +1

    Can I just look at the presentation screen

  • @trisinogy
    @trisinogy 4 роки тому

    Audio level is not OK.

  • @felixp535
    @felixp535 5 років тому +1

    I'm really curious how much this language will be focused for game development. And I'm wondering how much of a hassle it will be to try and develop something that is not a game with it. Also hope would could have some kind of modifiable editor like Unity or Unreal (of course not that much complex), but something that can be reused as a base for almost every game.

    • @hasen1957
      @hasen1957 5 років тому +1

      He mentioned several times that he plans to release a game engine with the language that can be used as a basis for a lot of games.

  • @unsaturated8482
    @unsaturated8482 11 місяців тому +1

    This guy is op.

  • @zemlidrakona2915
    @zemlidrakona2915 4 роки тому +1

    This guy knows his stuff. He's not just some Joe Blow......... On second thought I bet he hears some variation of that joke every day.

  • @PoxikFrostbite
    @PoxikFrostbite 4 роки тому +8

    If you take The Science out of science, more people will pretend to know how to use it.

  • @CrowCZ
    @CrowCZ 4 роки тому +4

    That meta programming stuff during build (talking to compiler, adding code etc.) is very similar to what Microsoft recently added to C# as Source Generators. I know that it's not a new concept, but the implementation and theory is very similar, so I wonder if they got inspired by Jon on this.

    • @SG1guru
      @SG1guru 4 роки тому +2

      Its not a new concept, for example Haskell has this feature since 2003, and i'm pretty sure it's not the first to do compile-time code execution either. Also at least one of the creators of haskell now works for Microsoft in their language research/compiler division, so if anything, it was this language that inspired the feature.
      The thing about the code execution at compile time is that it makes compilation result *undecidable* (see halting problem) which most compilers/languages are trying to avoid, C++ for instance is very careful to relax its constexpr limitations to ensure that the expressions always terminate. Really a tool like that shouldnt be the only way to do metaprogramming, but a method of last resort instead, when no other solution is possible.

    • @mennovanlavieren3885
      @mennovanlavieren3885 Рік тому +2

      It has been a thing since Lisp in 1960. Everyone who did an academic study in Computer Science knows about this concept. If not ask your money back.

  • @kuklama0706
    @kuklama0706 5 місяців тому

    Have you heard the story of MSVC 6?

  • @ReagueOfRegends
    @ReagueOfRegends 5 років тому +21

    "The IDE is just a giant piece of junk."
    Chortled outloud at that one. So true. Switching from windows to a linux box with only command line tools and my productivity at least doubled.

    • @MrGeekGamer
      @MrGeekGamer 5 років тому +18

      As a developer that uses both, I don't believe you. Visual Studio blows gdb out of the water for debugging.

    • @ReagueOfRegends
      @ReagueOfRegends 5 років тому +4

      And that is why any sensible person uses gdbgui

    • @MrGeekGamer
      @MrGeekGamer 5 років тому +10

      Sensible people or just rabid Anti-Microsoft people? I'll use whatever gets the work done best and for debugging C++, Visual Studio does it best.

    • @ReagueOfRegends
      @ReagueOfRegends 5 років тому +7

      Ah, the rare anti-contrarian contrarian.

  • @Noble_Savage
    @Noble_Savage Рік тому +2

    5:32 "you can have a language with most of the features of C# but as low level as C at the same time, it's just that nobody really made that" They have it's called Beef Lang!

    • @turnkey_hole
      @turnkey_hole Рік тому

      maybe when you can run the IDE on a mac lmaooooo

    • @SepehrKiller
      @SepehrKiller 11 місяців тому

      seems like they started creating Beef Lang in 2014, Jonathan Blow also Started creating Jai Programming Language in 2014 as far as i know
      and they introduced Beef Lang to the public in 2020 based on my research
      this talk was in 2018, so basically as far as he is concerned such a language didn't exist or if it did, it wasn't popular or widely used (think like C++, C, C#, Python, JS, Swift, Java, Kotlin, Rust, ...)

  • @junosoft
    @junosoft 3 роки тому +1

    22:28 I can relate

  • @nambreadnam
    @nambreadnam 4 роки тому +9

    This will come out and people will abuse the hell out of the language in exactly the ways Blow bemoans, except way worse because the base usage is faster ;)
    His ideas are interesting, but only apply to the very skilled. A lot of the "bloat" in languages is about reducing cognitive load, often at the expense of runtime speed.
    This argument kinda falls flat regarding build systems though. That Jai build interface looks amazing.

    •  4 роки тому +8

      I don't agree with this language only applying to the very skilled. I mean, I'm not very skilled, but I can see this making programming easier even for complete beginners. The existence of an extensive yet readable standard library that's good enough for making simple games, and the lack of complicated third party tools and weird ways of doing things (not just build tools and header files), makes it really easy for newbies to start and others to progress.
      The bloat in modern languages doesn't really reduce cognitive load, it just breaks the problem into smaller pieces that seem easier, but actually make it harder to solve the whole. With this language, we can get both reduced cognitive load and good runtime speed. We can reach for the sky while keeping our feet on the ground.
      I also don't think this language will be abused much, because the language usually makes the dumb things hard and complicated, and the smart things easy and simple. The simplicity makes it easier to notice that you're doing something stupid. And a simple language makes for simple documentation and learning materials.
      The first people to use it will be early adopters who are aware of the problems in modern languages, and have the skills and motivation to be productive instead of abusing it. When the abusers finally arrive, because the industry has bought in, the community and ecosystem will be well equipped to stop bad advice from spreading. Maybe I am underestimating the power of dishonest consultants and religious leaders, and maybe a situation where Jon giveth and Uncle Bob taketh away will happen, or maybe Microsoft will do something shady, but these have been important considerations since the early days. The main solution to the problem of abuse is to make the right things easy and intuitive, so there aren't many cracks for accidental or deliberate confusion to seep through.

    • @nambreadnam
      @nambreadnam 4 роки тому +6

      @ Apologies I meant that his programming style applied to the skilled, I agree that the language may be much easier to use.
      I hope you're right about the best practices, just my own experience hasn't been that in other languages. I don't think misinformation and less then stellar coding standards are a result of maliciousness though, more just imperfect information propogation through vast networks of programmers.

    • @GonziHere
      @GonziHere 2 роки тому +3

      @ Yeah, There is something to be said about "simple" functions that you learn once and then use for all your life (think woodworking), as opposed to learning nooks and crannies of a ready made solution that has made tons of assumptions "for you" (think game engine).
      I do think that he is right, because - most of the time - industry solution doesn't really suit your needs. It helps to hire other people to the project, but it doesn't help the project directly.

  • @Jesus228FBI
    @Jesus228FBI 13 днів тому

    If The Witness took one minute to load, no one would be bothered. If the player has chosen to play this game, they are already on the path of suffering.

  • @s3340985
    @s3340985 4 роки тому +8

    I'm not even a game developer, but htis language sounds awesome (coming form a JS dev)

  • @Ilumar589
    @Ilumar589 5 років тому +4

    Maybe someone already asked, but how will jai be any different than the rust language regarding the problem it's trying to solve ?

    • @Kniffel101
      @Kniffel101 5 років тому +7

      Simplicity (especially in the build-process),
      *Better compile time,
      *More performance (at least eventually; Jon wants Jai-Code to be faster than C++ code, and most C++ compilers produce faster code than Rust-Compilers),
      *No OOP,
      *No garbage collection,
      *Powerful metaprogramming:
      - You have access to the AST (Abstract Syntax Tree) and the compiler provides your metaprogram with necessary information via messages.
      - You can call _any_ function and/or external API during compilation, including graphics/networking, calling programs etc.
      *The compiler looks for external dependencies /libraries itself. [I don't know if Rust does]
      *Temporary Storage (useful for strings for example)
      *Like Rust it has multiple return values.
      Most likely I missed a ton of features. But you can look at his Demos/Presentations to get a glimpse at all of them. :)
      _Note that many are a up to 4 years old, so implementation details have changed in some instances._
      ua-cam.com/video/UTqZNujQOlA/v-deo.html

    • @aiman_yt
      @aiman_yt 5 років тому +2

      Kniffel101 rust does manage dependencies and has unity build. No header files.
      Does Jai have generics?

    • @Kniffel101
      @Kniffel101 5 років тому +1

      No header files in here as well.
      Jai has polymorphism.
      No idea if that answers your question, since I'm not too familiar with the term "generics".
      But maybe the following video presentation does, I advice to view it at 1.25x, to shorten the time to

    • @aiman_yt
      @aiman_yt 5 років тому +2

      Kniffel101 yeah that does answer the question. Thanks

    • @Kniffel101
      @Kniffel101 5 років тому

      +Aiman
      No problem! :)

  • @vladimirkraus1599
    @vladimirkraus1599 5 років тому +6

    I very much like his approach to programming languages and thinking about problems and I admire his creativity and stubborness to make things perfect. I am looking forward to this new language. Though there are already some which are somewhat close to what he is creating... Nim, Zig, Haxe... But none of them sounds perfect. Maybe Jai will be. But I am afraid of one thing. I fully understand the criticism of OOP, but if a language does not support this paradigm (dynamic dispatch, inheritance...), I do not think it will be widely accepted. Maybe the next iteration could be "Jai with classes". In other words, give replacement for C++ not just C... Make it modern, without all the historical burden and without exceptions (we want explicit error handling!), which will make is much much simpler. :)

    • @hasen_judi
      @hasen_judi 5 років тому +1

      I think he's designing it so that all the things that people use dynamic dispatch to achieve can be achieved at compile time. If you do want dynamic dispatch you can manually create a struct representing your vtable or something like that.

    • @gracefool
      @gracefool 4 роки тому +4

      Who cares about wide acceptance, nothing has wide acceptance right from the start unless it has billions of dollars behind it. Paradigm shifts always take time to propagate, it was true of OO and us also true of undoing it. Or as cyberpunk pioneer William Gibson said, "The future is here, it's just not evenly distributed."

  • @blenderpanzi
    @blenderpanzi 4 роки тому +6

    The part about program icons kinda surprised me. I write a tiny command line program under Linux which I cross compile to Windows and I add a program icon just for fun. It's not hard. I compile several .png files to an .ico file using ImageMagick and then use the mingw Windows resource compiler to compile a tiny hand written .rc file (23 LOC) that references the .ico file to an .obj file and then compile that in with all the other object files to the final binary. All in one simple Makefile (251 LOC, but doing a lot more than what I just said, including having configurations to cross compile to win32, win64, and 32bit/64bit Linux).
    So that's *more* complicated when actually doing it on Windows using the official tools? o_O

    • @blenderpanzi
      @blenderpanzi 3 роки тому

      @championchap How do you compile any software without thinking about? Of course you have to provide the Icon in different resolutions (PNGs -> ICO) and then somehow tell the compiler about that and other metadata (program name, like author name, description etc.) using a RES file.
      I just use ImageMagick and a Makefile because I think it's really convenient.

  • @Jesus228FBI
    @Jesus228FBI 13 днів тому

    > I don't even know what job that is (a job of IDE)
    yeah, what job could it be? I'm super smart and I can navigate in a legacy C++ codebase through my super cool vim/emacs program

  • @llothar68
    @llothar68 Рік тому

    Faster than C++ ? Runtime or compile time? With C++ Modules or without (they can improve everything 10-50x time)

    • @serkardis292
      @serkardis292 Рік тому +6

      Modules are C++ 20 feature and this video is much older. They don't speed up initial compilation, only subsequent ones.

    • @llothar68
      @llothar68 11 місяців тому

      @@serkardis292 Of course they speed up initial compilation, factor 10 just by including "import std;" Also it does only not speed up the first initial compilation of a single compilation unit. In a full build that units can be added multiple times to all the different compile variants and unit test programs.

  • @FirstNameLastName-xe4mx
    @FirstNameLastName-xe4mx 3 роки тому +15

    "IDE is a giant piece of junk" , that's what i wanted to hear.

    • @Nick-lx4fo
      @Nick-lx4fo 3 роки тому

      Notepad++ ftw

    • @FirstNameLastName-xe4mx
      @FirstNameLastName-xe4mx 3 роки тому

      @@Nick-lx4fo vim is best imo but never used notepad++ so can't tell about that.

    • @Nick-lx4fo
      @Nick-lx4fo 3 роки тому

      @@FirstNameLastName-xe4mx vim is the best, next to emacs

    • @FirstNameLastName-xe4mx
      @FirstNameLastName-xe4mx 3 роки тому

      @@Nick-lx4fo emacs is not just a text editor so it is lot more powerful and extensible . I think vim still is the best for being just a text editor.

  • @FaZekiller-qe3uf
    @FaZekiller-qe3uf 11 місяців тому

    So, zero-cost abstractions? Yay!

  • @RiboFlavin64
    @RiboFlavin64 9 місяців тому

    I just feel like he gives off the vibes of if you want to make a 2d platformer with a unique gimmick you should fuck off and do something worthwhile, not necessarily from this video, just his general persona

  • @satellite964
    @satellite964 5 років тому +1

    Best language is here.

  • @sporefergieboy10
    @sporefergieboy10 5 років тому +10

    THEY’RE LAUGHIN CAUSE THEY KNOW

  • @ytsas45488
    @ytsas45488 5 років тому +1

    TBH, not sold on the implicitly passed context struct. But the metaprogramming feature looks really useful.

  • @aiman_yt
    @aiman_yt 5 років тому +6

    Does this language have a lot of undefined behavior? If not, then its gonna be great. I mean, C has signed overflow undefined. Come on, this is 2018 everyone and their dog uses 2's complement

    • @Kniffel101
      @Kniffel101 5 років тому +6

      You can literally implement certain types of behaviour into your codebase yourself!
      He demo'd it with a automotive format called "MISRA" which doesn't allow for indirect recursions for example.
      His metaprogram was able to test that among many other things.

    • @0xCAFEF00D
      @0xCAFEF00D 5 років тому +4

      He's had a lot of rants on UB.
      He's saying the language has no undefined behavior. There's platform defined behavior though.
      Chandlers cppcon talk has also been brought up and he has expressed that UB isn't necessary for optimization. I think the example that was brought up was UB signed integer wrapping for loops allowing the compiler to assume you never wrap (which can clearly be helpful). Jonathan's response was that if you wanted to express that you should have a language feature that allows you to express that.
      All of this is just what I recall.

  • @marijnstollenga1601
    @marijnstollenga1601 5 років тому +4

    jeesh that syntax

    • @aiman_yt
      @aiman_yt 5 років тому +4

      Marijn Stollenga better than C++ template spaghetti

    • @marijnstollenga1601
      @marijnstollenga1601 5 років тому +2

      True, it is almost impossible to make something worse than that

    • @needlessoptions
      @needlessoptions 4 роки тому +2

      I love it

  • @MusashiHunter3
    @MusashiHunter3 4 роки тому +10

    As a programmer who uses both C++ and C#, I'm really excited about this language. However, I've also seen Blow talk about the need for programmers to be really into managing the nitty gritty details of memory allocation, etc several times now. If our brains are anything like a kind of computer, think about how ridiculous it would be for groups of neurons or even some segment of our conscious minds to be aware of and to be managing the position and composition of individual protein chains in particular neurons. I agree that software has probably become bloated with legacy code, code that is never used, and code that is poorly implemented largely because hardware has gotten so much faster in such a short amount of time.
    BUT, why should we spend our time worrying about really small details and debugging complicated chains of compiler errors just so we can say that we're following Blow's advice about what it means to program? Who would like to go back to a world where everyone grows their own food on their own farm, trades with a small group of neighbors for specialty items to use on the farm, and never travels more than 150 km from their hometown in their time? I know that probably seems like an extreme leap, but modern economies have come about because they allow us to focus on particular skills or aspects of our lives, while others are doing the same in their lives. (This is called division of labor...)
    As a programmer, I really don't want to be spending my valuable time debugging obscure and poorly written C++ (even after 30 years!!!) compiler warnings and errors about references and pointers, much as I definitely don't want to spend my time in the field taking care of individual plants, watering them, and weeding the fields, etc. Even most farmers don't have to manage the nitty gritty details of their crops as much any more, as farms are becoming more and more mechanized, the farmers a left taking care of higher order problems. More modern languages, like C#, allow me to focus more on the structure of my program, and worry less about the exact detail. This is similar to Knuth's invention of LaTeX to publish and write his books, because the word processors of the time (and even today), force writers to spend so much time managing fonts, font sizes, indentation, etc at the micro level that you can't get any higher level stuff done....
    End of rant.

    • @kynikersolon3882
      @kynikersolon3882 4 роки тому

      I suppose it is a question of requirements, games are a domain where you have both extreme complexity and very high performance requirements.So it makes sense to be able to handle every bit.

    • @zatherz2498
      @zatherz2498 4 роки тому +5

      "Who would like to go back to a world where everyone grows their own food on their own farm, trades with a small group of neighbors for specialty items to use on the farm, and never travels more than 150 km from their hometown in their time?"
      Me. The Industrial Revolution and its consequences have been a disaster for the human race.

    • @tanko.reactions176
      @tanko.reactions176 4 роки тому +1

      > BUT, why should we spend our time worrying about really small details
      because custom tailored code will always beat general purpose code that is written to cover most cases (garbage collection).
      simple as that!
      2nd thing i wanted to say - regarding your first paragraph:
      yes, you need to abstract low level detail away. but you should abstract it yourself, for each project, from the ground up!
      don't use a general purpose solution that just fits 80% for your problem...
      write your own low level stuff that is 100% perfect, once for that project and then use it.. no longer having to think about it!
      build on your own abstractions and reach "higher levels" yourself, don't rely on general purpose bullshit!
      reach for the sky (higher level abstractions), but keep your feet on the ground (low level nitty gritty)!
      thats the main problem in the current status quo where programming is headed or has been for a while... managed languages are #1 right now and dominate the field.
      they are poop!

  • @VolcanicPenguin
    @VolcanicPenguin 5 років тому +7

    As ambitious as I am, I like that I'm not this ambitious.

  • @matthewpeterson5159
    @matthewpeterson5159 5 років тому +40

    AWESOME talk. This language is the best language ever invented BY FAR. CAN NOT WAIT to use it!

    •  5 років тому +1

      The crowd he has gathered, who will eventually use the language, will likely create good examples of good design to people coming to the language, and nudge historically bad programmers toward better solutions. There are no objects, and there are features that make data-oriented design easier.

    • @kalekold
      @kalekold 5 років тому +3

      If he wants people to move from C++ then Jai will have to be interoperable with C++ and be able to sit alongside it. Big companies are not going to rewrite huge 20-30+ year old pieces of software in one go.

    • @matthewpeterson5159
      @matthewpeterson5159 5 років тому +2

      kalekold I don't think he cares what people/companies do; he made this language for himself, fundamentally. Other users are a secondary thing.
      But I mean it can interop with C and I'm sure there'll be some level of C++ interop, but frankly I don't think it's important at all. If you're using this language you're probably starting a new project anyway right?
      Idk. All I know is that I can't wait to be able to use a language that allows me to do what I want and need to do without having to fight the language/compiler for hours on end. Plus compilation speed :P

    •  5 років тому +3

      They probably won't port huge 30+ year old software, and probably not in one go, but they might write any new software in Jai, interface through C if necessary, and slowly port what's needed.
      Then again, big companies, or some people working for them might not be interested in actual productivity gains, only the expendability of their workforce, and the ability to charge more for more hours.

  • @MrVectorman
    @MrVectorman 5 років тому +4

    I'm not 100% sure if is a good idea starting the talk with a rant and after tell, "Yeah but my language is different".

    • @hasen1957
      @hasen1957 5 років тому +11

      The whole point of this language and why it exists is because of all the stuff that the other languages are doing that Jon considers stupid and wrong. It's not "Yea but I'm different", it's "and therefore I wanted to do something completely different from the aforementioned".

  • @chrisvouga8832
    @chrisvouga8832 Рік тому +3

    Why doesn’t he just use holy c??

  • @pretzelboi64
    @pretzelboi64 4 роки тому

    C++ projects only take forever to compile because people abuse classes. When you only include the things that you need and don't abuse templates, it's pretty damn fast.

    • @llothar68
      @llothar68 Рік тому

      Yep and with this "terrible" IDEs you don't need the one class one file rule. Speeds up so much because most classes are too small.

  • @pleggli
    @pleggli 5 років тому +27

    I think that Jon takes his criticism too far because he's only thinking about programs where raw performance is more important than having as few potential exploitable security issues as possible also can be the most important factor where it's not an issue to take a performance hit for the added ease of mind. Jai looks like it will be a good language regardless..

    • @kiwec
      @kiwec 5 років тому +6

      That's why other languages exist. You can't have everything, and of course you have to take tradeoffs.

    • @pleggli
      @pleggli 5 років тому +22

      Yes, but there is a difference in repeatedly stating that certain language/runtime features are "wrong" instead of saying something similar to "doesn't work well for game engine development".

    • @JochemKuijpers
      @JochemKuijpers 5 років тому +18

      pleggli at a game development talk, that's the implied context. Though the language will be all purpose by the looks of it, so it'll likely be able to do a lot more than just games.
      Having the meta program can help enforce security practices that can't even be tested for using unit tests or compiler options in other languages.

    • @murrylancashire
      @murrylancashire 5 років тому +10

      The point is that there is a false dichotomy that language features that make development faster and less error-prone are by definition slow. Being slow and being easy and quick to develop with are not linked.

    • @pleggli
      @pleggli 5 років тому

      I have developed a lot in lisp earlier and I know that meta programming is powerful even if it can obscure how a program works. But you can always write your own linters for languages and the simpler the language is the easier it is to write those linters. I've never tried to write a linter for C or C++ though for some reason even though it would have possibly been a good idea to have one in some cases :)
      Btw, I usually use emacs rx library as an example of good use of meta programming.. It's a DSL for regular expressions with only one small macro which validates and compiles the dsl language into a regex github.com/emacs-mirror/emacs/blob/master/lisp/emacs-lisp/rx.el . It's a very good example how to use meta programming in an elegant way to enforce it's own usage at macro expansion time.

  • @kaustubhken
    @kaustubhken 5 років тому +6

    He is 47 near retirement still he is passionate to create a programming language that’s really great.

    • @vladimirkraus1438
      @vladimirkraus1438 5 років тому +10

      Near retirement at 47??? Not at all. Actually he is something like in the middle of his productive years... Well, he could have retired if he wanted not because of age but because of the money he made developing games.

    • @pogo575
      @pogo575 4 роки тому +2

      Game designer... retire???? 🤣🤣🤣😂🤣🤣😂🤣🤣😅

    • @alvarohigino
      @alvarohigino 10 місяців тому

      Wait, 47 isn't that old. He has at least 15 years if it's the desire of God, of course.

  • @intellivision-amico
    @intellivision-amico 5 років тому +41

    can't be worse then modern C++

  • @digitbell8504
    @digitbell8504 5 років тому

    10:00

  • @johnjackson9767
    @johnjackson9767 5 років тому

    Just realized that JBlow sounds just like Dave Rubin.

  • @llothar68
    @llothar68 Рік тому +1

    Still nothing released 4 years later.

    • @serkardis292
      @serkardis292 Рік тому +2

      It's in closed beta and gradually rolls out to more and more people.

  • @Muskar2
    @Muskar2 11 місяців тому +1

    A lot of people think Data-oriented design and languages like Jai are only useful in the game industry where the performance aspect is commonly, appreciated, acknowledged and even expected by end-users. But I still think enterprises could benefit from revolutions like these as well. Web development (Javascript, Typescript, Python, PHP and Ruby) and Java/C# are really terrible languages for performance, and so much stuff tries to trap people into building many layers of abstraction that become very hard to manage. But performance matters for economics and often to users (especially when features match competitors'). What's needed is productive languages that has a low skill floor to outperform the standards today.

    • @pierreollivier1
      @pierreollivier1 6 місяців тому +1

      couldn't agree more, I get it interpreted or byte code language are better for the web workflow ect, but I really don't understand how and why It's so complicated for them to embed a better language into their browser, I mean there is a new javascript framework everyday, don't tell me they can't put together a better language for web development that Javascript. I've tried python recently and while it's amazing, I wasn't impressed that much, throughout the years I've come to enrich my own personal libraries of C functions so much so that I cover basically 90% of the std and more higher level functions, my code isn't even fully optimised I could probably spend a week or two, and improve a lot of functions but even that code puts python to a shame I can split a megabyte of string, while python his still interpreting which functions to use. In the meantime I still get a relatively high level experience and I'm more productive because I can rely on that library to do stuff, This didn't take me that much time to do, every time I encounter a problem that a higher level functions could solve, I wrote it put it in the library and that's it. I'm not even that good at programming, so just like you I don't understand how web people are putting up with such crappy language that they have to build a framework around everyday just to avoid using the language itself, instead of doing something to improve their environment and build a powerful, typesafe, language.

  • @miguelprovencio5257
    @miguelprovencio5257 Рік тому

    I’m not going back to vi or emacs so IDEs must be doing something worthwhile.

  • @MNNoxMortem
    @MNNoxMortem 5 років тому +6

    I disagree with him on so many levels, most of his videos become a pain to watch. However, I get where he gets many of his ideas from and therefore always value his views to see other opinions. No matter what: He was pretty successful as a game designer.

    • @kevinscales
      @kevinscales 4 роки тому +11

      You should elaborate on what those 'levels' are. I often see people dismiss his thoughts but nobody seems to give any reasons. It would be useful to me to hear some different perspectives.

    • @gd7681
      @gd7681 3 роки тому

      Yeah you need to be more specific than that.

  • @MattBee2k2
    @MattBee2k2 5 років тому +1

    This is why I love that unity uses C#, it's just way easier to get on with what you need to do.,

    • @needlessoptions
      @needlessoptions 4 роки тому +2

      Yea but C# is way slower than C(++) lol

    • @magnuscritikaleak5045
      @magnuscritikaleak5045 4 роки тому +1

      FiddyOnFiddy is so wrong on so many levels, C# was created by merging on C ++ and C family. C# utilises garbage collector unified random access video memory over Dedicated graphics memory (GPU) ram over gpu syntax will make Games run 3 times slower than C++/Python.

    • @megatronusv2215
      @megatronusv2215 3 роки тому +1

      @@magnuscritikaleak5045 OK and? Unity is not the performant engine, most people know that. It's good because it's easy to use and beginner friendly (although the docs suck)

  • @Minotauro_di_Chieti
    @Minotauro_di_Chieti 4 роки тому

    Jon has an uncle whose name is Job.

  • @earlmarshal2608
    @earlmarshal2608 5 років тому +6

    So the context struct. basically a thingg which acts as global namespace can be expanded? pretty much sounds like polluting global namespace which pretty much everyone agrees that it is bad.

    • @Yogzeek
      @Yogzeek 5 років тому

      From what I gather from some of the code in the slides and some of his other videos, the user code can create contexts and choose which context a library uses. Jon has shown examples in his videos of how the user code can dictate how libraries utilise the user's namespaces.

    • @pixlark4287
      @pixlark4287 5 років тому +14

      There's nothing wrong with having a global namespace for things that are global, like thread ID, allocator function, temporary storage, etc.
      And if people want to expand it with things that it shouldn't contain, that's on them. Jon isn't going to restrict the language to make it idiotproof, his goal is flexibility.

    • @JochemKuijpers
      @JochemKuijpers 5 років тому +1

      There's only one system to manage, so who cares if system interfaces like allocators and loggers are 'global'.
      I'm fairly sure you won't be able to break a library by polluting the context struct. That would be bad indeed. It'll probably be scoped in some way or another.

    • @APaleDot
      @APaleDot 5 років тому +14

      No, the context struct is specifically designed _not_ to be global. It defines the context a procedure happens in. By design, there will be many different contexts depending on what libraries you are using, how many threads you have, etc. A library occurs in it's own context, it doesn't pollute the other contexts in your program, and you have control over the context the library executes in.

  • @discountinn
    @discountinn 5 років тому +9

    "The value of the IDE is close to zero". Seriously? Can you see a call hierarchy of any given function inside your project AND dependencies? Can an editor download your dependencies source code and allow you to debug that code? Can an editor help you navigate to the definition site of a function in one click? That's a bullshit argument. Even if the IDE was just a bundle of debugger and editor, it would be beneficial to jumping between two windows.

    • @hasen_judi
      @hasen_judi 5 років тому +15

      All the things you're describing are editor features.

  • @Ratstail91
    @Ratstail91 4 роки тому +2

    Blow's Language: Takes 4 years to complete.
    My Language: Takes 4 weeks to write - still incomplete, but usable.
    I wonder why some languages are so different...

    • @seditt5146
      @seditt5146 4 роки тому +4

      Your language: Likely will break on anything semi complicated,..
      His: Cross platform beast so efficient is can compile in almost no time flat...

    • @Ratstail91
      @Ratstail91 4 роки тому +1

      ​ Sedit T True, but only one of those languages are available right now.
      TBF, I'm looking into language theory now, hopefully future languages I write will be even better.

    • @seditt5146
      @seditt5146 4 роки тому +4

      @@Ratstail91 Eh, hey don't let me stop you, just mentioning the difference however between something that takes 4 weeks to 4 years. This dude honestly one hell of a programmer so I feel it is easy to say he has a good program here as it seems almost every game he touches anymore turns into Gold lol.

    • @SETHthegodofchaos
      @SETHthegodofchaos 4 роки тому +3

      @@Ratstail91 to be fair Jon also spend lots of time on developing a game engine and a game in this language in order to test it and figure out what works and what doesnt. So it is fair to assume that there was a lot of iterating and changes happening throught the years.

    • @Ratstail91
      @Ratstail91 4 роки тому +2

      @@SETHthegodofchaos Wow my comment is kind of ignorant. My bad.

  • @nikolaikalashnikov4253
    @nikolaikalashnikov4253 5 років тому +3

    14:59 This is kinda sad to watch him try & compress all his ideas into 60 minutes and failing hard. He's much better when he's not worried about the clock. Unfortunately, this is 15 minutes of pure BS. He's playing defense and I would much prefer him to play offense and really go on attack mode... tell us specifics on why C++ needs to die. I know that he knows, but he should really spell it out for the audience. God, none of his friend's peer-reviewed this speech ? It's also sad in another way too... That here we are repeating the mistakes of the past. It's funny that we're making exactly the same mistakes of C & C++ too (the languages that he's trying to replace). I have learned long ago that "people are going to do what people are going to do" and sometimes nothing can change their mind. Knowing this, I can confidently predict that someone is going to come along and get the bright idea to add "features" to Jai (not me, otherwise it wouldn't be a fair bet). I'm sure they'll be clever too and name it Jai++. Then we'll have another patchwerk monstrosity of a language like C++, except this time Jai++. What I would liked to have seen from Jai is a language specification with these extra "features" that he doesn't like and will never use BECAUSE then he can marry the syntax so that it's consistent and sensical rather than being convoluted in the future. BUT he doesn't necessarily have to fully implement the full specification of "Jai++." He can just ship regular Jai. And that'll wet the appetite of the community. Sure, the target audience is game developers... but I think it's short-sighted to think that only game developers will use it. I think other developers are also craving a replacement for C++ too. If that wasn't true, then I don't think we'd be seeing the appearance of languages like Rust, for example.

    • @Lucretia9000
      @Lucretia9000 5 років тому +2

      Anyone who has ever had (i.e. been forced) to work 16+ hours straight in C++ knows.

    • @32gigs96
      @32gigs96 4 роки тому

      Nikolai Kalashnikov an amazing c++ replacement not for games is rust. Compile time data race Check? Sign me up

    • @marcossidoruk8033
      @marcossidoruk8033 11 місяців тому

      ​@@32gigs96Yes but its borderline useless in many cases and it does RAII and as Jon explained that isn't necessarily a very bright idea for performance.
      Also Rust doesn't check for data races at all, rust severely limits what the programmer can do to the point data races are very hard, for many many things that is the programming equivalent of shooting someone in the head to cure a fever.

  • @notthere83
    @notthere83 5 років тому +4

    Haha I'm not sure that Jon understands the concept of ecosystems very well. The whole point is to enable a QUICKER, not SLOWER start.
    I remember when I first started using Python - I was amazed by all the things I could do with just a few modules and lines of code.
    Similarly with JS these days. There's a library for almost everything. And they don't necessarily have to be wrapped and wrapped. But what I do see is that they are usually very well documented (unlike most native stuff I've come across - whenever I have to dig into MSDN, I... it's not pleasant. Well... some parts of the MSDN at least. The .NET docs are actually pretty great) and people contribute to each other's projects frequently.

    • @marcossidoruk8033
      @marcossidoruk8033 11 місяців тому

      I don't think you understood what he meant when he said "ecosystem".

  • @Plrang
    @Plrang 5 років тому +15

    Oh well Jonathan, you could just start using java and you'd be set;)

    • @gabrielkwiecinskiantunes8950
      @gabrielkwiecinskiantunes8950 5 років тому +15

      Phototric Java's non-native virtualized bytecode and slow rogue garbage collector alone make it a bad option for high-end game development.

    • @Plrang
      @Plrang 5 років тому +19

      just #import "IRONY"; and you'd be set;) @Zinogg @Gabriel Kwiecinski Antunes

    • @Plrang
      @Plrang 5 років тому +9

      Zinogg use your brain

    • @gabrielkwiecinskiantunes8950
      @gabrielkwiecinskiantunes8950 5 років тому +1

      Phototric hah yeah sorry it's just that it's hard to tell lately lmao

    • @ZoidbergForPresident
      @ZoidbergForPresident 5 років тому

      Works well for Celeste for instance, true it's C# but still.

  • @Esidar
    @Esidar 5 років тому +1

    At the beginning he states that "You could create a language like C# that runs like C, but nobody has done that". Actually that's not true. C# is already that language, and can be used like C. You can write entire game using only structs and unsafe pointers. No garbage collection, and no OOP.

  • @Illasera
    @Illasera 6 місяців тому

    "Why are people using a 30 years old language instead of mine?"
    imagine not being able to beat a 30 years old language and crying about it for an hour.
    The entire hour is : "I want a low level language that can do high level language stuff", good luck.
    there are no INSTRUCTIONS for your CPU to do strings manipulation nor list sorting, ofc you would need a library for it, I am not sure blow's understand the GOALS for high and low level languages.
    Edit : The guy is also playing the wording game a lot , notice : (We don't need IDEs and all of that... then at the end of lecture ... (We will have an IDE-LIKE software that will do all of that)

    • @Illasera
      @Illasera 6 місяців тому

      @@JuliusCsar-cx3xd A low level language is meant to to have near-direct relationship with the hardware as much as possible (Its what the language is designed to do, its not designed to be human friendly or fast to write code to, these are side-effects and bonuses if the language's author knows what he is doing).
      Once you add bells and whistles, it stops being that, there is no other way to keep it (A machine can't do the impossible, only what its designed to).
      *As for the terms being too vague , you will find a pretty CLEAR definition of them with a simple search.

    • @Illasera
      @Illasera 6 місяців тому

      @@JuliusCsar-cx3xd well, atm he is busy re-thinking operating systems and how to make a mock-up micro-kernels for them

  • @SnakeEngine
    @SnakeEngine 5 місяців тому

    He has been given just one hour to give his language a chance, says that he could talk about its features and stuff for hours, and then the best thing he comes up with is basically a function returning an array on the stack. Like seriously?. Nice that it works for him, but there is a good reason why it is not implemented as a language feature in other languages. He is talking about standing on the ground while reaching to the sky, but everything he demonstrates, in any of his talks, is stomping on the ground.

  • @kdhlkjhdlk
    @kdhlkjhdlk 5 років тому +2

    And yet his games could have been made in BASIC.

    • @Kniffel101
      @Kniffel101 5 років тому +6

      Prove it, then!
      Make a AAA-grade 3D game like the Witness in BASIC, and I'll believe you. :)
      But that isn't even the point. It's about improving something that already exists to a degree that makes a difference.

    • @philtrem
      @philtrem 5 років тому +11

      Awaiting your high-performance, real-time 3d renderer written in BASIC. * cough cough *

    • @Otomega1
      @Otomega1 4 роки тому

      It's a game engine

  • @TonOfHam
    @TonOfHam 5 років тому +6

    Cars are terrible too, because they let you drive off the road if you want to... C++ is as terrible as the programmer that is attempting to use it.

    • @Kniffel101
      @Kniffel101 5 років тому +12

      The car-analogy is perfect!
      C++ is like a combustion-engine sports car which provides you a lot of performance, if you want to.
      But also that car is being held back from its true potential because it uses a huge amount of old, outdated tech and unnecessary clutter.
      Jai is like the upcoming Tesla Roadster 2.0, or any other (high-performance) EV.
      It's incredibly fast, responsive and aims to replace the old tech with the new, better one.
      Something that's true with both of them though, is that if an inexperienced driver uses them, the probability that he drives them off the road is increasingly high.

    • @TonOfHam
      @TonOfHam 5 років тому

      Thanks!
      But I was trying to say that with C++, the programmer has the wheel and the full utilization of the CPU (power source, engine, battery, whatever). With higher level languages, it's more like being on a train track. Companies don't want programmers to take the wheel, just to choose from available tracks. But then I'm a C++ guy, so I'm used to taking the wheel and being able to crash a program, or optimize it.
      These algorithms have always been available to c programmers to implement, he probably even made Jai with C or C++. But Jai can force developers onto a good "track", which is what this looks to be.

    • @Kniffel101
      @Kniffel101 5 років тому +3

      Citizen of Earth
      But you get "Full CPU power" with "Jai" as well.
      These programs don't run in a VM, an Interpreter or whatever, but as native code on the CPU.
      You can even interface with C-libraries and eventually it's gonna have Inline-Assembly as well.
      The only thing that's running in Byte-Code is the meta-programming suite that runs at compile-time (so no resources wasted in the program itself), which still does things blazingly fast, as seen in this and other talks.
      The video linked at the bottom is a Demo of the first implementation of that feature (from 2014), so you'll get a glimpse at what it can do.
      And the playlist included in that link includes all the Demos of the unique features he did, at least I think it's all of them. ^^
      It's definitely not all coding streams, but others "only" include implementations of features, bug fixes etc.
      Still worth watching for those that have the time. :D
      Of course it's not _too_ optimized yet, hence the top-down view of his Sokoban-like game.
      But the compiler has 2 backend options available currently:
      1) For debugging you pass the code to the x64 backend, which compiles _much_ faster but creates slower code.
      2) You pass it to an LLVM backend that takes longer but provides code that's better optimized.
      And "slow" is Jon's definition of slow, which means a few more seconds.
      As he said in the video, he and his team try to achieve 1,000,000 LoC/s and I'm confident they can do it. :)
      Yes, the compiler is made in C++.
      You can even look at a lot of the progress he made on the compiler and the Sokoban game since 2014.
      The presentation software he used was also written in "Jai" by the way. :)
      ua-cam.com/video/UTqZNujQOlA/v-deo.html

    • @kazioo2
      @kazioo2 5 років тому +11

      JAI is meant to be used in a much *lower* *lever* than typical modern C++. Your comment about C++ in context of this video suggests that you don't really know what this language is about. Blow calls C++ terrible language for almost an opposite reason than what you said. He calls it terrible because it's a complex mess, NOT because of power/responsibility - this is the core thing he and many gamedevs actually like/need in C++. JAI is actually more like enhanced C, which tends to usually be a bit lower level than C++ and usually with even LESS hand-holding than C++. It's meant to be an even more "difficult" (in a "you have to know what you are doing" way, not "tons of strangely glued together features" way) than C++, so your car analogy is even MORE significant in case of what JAI is and what Blow talks about, because it gives even MORE responsibility to the programmer than a typical way of relatively safe, "modern" coding in C++.

    • @TonOfHam
      @TonOfHam 5 років тому

      Thanks for the info. I didn't really get a lot out of this video to be honest. Maybe it's my own limitations but the video didn't seem to explain Jai very well at all.

  • @G33KN3rd
    @G33KN3rd 5 років тому +4

    "C++ is a terrible language", then why not use C?
    Everything this guy is complaining about can be done more effortlessly and less painful than C...

    • @crimsun7186
      @crimsun7186 4 роки тому +4

      Because then, you're not hitting the "QoS" statement, as C requires you to manually manage memory and similar stuff. Rust does a better job with their lifetimes system.

    • @pretzelboi64
      @pretzelboi64 4 роки тому +1

      @@crimsun7186 What's wrong with memory management? Computers work a certain way and hiding their nature is idiotic.

    • @TheSandvichTrials
      @TheSandvichTrials 3 роки тому +1

      Jai can do so much more than C. C is severely limited in terms of expressiveness as a language. If you do not see the age of C taking its toll I don't think you've thought very deeply about how much more a language can be...
      (P.S. @CrimSun, Jai also has you manage memory manually. That's a problem Jon does not set out to solve)

    • @G33KN3rd
      @G33KN3rd 3 роки тому +1

      @@TheSandvichTrials C as a language is designed for engineers who want to get shit done, not academic intellectual circle-jerkers. If you want a more "expressive-ness" language, then I suggest Golang.

    • @TheSandvichTrials
      @TheSandvichTrials 3 роки тому +2

      I write pretty much exclusively in a subset of C++ which is almost identical to C. The limitations are obvious. You can't even iterate over the members of a struct without writing your own metaprogramming pass or using the ridiculously outdated shitty macro facilities to hack together some #include monstrosity. And what, that's because I don't want to be a "real engineer"?
      No, I want to describe the layout of my configuration file by defining a concrete struct known at compile time, instead of some stupid hashtable that will cost much more to build and to access. I want to serialize data without having to write out every single thing manually, or use dogshit C++ features. I want to do these things without compromising on functionality.
      C doesn't offer this shit, it's dated. C++ doesn't offer this shit, because it's shit. You can write a code preprocessor in a day that enhances C in ways C++ should've done two decades ago.
      Jai is a language that understands this. It does not compromise on what C already does, it enhances it.

  • @matthewgahan2665
    @matthewgahan2665 5 років тому +18

    Really!? Jon, Realy.
    So Clang 5.0+ modern C++ , with coroutines, lamdas and a "Turing complete" template language, deep compiler analysis and optimization for every chip going. All this maintained, with the might of thousands of the worlds best engineers across all the major software corporations at Google, Apple...
    Its all a waste of time is it?
    All the thousands of hours of master degrees and PHD¨s its just "junk".
    But no, YOU have solved it, all the problems!?
    Realy!?

    • @Kniffel101
      @Kniffel101 5 років тому +20

      First of all: Have you seen his compiler streams from the last 4 years?
      If not: I *highly* recommend you watch at least _some_ of them, when you've got some spare time.
      From the very beginning he said, that even if he was the only person on this planet that uses this compiler/language, all the time/money spent on making it would've been worth it because of a thing he calls "Joy of Programming".
      That joy, even when the compiler was fairly pre-mature, kept him motivated a lot and it still does.
      Something this language delivers that has yet to be provided by that others is simplicity.
      You just type "jai.exe first.jai" into the Terminal and _boom,_ it's done.
      The compiler looks for all the dependencies, the compiler interfaces with C-libraries etc.
      And you as the user have the control over everything that happens during compilation and at runtime.
      You want fast compilation speed? - Sure, just use the x64 backend.
      You want optimized code? - Use the LLVM backend instead. It's slower, but at least not as slow as compiling a C++ program with the same line-count as your JAI program.

    • @CrowJam
      @CrowJam 5 років тому +15

      i know what you mean, but at same time it sounds like something a religion pushing zealot would say 500 years ago about science

    • @noeticone3786
      @noeticone3786 5 років тому +65

      Yeah, because C++ is perfect... Has it occurred to you that just maybe those Masters and PhD's are spending their thousands of hours spinning their wheels trying to repair a language whose very foundations are unstable and that maybe a tear down rebuild is needed? Mozilla thinks so, hence Rust. Google thinks so, hence Go. Apple thinks so, hence Swift. Microsoft thinks so, hence C#. Most of Academia thinks so, hence Haskell and the other pure functional languages. But when Johnathan Blow thinks so then he must be some kind of madman tilting at windmills?

    • @matthewgahan2665
      @matthewgahan2665 5 років тому +5

      All good examples and very valid choices vs C++: I mentioned modern C++ only because it really is a new language built out of the lessons learned over the decade that preceded it. My basic complaint, however, is that Jon trashes everything that has gone before and makes wild claims for his own efforts. He has done this before many times and just doesn't provide much in the way of evidence to back his claims.
      The landscape of computer languages is enormous these days and in this rapidly evolving space, we have more choice than ever, and there are great reasons for each new language. I would just like to see a more "honest" discussion about that. It is the offhand trashing of all orthodoxy that grinds me.

    • @Maver1ck101
      @Maver1ck101 5 років тому +10

      He is arrogant and full of himself. The dude thinks he's a god, thinks he's the only smart guy in the software development industry.

  • @drjoriv
    @drjoriv 5 років тому +11

    I don't like his attitude

    • @smallbluemachine
      @smallbluemachine 5 років тому +7

      Yeah, what’s up with the “making the world a better place” schtick. Why can’t he just sit down and make do with status quo of mediocrity like the rest of us?

    • @smallbluemachine
      @smallbluemachine 4 роки тому

      jqbtube - Your sarcasm-o-meter is broken.

  • @hanniffydinn6019
    @hanniffydinn6019 5 років тому

    We don't need another fucking programming language, we have NIM which compiles to c++ which is Python like, so you get productivity and maximum speed possible.

    • @Kniffel101
      @Kniffel101 5 років тому +1

      Hanniffy Dinn
      First look at what this compiler can do and how it differentiates itself from the competition. There's a whole video archive for you to look at, with Demos of all the features.
      If all that isn't enough for you that's fine, just use other languages then! 😉

    • @hanniffydinn6019
      @hanniffydinn6019 5 років тому +1

      Kniffel101 for sure, but let's not kid ourselfs, nothing will ever surpass modern c++, and tool chains like clang LLVM et al. They are way too evolved with rock solid historical and legacy foundations. C++ will always be considered to what assembly language was in the past these days.
      When it comes to games Dev, the productivity and work flow improvements will occur in the game engines. Like unreal engine.
      All the core low level development for games will alway be in c++. People have always complained about c++ not being productive, but that was the problem c++ was never designed to solve. It solves a far greater problem, which it's done so far. It's like saying assembly language isn't productive enough ! Saying that is literally dumb as rocks.

    • @Kniffel101
      @Kniffel101 5 років тому +1

      "[...] let's not kid ourselfs, nothing will ever surpass modern c++ [...]"
      Why should something that's potentially better not replace the old?
      Innovation is what brought our species where it is today.
      I think a mindset of "It's great how it already is, no need to change" is not very beneficial.
      What could there _possibly_ be that C++ does and could _never_ be done with any other language?
      Please provide me with some examples!
      Another tech sector where you can see the innovation replacing the old is the car-market.
      EVs (electric vehicles) slowly get more and more adoption, after Tesla ignited the movement 10 years ago.
      But back then, and to some extend even today, there's a *lot* of people who said/say "Who needs electric cars? They're SO unpractical!" then they drive one and don't wanna go back! ^^
      I can see the same thing happening with "Jai":
      Once estabilished, people will wonder why we even bothered with the relics that are C/C++ for so long.
      Using engines like Unity or Unreal always comes with the tradeoff of lesser performance than it could theoretically be. Casey Muratori said something about engines during Handmade Hero Q&A, which I stand behind:
      ua-cam.com/video/fQeqsn7JJWA/v-deo.html
      "People have always complained about c++ not being productive, but that was the problem c++ was never designed to solve."
      That _might_ be true, though "Jai" and its compiler are being designed with productivity _and_ code-speed in mind, so what point are you trying to make?
      "It solves a far greater problem, which it's done so far."
      And that problem is..? Again, please provide some examples.
      "It's like saying assembly language isn't productive enough ! Saying that is literally dumb as rocks."
      I do not believe saying that is dumb, since it's the truth.
      But the lesser amount of productivity is (usually) rewarded with faster code.
      The compiler has an x64-backend (fast compilation time, not well optimized code; Primary use: Debugging)
      and a LLVM-backend (slow compilation time, but optimized code; Primary use: Shipping).
      There was a C-backend but it's deprecated and/or removed already.
      It can call C-libraries,
      has a great integrated build system,
      great meta-programming,
      *_no f-ing header files,_*
      and the compilation speed speaks for itself as well.
      A talk of Jon from 2017 provides a great overview of some features:
      ua-cam.com/video/De0Am_QcZiQ/v-deo.html

    • @hanniffydinn6019
      @hanniffydinn6019 5 років тому +1

      Kniffel101 I don't see it being any better than languages than say, NIM. Which compile into c++. I've personally not seen any language that's as cool as that, game emulators written in NIM are the most easily understood and very compact code.
      You don't seem to understand what C++ is, it's not just any language now, it's literally modern day equivalent of assembly language. It's what other languages and compilers are written with!
      Nothing wrong with creating new languages to solve problems, but NOTHING will ever replace c++ because that's what compilers like LLVM and clang et al are written in!
      That's why people can knock up languages like jai, NIM or swift et al.. Because they are based on rock solid back ends like LLVM , clang that exactly allow you to create a language and take care of the rest. The real core tools like LLVM will ALWAYS be written in C++.
      Languages like Python are written in C++ !
      Blow is talking about he's Trying to replace c++! Which is literally and dumb and rocks! He relies on rock solid tool Chains like LLVM written in c++ to do that.
      He's just doing a language that he prefers to write games in, and that's all it will EVER be used for!
      Languages like NIM have approached game productivity in a much smarter way. I honestly don't think you have the technical knowledge to grasp this.
      A* games will always use game engines like unreal, which uses C++. They will NEVER use a language like this, not EVER.
      You comparing this to electric cars is dumb as rocks, it shows you are dumb. C++ was designed to create optimal machine code, and that's what it does. That will never change, nothing will replace it. Like nothing will replace batteries in electric cars, c++ is like the battery every other technology is built on. Create a new language, yeah, but it will always use a c++ based Compiler backend. This Language he's created relies on LLVM c++ backends!!! You don't get how it really works clearly.

    • @Kniffel101
      @Kniffel101 5 років тому +3

      So your core argument is 'Everything is written in C++, so it'll never be replaced.'
      It's obvious that not every project that's based on C/C++ code will switch to "Jai" the day it releases.
      And maybe it's not suitable for some programs at all and that's fine.
      Over time more and more people are going to use it and even if it won't happen, that's totally fine.
      Jon had a game-design background and as a designer he's _very_ active to fine tune the user-experience to the best possible amount.
      LLVM is not "rock-solid". It's a complicated mess and compiling it is a nightmare.
      Yes, it delivers _very_ good code, but always remember: Compilers are _not_ magic!
      Even LLVM has bugs that need to be worked out; more and more complication doesn't help in that regard, either.
      You didn't watch the first video of my previous comment yet, did you?
      There _will_ be new engines coming up; Unity and Unreal are *not* always going to be the "king of the hill".
      And nobody knows what language(s) those engines will be written in. Maybe it's C++, maybe Rust or Swift _possibily_ even "Jai".
      Stop calling others dumb, moronic or stupid; your own credibility suffers when you do.
      You're completely re-stating my EV-argument; we'll leave it at that. I'll just assume you understood it, but didn't bother to address it further. I'll do the same then.
      "Create a new language, yeah, but it will *always* use a c++ based Compiler backend."
      The LLVM-backend is *_temporary!_*
      "Jai" doesn't *_rely_* on LLVM, it uses it as backend that, *for now,* is the compiler's method of putting out relatively fast code.
      Once they focus more of their work on their in-house x64 backend, the LLVM one is going to be used less and less and eventually be replaced either by the x64 backend itself or possibly (but highly unlikely) a different one.
      Maybe C++ was made to create "optimal" machine code, but no, that's *not* what any of the available compilers do. "Optimal" would be "Can't get any faster", not +/- 90% speed (depending on the code).
      The following video perfectly illustrates the inability of the (MSVC) compiler to do seemingly basic optimizations, countering your "C++ compilers are rock-solid" argument:
      ua-cam.com/video/B2BFbs0DJzw/v-deo.html

  • @UltimatePerfection
    @UltimatePerfection 5 років тому +4

    Jonathan Blows.

    • @matthewgahan2665
      @matthewgahan2665 5 років тому +1

      He blows and he blows and he blows(recursive)

  • @Alperic27
    @Alperic27 2 роки тому

    Not true that they are ‘slow languages’ … sounds good and fancy to say, but plain untrue these days. 100 times slower … sorry budy… I admire your work, but this is only in your dream: the is a difference between ‘sometimes xxx’ and ‘systematically xxx’

    • @serkardis292
      @serkardis292 Рік тому +1

      Python is absolutely 100x slower than something like rust in certain usecases.

  • @fedroger51
    @fedroger51 3 роки тому +1

    My 87 year old professor is leas boring than this guy.