This is a short reminder to turn your volume back down after you finished watching the video :)
@faust16525 жыл бұрын
you are a saint
@michaelanderwald41795 жыл бұрын
This video is about 17db too quiet. Someone didn't watch his LUFS on this one.
@tatoforever4 жыл бұрын
Saving a pair of ears! 😅👌
@nathanesau14 жыл бұрын
@@funnyonlineuploads for
@RogerBarraud4 жыл бұрын
Thankyou :-)
@bitchplease58956 жыл бұрын
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
@rallokkcaz6 жыл бұрын
Bitch Please check out the Crystal programming language as well. It's an exciting time for compiled expressive languages. Thanks LLVM!
@G33KN3rd5 жыл бұрын
this isn't an alternative to C, it's an alternative to C++.
@G33KN3rd5 жыл бұрын
@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.
@G33KN3rd5 жыл бұрын
@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.
@gracefool4 жыл бұрын
@@G33KN3rd I think you're talking about developer Mike Acton (now lead dev at Unity) in this talk: kzfaq.info/get/bejne/qL5gfNeHqrzOeJc.html
@mkaatr5 жыл бұрын
Game compiles in 1.7 seconds, his reaction: that is pretty slow.
@seditt51464 жыл бұрын
@@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.
@0xCAFEF00D4 жыл бұрын
@@JRichard86 kzfaq.info/get/bejne/bbGIidKplZObnIk.html This is a good one. A build system that builds the game in a day if it doesn't crash.
@truthteller46894 жыл бұрын
My Unity game is taking about 13 seconds to compile! It is too slow for me!
@myanrueller914 жыл бұрын
Okay, but how many times did he do a compile before the talk just to keep it in registers and RAM?
@jonny__b4 жыл бұрын
@@myanrueller91 I've seen him compile cold on his stream. It's still insanely fast
@mindvoxel6 жыл бұрын
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.
@dsego846 жыл бұрын
zig is also interesting, very much on the same track.
@rareraven99514 жыл бұрын
@jqbtube aaah you are a troll. I see now.
@RogerBarraud4 жыл бұрын
@jqbtube Maybe you're just rude.
@franciscofarias63852 жыл бұрын
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.
@bertiesmith30214 ай бұрын
What’s problems with languages got anything to do with whether someone wants to use an IDE or not?
@DanielGilchristYT6 жыл бұрын
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.
@invntiv3 жыл бұрын
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
@saniancreations3 жыл бұрын
@@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
@lnus78323 жыл бұрын
@@saniancreations well the first jai compiler protyoe actually did just that. it would transpile to c(++) and then run that compiler
@Praernym3 жыл бұрын
that is unrionically a really common way to prototype your new language
@pymath5771 Жыл бұрын
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."
@friedrichmyers4 ай бұрын
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_feenster4 жыл бұрын
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!
@gracefool4 жыл бұрын
I heard it crashes a lot.
@elmasyiyenzenginsisman48774 жыл бұрын
@@gracefool I finished it twice. Never crashed once.
@gracefool4 жыл бұрын
@@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.
@raccoonlad3 жыл бұрын
Also vouching for insane load speed and 0 crashes
@nolram6 ай бұрын
And he takes 10 years to make a game
@berkano_plays6 жыл бұрын
Interestingly, the presentation software he uses is written in Jai and he's done it because "PowerPoint wasn't addressing his needs".
@VolcanicPenguin6 жыл бұрын
Hahaha
@MilieuChris6 жыл бұрын
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.
@dsego846 жыл бұрын
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.
@TraceMyers266 жыл бұрын
@Chris at Milieu - I think you're misunderstanding the fact that he's talking about misguided implementations.
@lipid91196 жыл бұрын
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?
@user-tt4dy1ti5v3 жыл бұрын
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?
@MrAbrazildo Жыл бұрын
It should be pinned.
@joshualarson28086 жыл бұрын
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. :)
@dragz8884 жыл бұрын
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
@dickpiano18026 ай бұрын
People want to be hackers. People prefer to feel like hackers rather than to be productive. End of discussion.
@bertiesmith30214 ай бұрын
You should try programming in COBOL in the mid nineties. We are much better off now.
@adampaul79052 ай бұрын
It has been 6 years. This project is really exciting, I really hope it will be a clean project when it gets out.
@chenlim21656 жыл бұрын
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!
@anonymousweeble22246 жыл бұрын
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.
@SuperJer6 жыл бұрын
What's stopping you from making web apps in C? (At least on the server side since we're talking about Rails.)
@minRef6 жыл бұрын
superjetdotcom umm, nodeJS is kicking Ruby on Rail's ass, and it was written in C
@noxabellus5 жыл бұрын
@@minRef totally missing the point
@hasen_judi5 жыл бұрын
@@minRef lol Ruby is also implemented in C
@Alonedream156 жыл бұрын
Go Jon Go the history of programing will rember you !
@casvanmarcel6 жыл бұрын
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
@gracefool4 жыл бұрын
He has many hours of stuff here on KZfaq.
@Gomace6 ай бұрын
Either this will Blow people out of the water, or it will Blow. There's no in-between.
@Autopawn6 жыл бұрын
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.
@KunjaBihariKrishna Жыл бұрын
It or him?
@xaviervilloing66365 жыл бұрын
38:46 That "context" part was sooo interesting ! Built-in Global customizable toolbox interface. So powerful.
@adamschlinker9723 жыл бұрын
"It's the thing that knows what files are in the project" hahaha
@soulstudiosmusic6 жыл бұрын
Hey guys, Insanely low volume on this video.
@robchr6 жыл бұрын
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.
@jamma2466 жыл бұрын
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.
@gracefool4 жыл бұрын
Though it's not coincidence that you've both said *functional*, not object-oriented.
@vast6342 ай бұрын
Why is the language changing the syntax away from the classic C style, if it could express the same logic with the classic C style mostly? Those are always unnecessary roadblocks on adapting the language.
@notyourbruh2 ай бұрын
I agree with this so much, it's like why not just use the c style declaration and syntax.
@afterschool2594Ай бұрын
Syntax doesn't really matter though
@waltwhite812612 күн бұрын
You aren't his target audience if you can't learn a new language due to having a different syntax from C.
@vast63412 күн бұрын
@@waltwhite8126 Well if the language fails to get customers to adapt it: there might be one of the reasons. Many of the most popular languages (C++,Java, C#, JavaScript) took over the C style syntax, or borrowed from it for a good reason.
@antonsimkin2 жыл бұрын
i tryied to increase volume like 100 times while watching this video
@daleowens76954 жыл бұрын
I want to use this language already.
@daleowens76954 жыл бұрын
I'm so excited to try this language.
@SepehrKiller Жыл бұрын
Same
@liran94926 жыл бұрын
Hi, I am reposting this video on a Chinese website for people who are interested but have no access to KZfaq. I will state that you own the rights to it. Just let me know if you have a problem with this. Thanks.
@RaphzTube5 жыл бұрын
Great job
@nyrtzi4 жыл бұрын
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.
@logixindie5 жыл бұрын
I like to pretend that I understand (:
@TBButtSmoothy5 жыл бұрын
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 (:
@SETHthegodofchaos4 жыл бұрын
@@TBButtSmoothy Great advice! Dont be ashamed that you dont know something yet. Instead be excited that there is still so much to learn.
@marcelowind4 жыл бұрын
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
@strictnonconformist73693 жыл бұрын
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.
@khatharrmalkavian33066 жыл бұрын
VOLUME
@gabrielkwiecinskiantunes89506 жыл бұрын
SURFACE AREA
@TheIlluminatedParker4 жыл бұрын
More like ᵥₒₗᵤₘₑ
@waltwhite812612 күн бұрын
For anyone having problems with volume, download the youtube enhancer extension, it comes with a boost in volume and other tools to make youtube better.
@shavais33Ай бұрын
This talk makes Jai sound so amazing! I wish they'd release a version. Maybe they don't want to commit to a spec and then face backward compatibility issues? Maybe it's just not all there for certain parts of it, and the vision just isn't complete without those things? But by the time it's released, I fear I won't have very many productive years left! I have things I want to try to do. I can't just put those things on hold for years and years. I'll have to use some other language. I suppose I should try to find out how to apply for the closed beta.. but its seems like they probably get a lot more apps than they can process any time soon, and my app would probably "fall below the fold." Maybe Jai is more for the next generation's benefit, I guess.
@junosoft2 жыл бұрын
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.
@ReagueOfRegends6 жыл бұрын
"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.
@MrGeekGamer6 жыл бұрын
As a developer that uses both, I don't believe you. Visual Studio blows gdb out of the water for debugging.
@ReagueOfRegends6 жыл бұрын
And that is why any sensible person uses gdbgui
@MrGeekGamer6 жыл бұрын
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.
@ReagueOfRegends6 жыл бұрын
Ah, the rare anti-contrarian contrarian.
@Jericho_oO3 жыл бұрын
can't wait to try it out.
@EmberMage8192Ай бұрын
Come on dude, IDE stands for *_Integrated_* Development Environment if you didn't know. It *_integrates_* debugger, text editor, file browser, terminal, version control system, database tools, and other stuff all in one thing so that you don't have to keep a dozen different tools running and switch between them. If you don't find that helpful, well, I'm sorry for you
@afterschool2594Ай бұрын
Nah separate tools are better IMO. As a beginner you won't need all of those in IDE. And I think as an advanced programmer you would have known how to use Git, Debugger, compiler, and terminal separately.
@matthewpeterson51596 жыл бұрын
AWESOME talk. This language is the best language ever invented BY FAR. CAN NOT WAIT to use it!
6 жыл бұрын
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.
@kalekold6 жыл бұрын
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.
@matthewpeterson51596 жыл бұрын
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
6 жыл бұрын
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.
@timonpasslick6 жыл бұрын
If you use a vector/Vec/dynamic array class (with RAII), do you also get that many cache misses?
@PoxikFrostbite4 жыл бұрын
If you take The Science out of science, more people will pretend to know how to use it.
@pleggli6 жыл бұрын
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.
@rationalcoder6 жыл бұрын
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.
@pleggli6 жыл бұрын
Well, with some kind of build cache that could become a fraction of a second instead which is even better.
@rationalcoder6 жыл бұрын
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.
@anthonyewell34702 ай бұрын
I think Jon thinks mostly highly of Go, but also it's not meant for game dev.
@MusashiHunter35 жыл бұрын
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.
@kynikersolon38825 жыл бұрын
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.
@zatherz24984 жыл бұрын
"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.reactions1764 жыл бұрын
> 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!
@Noble_Savage2 жыл бұрын
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 Жыл бұрын
maybe when you can run the IDE on a mac lmaooooo
@SepehrKiller Жыл бұрын
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, ...)
@anonymousweeble22246 жыл бұрын
Great work! Interested to hear the talk about the problems of auto-optimizations mentioned at 51:40
6 жыл бұрын
Which of Jonathan Blow's other videos goes into metaprogramming in more detail?
@nergethic77596 жыл бұрын
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 :)
@pskocik4 жыл бұрын
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?
@zemlidrakona29154 жыл бұрын
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.
@Jesus228FBI3 ай бұрын
> 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
@CrowCZ4 жыл бұрын
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.
@SG1guru4 жыл бұрын
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 Жыл бұрын
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.
@Q_202 жыл бұрын
Can I just look at the presentation screen
@s33409855 жыл бұрын
I'm not even a game developer, but htis language sounds awesome (coming form a JS dev)
@nambreadnam4 жыл бұрын
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 жыл бұрын
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.
@nambreadnam4 жыл бұрын
@ 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.
@GonziHere3 жыл бұрын
@ 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.
@Olodus6 жыл бұрын
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.
@hasen19576 жыл бұрын
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.
@Olodus6 жыл бұрын
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_28524 жыл бұрын
@@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.
@atkascha10 ай бұрын
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
@prezadent16 жыл бұрын
3:18 Mystery Science Theater 3000
@kaustubhken6 жыл бұрын
He is 47 near retirement still he is passionate to create a programming language that’s really great.
@vladimirkraus14386 жыл бұрын
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.
@pogo5754 жыл бұрын
Game designer... retire???? 🤣🤣🤣😂🤣🤣😂🤣🤣😅
@alvarohigino Жыл бұрын
Wait, 47 isn't that old. He has at least 15 years if it's the desire of God, of course.
@unsaturated8482 Жыл бұрын
This guy is op.
@vladimirkraus15996 жыл бұрын
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_judi5 жыл бұрын
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.
@gracefool4 жыл бұрын
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."
@xvidcap6 жыл бұрын
Thanks for the upload!
@opl5003 жыл бұрын
I can see running code at compile time that *extends the compiler* getting abused.
@Mark-kt5mh3 жыл бұрын
That sounds a lot like “real programming” interesting results are possible, but they never make up for the productivity and debugging inefficiencies.
@sporefergieboy105 жыл бұрын
THEY’RE LAUGHIN CAUSE THEY KNOW
@PauloConstantino1674 жыл бұрын
LOL
@ytsas454885 жыл бұрын
TBH, not sold on the implicitly passed context struct. But the metaprogramming feature looks really useful.
@blenderpanzi4 жыл бұрын
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
@blenderpanzi4 жыл бұрын
@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.
@RiboFlavin64 Жыл бұрын
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
@Ilumar5896 жыл бұрын
Maybe someone already asked, but how will jai be any different than the rust language regarding the problem it's trying to solve ?
@Kniffel1016 жыл бұрын
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._ kzfaq.info/get/bejne/i7qhjbGmz7eznHU.html
@aiman_yt6 жыл бұрын
Kniffel101 rust does manage dependencies and has unity build. No header files. Does Jai have generics?
@Kniffel1016 жыл бұрын
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_yt6 жыл бұрын
Kniffel101 yeah that does answer the question. Thanks
@Kniffel1016 жыл бұрын
+Aiman No problem! :)
@FirstNameLastName-xe4mx3 жыл бұрын
"IDE is a giant piece of junk" , that's what i wanted to hear.
@Nick-lx4fo3 жыл бұрын
Notepad++ ftw
@FirstNameLastName-xe4mx3 жыл бұрын
@@Nick-lx4fo vim is best imo but never used notepad++ so can't tell about that.
@Nick-lx4fo3 жыл бұрын
@@FirstNameLastName-xe4mx vim is the best, next to emacs
@FirstNameLastName-xe4mx3 жыл бұрын
@@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.
@VolcanicPenguin6 жыл бұрын
As ambitious as I am, I like that I'm not this ambitious.
@exotic-gem2 ай бұрын
I think Jon has been to very different academic circles than I have. Here everyone uses C89 in academia. Functional programming is taught as an aside but the core of what we learnt was classic, imperative C.
@felixp5356 жыл бұрын
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.
@hasen19576 жыл бұрын
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.
@pleggli6 жыл бұрын
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..
@kiwec6 жыл бұрын
That's why other languages exist. You can't have everything, and of course you have to take tradeoffs.
@pleggli6 жыл бұрын
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".
@JochemKuijpers6 жыл бұрын
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.
@murrylancashire6 жыл бұрын
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.
@pleggli6 жыл бұрын
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.
@arwahsapi4 жыл бұрын
So has the compiler been publicly available yet?
@trisinogy4 жыл бұрын
Audio level is not OK.
@kuklama07068 ай бұрын
Have you heard the story of MSVC 6?
@aiman_yt6 жыл бұрын
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
@Kniffel1016 жыл бұрын
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.
@0xCAFEF00D5 жыл бұрын
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.
@FaZekiller-qe3uf Жыл бұрын
So, zero-cost abstractions? Yay!
@chrisvouga88322 жыл бұрын
Why doesn’t he just use holy c??
@junosoft3 жыл бұрын
22:28 I can relate
@SnakeEngine8 ай бұрын
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.
@marijnstollenga16016 жыл бұрын
jeesh that syntax
@aiman_yt6 жыл бұрын
Marijn Stollenga better than C++ template spaghetti
@marijnstollenga16016 жыл бұрын
True, it is almost impossible to make something worse than that
@needlessoptions4 жыл бұрын
I love it
@satellite9646 жыл бұрын
Best language is here.
@llothar682 жыл бұрын
Faster than C++ ? Runtime or compile time? With C++ Modules or without (they can improve everything 10-50x time)
@serkardis2922 жыл бұрын
Modules are C++ 20 feature and this video is much older. They don't speed up initial compilation, only subsequent ones.
@llothar68 Жыл бұрын
@@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.
@MrVectorman6 жыл бұрын
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".
@hasen19576 жыл бұрын
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".
@miguelprovencio5257 Жыл бұрын
I’m not going back to vi or emacs so IDEs must be doing something worthwhile.
@pretzelboi644 жыл бұрын
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.
@llothar682 жыл бұрын
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.
@intellivision-amico6 жыл бұрын
can't be worse then modern C++
@graphics_travelers6 жыл бұрын
It's *than* not *then* .
@stefdevs6 жыл бұрын
Thenks.
@graphics_travelers6 жыл бұрын
No problam.
@amber90406 жыл бұрын
It's *problem* not *problam*
@johnjackson97676 жыл бұрын
Somali Girlfriend Who Pirated Your Pirate *whoosh*
@Jesus228FBI3 ай бұрын
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.
@MNNoxMortem5 жыл бұрын
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.
@kevinscales4 жыл бұрын
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.
@gd76814 жыл бұрын
Yeah you need to be more specific than that.
@MattBee2k26 жыл бұрын
This is why I love that unity uses C#, it's just way easier to get on with what you need to do.,
@needlessoptions4 жыл бұрын
Yea but C# is way slower than C(++) lol
@magnuscritikaleak50454 жыл бұрын
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.
@megatronusv22154 жыл бұрын
@@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)
@johnjackson97676 жыл бұрын
Just realized that JBlow sounds just like Dave Rubin.
@tracco4 жыл бұрын
30:38
@discountinn6 жыл бұрын
"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_judi5 жыл бұрын
All the things you're describing are editor features.
@llothar682 жыл бұрын
Still nothing released 4 years later.
@serkardis2922 жыл бұрын
It's in closed beta and gradually rolls out to more and more people.
@Muskar2 Жыл бұрын
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.
@pierreollivier19 ай бұрын
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.
@Illasera9 ай бұрын
"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)
@Illasera9 ай бұрын
@@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.
@Illasera9 ай бұрын
@@JuliusCsar-cx3xd well, atm he is busy re-thinking operating systems and how to make a mock-up micro-kernels for them
@earlmarshal26086 жыл бұрын
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.
@Yogzeek6 жыл бұрын
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.
@pixlark42876 жыл бұрын
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.
@JochemKuijpers6 жыл бұрын
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.
@APaleDot6 жыл бұрын
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.
@digitbell85045 жыл бұрын
10:00
@notthere836 жыл бұрын
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 Жыл бұрын
I don't think you understood what he meant when he said "ecosystem".
@Minotauro_di_Chieti4 жыл бұрын
Jon has an uncle whose name is Job.
@Esidar5 жыл бұрын
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.
@gregandark85715 жыл бұрын
CoreRt
@markotikvic5 жыл бұрын
You missed the whole point.
@nikolaikalashnikov42535 жыл бұрын
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.
@Lucretia90005 жыл бұрын
Anyone who has ever had (i.e. been forced) to work 16+ hours straight in C++ knows.
@32gigs965 жыл бұрын
Nikolai Kalashnikov an amazing c++ replacement not for games is rust. Compile time data race Check? Sign me up
@marcossidoruk8033 Жыл бұрын
@@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.
@G33KN3rd5 жыл бұрын
"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...
@crimsun71865 жыл бұрын
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.
@pretzelboi644 жыл бұрын
@@crimsun7186 What's wrong with memory management? Computers work a certain way and hiding their nature is idiotic.
@TheSandvichTrials4 жыл бұрын
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)
@G33KN3rd4 жыл бұрын
@@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.
@TheSandvichTrials4 жыл бұрын
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.
@Ratstail914 жыл бұрын
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...
@seditt51464 жыл бұрын
Your language: Likely will break on anything semi complicated,.. His: Cross platform beast so efficient is can compile in almost no time flat...
@Ratstail914 жыл бұрын
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.
@seditt51464 жыл бұрын
@@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.
@SETHthegodofchaos4 жыл бұрын
@@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.
@Ratstail914 жыл бұрын
@@SETHthegodofchaos Wow my comment is kind of ignorant. My bad.
@matthewgahan26656 жыл бұрын
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!?
@Kniffel1016 жыл бұрын
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.
@CrowJam6 жыл бұрын
i know what you mean, but at same time it sounds like something a religion pushing zealot would say 500 years ago about science
@noeticone37866 жыл бұрын
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?
@matthewgahan26656 жыл бұрын
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.
@Maver1ck1016 жыл бұрын
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.
@Plrang6 жыл бұрын
Oh well Jonathan, you could just start using java and you'd be set;)
@gabrielkwiecinskiantunes89506 жыл бұрын
Phototric Java's non-native virtualized bytecode and slow rogue garbage collector alone make it a bad option for high-end game development.
@Plrang6 жыл бұрын
just #import "IRONY"; and you'd be set;) @Zinogg @Gabriel Kwiecinski Antunes
@Plrang6 жыл бұрын
Zinogg use your brain
@gabrielkwiecinskiantunes89506 жыл бұрын
Phototric hah yeah sorry it's just that it's hard to tell lately lmao
@ZoidbergForPresident6 жыл бұрын
Works well for Celeste for instance, true it's C# but still.
@TonOfHam6 жыл бұрын
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.
@Kniffel1016 жыл бұрын
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.
@TonOfHam6 жыл бұрын
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.
@Kniffel1016 жыл бұрын
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. :) kzfaq.info/get/bejne/i7qhjbGmz7eznHU.html
@kazioo26 жыл бұрын
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++.
@TonOfHam6 жыл бұрын
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.
@drjoriv6 жыл бұрын
I don't like his attitude
@smallbluemachine5 жыл бұрын
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?