Was having the video in the background, so these are not absolutely correct . And I am not in beta and neither a C++ programmer, so I might not written the Q corrently. Enjoy... 1:50 Start, preambula, beta notes on the screen 3:50 How does the compiler determine what goes into executable (in some scenario)? 10:00 Any plans to further automate creating of system calls bindings? 11:40 About numbers type casts. Some examples overview 13:35 About type inference (examples) 18:00 still on type inference, enums casts example 19:25 Question from Jon - are the explanations are too thorough? 20:00 What is the difference between typeInfo and type internally? Some notes about embedded runtime 25:25 Any plans embedding compiler/interpreter into a compile executable? example: eval() function. 29:20 Any plans to use the language for web development? 32:00 Macros rework? General notes on macros 38:25 What is the policy around future libraries/modules. What should go into the compiler? 40:35 Aliens intrude the Jon's house 41:45 still on modules. About npm (JS stuff). What should be built in? 44:40 How "poke" name works? 46:20 GOTO statement 48:30 Why some code could not be baked (transformed into a macro) 49:20 about "#insert", "#run" and generation of structs. Examples 54:20 still on above. About compilator work 56:40 Multiple return values as multiple arguments into functions. Examples. 1:00:00 Why nested statements suck 1:02:00 Dealing with dll lib output (some context issue) 1:04:20 typeInfo thing again, explicit reference 1:06:15 build options dependency on metaprogramming 1:08:20 Systems programming languages suck at compiling 1:12:45 Do "nodes" have to be text? Examples from the game (@NoSerialize and etc) 1:14:45 Default allocator as temporary allocator. libc dependencies, malloc, heap 1:17:30 still on above. Performance implications 1:24:10 still on above. porting the malloc 1:26:35 bitfields 1:31:25 Jon's classic rant, this time about house heat 1:31:50 `for` loops special handling in macros. 1:35:00 Large ring buffer vs arena . about allocators 1:41:40 Plans to remove some modules from compiler to the user level 1:42:40 Immutable pointers in jai 1:46:30 Will you add X or add Y? Compiler team 1:48:00 Jon bashes all other languages on effort-to-features balance, classic 1:48:40 how to prevent bad ideas poison when languages goes popular. language aestetics 1:51:00 About overcomplexity. Jon is not afraid to die alone 1:52:35 Release announced! (almost tricked you) 1:53:30 A way to do lambda style. 1:55:00 Setting for a minimal compiler version. 1:57:00 still on above. #if directive dance to support that 2:01:30 Fixed size constant arrays 2:05:00 Jon bashes on Linux, shows his favourite Wikipedia page 2:09:40 Simp module - is it simple? 2:11:00 still on above. hashtable module 2:14:00 still on above. simplicity philosophy 2:17:00 still on above. GPUs programming languages suck 2:20:00 GOTO again 2:20:45 Next year plans. Compiler got slow again 2:23:50 Lines in simp module 2:24:20 Parallel code - so easy 2:30:30 How to debug the compiler 2:31:10 Slideshow program into examples 2:31:30 Videos on compiler vs text 2:32:50 How bytes work? bytes as machine code 2:34:20 Compiler source code. Open source. People are using source code videos to try harm the project 2:36:30 ARM compilation (through llvm) 2:38:40 Licence - unsettled yet 2:40:30 Downwards inference 2:43:00 Mac distro 2:46:46 Closing words
@AbuAl7sn1
Жыл бұрын
oh man .. luv u hulky
@antondevey
Жыл бұрын
Thanks for this! It's "Jon" though
@MurtagBY
Жыл бұрын
@@antondevey didn't know it, I have always thought it's "John", corrected
@gettem6341
Жыл бұрын
much respect
@AdobadoFantastico
Жыл бұрын
you are a beautiful person
@alexs591
Жыл бұрын
Glad to see you streaming John! Still working hard
@aameen951
Жыл бұрын
I used to get annoyed by the fact that JAI kept being delayed from being available publicly, but after a while, I totally agree. You can see that from listening to the questions. They are mostly, if not all, high-quality productive questions. If it were to be open publicly or worse open-sourced early, then it would be a target for trolls and fan boys, all trying to push for their own fantasies onto the language. I'm glad he is able to fund the language and maintain it this long. Thanks.
@bob-zb3ed
Жыл бұрын
the language*
@AdobadoFantastico
Жыл бұрын
Thanks for sharing, Jon. Always cool to get a peek, and I learn a lot from listening to the thought process.
@vesk4000
Жыл бұрын
Very glad to see some new stuff. Yesterday I tried Kotlin for the first time and that really got me thinking about language design. That in turn got me thinking about Jai and how much I wish it was released. I think your thought process about programming languages is very interesting and inspiring. Happy holidays!
@DangeroustuberMusic
Жыл бұрын
Thanks for doing this Jon. It's really appreciated!
@WilderPoo
Жыл бұрын
I'm not in the beta, but I find it really insightful to watch these videos :) The language looks great!
@sv_gravity
Жыл бұрын
1:11:10 FYI there are thousands of cli options in google libraries and software, they even submitted a patch to raise the Linux kernel’s limit of 128 KB for all their flags. Insane.
@dandymcgee
Жыл бұрын
Thanks for the great Q&A!
@Viflo
Жыл бұрын
Oh wow, welcome back Jon! Merry Christmas!
@angeldude101
Жыл бұрын
Regarding parallelism, the problems that you're describing are really architecture problems that most programming languages would probably consider out-of-scope. For things like green-threads and async/await, those aren't really for doing actual work in parallel, but rather to avoid waiting. Their main use case is I/O, especially with the network, and you don't want a thread sitting doing absolutely nothing while waiting for a network request to arrive, so rather than starting a new thread, the existing thread saves its position and then jumps to do something else in the meantime, and doesn't return to where it was until there's something new to do. It's a completely different problem from parallelism, but it can appear similar from the outside and is usually implemented using parallel threads to an extent.
@jblow888
Жыл бұрын
We have had nonblocking I/O APIs since at least the 1970s.
@angeldude101
Жыл бұрын
@@jblow888 Yes. APIs. The user code is another story, and all kinds of tricks have been attempted to actually take advantage of those APIs in spite of the linear nature of most code, ranging from continuation passing style, monads, and async-await.
@Otomega1
Жыл бұрын
@17:40 Look like you need an "expected type" stack Basically you push the type of the variable in an assignation/initialization, also in a call parameter And you pop when you go out When there is a constant literal (or an enum member), you look at the top of the stack to see what type is expected from that literal. And you got type inference basically for free
@Waffle4569
Жыл бұрын
In defense of bitfields, I mostly deal with them in 3rd party binary data, especially packets, that I have no control over. While I personally don't use bitfields, I still need to work with them so it's VERY useful when the language supports them.
@wj11jam78
5 ай бұрын
When you say that you personally don't use bitfields, but you need to work with them, what do you mean? It sounds contradictory to me but I'm sure I'm just confused by what you mean.
@Waffle4569
5 ай бұрын
@@wj11jam78 When I have full control over how things are implemented, I don't use them. But I'm often working with other people's systems that I have to conform to.
@alvarohigino
21 күн бұрын
@@wj11jam78I think he doesn't need to create stuff using bitfield but needs to change other's code with it.
@segfault7208
Жыл бұрын
Jai is looking great, keep it up Jon!
@timallanwheeler
Жыл бұрын
Hey Jon, when you wrote Braid, what did you do for physics? Is it all polygon-on-polygon collisions? Did you pre-inflate world collision geometry (Minkowski sum) to make it point-in-polygon collisions? Do you loop over all objects and find the earliest collision so you can walk time forward to that point, or do you just check the final player location and shunt them out of the intersection if there is one? Would be very curious how you went about it overall
@mnkeymasta
Жыл бұрын
1:00:10 Oh man, the step-debugging thing is so true. Not to mention that, beyond Organizational Issues, new Lines of Code are basically free...I love spamming little vars to make sure that step-debugging anything will go smoothly, especially in Conditionals where the condition is very complex or multi-variable
@bleuge1203
Жыл бұрын
Same here, as you say specially in multivar complex conditionals, or sometimes complex expressions to access array data, etc.
@getservice1677
Жыл бұрын
Woah, this programming language looks very easy to understand, will probably use it when it will get released. 😄
@danielharding3688
Жыл бұрын
I appreciate this update for us non-beta users. It's a shame to hear some people tried to harm the project via the presentations you've given. In the last couple months I've rewatched all 60 of the videos in the A Programming Language for Games playlist. I was able to understand/appreciate so much more than I originally understood several years ago (especially with regard to compile-time execution/meta programming). I still mostly program in C++ for my hobby projects but the tedium is exhausting. I really look forward to using your language one day! Thanks again
@crackasaurus_rox9740
Жыл бұрын
@Dootie This is a pack of lies. Go away.
@rolandinnamorato1953
Жыл бұрын
@Dootie maybe you would be happier just not following Jons work eh?
@rolandinnamorato1953
Жыл бұрын
@Dootie idk man you seem really invested in Jon at a personal level and it's weird
@rolandinnamorato1953
Жыл бұрын
@Dootie 😂
@georgeokello8620
Жыл бұрын
@@dootie8285Yeah okay. If it makes you sleep well at night 🤣🤣
@empireempire3545
Жыл бұрын
As Fortran/C/C++ programmer who used to work on scientific computing clusters and now has to work in the industry, I am rooting very hard for Jai! Keep up the good work!
@gregandark8571
Жыл бұрын
Is Jai dead? Because Odin is still keep going.
@latinoce
Жыл бұрын
@@gregandark8571 kind of a bad question considering it hasn't been released to people outside the small beta.
@gregandark8571
Жыл бұрын
@@latinoce Why so? Isn't Jai open sourced somewhere on github? If not then why?
@latinoce
Жыл бұрын
@@gregandark8571 it’s in a small closed beta. there are many reasons, main one is that it’s not at a point yet where he feels that it’s quality enough to release. there’s still plenty of bugs in the compiler and the syntax will eventually get a major overhaul.
@gregandark8571
Жыл бұрын
@@latinoce lol,i don't get the reason to be that shy ...
@alurma
Жыл бұрын
Thank you for your work!
@tuphdc8779
Жыл бұрын
Hi Jonathan, thanks for sharing your development journeys
@atticus9845
Жыл бұрын
Not that this isn't something you already know, but before release you should give access to your language's beta to large programmer KZitemrs so that you can get a lot of publicity before release. This will allow you much more feedback and probably help get the language moving with support.
@BatisteBieler
Жыл бұрын
How to get access to the beta? I have been listening to Jonathan for years and I would like to try JAI out!
@adicide9070
Жыл бұрын
Jon must have amazing vision, especially at his age. I don't :D How has no one told Jon short lines are more readable. I'm just looking at the notes and it's torture. An entire hirez screen is not enough :) No reason that I can see not to keep it 60-80 characters for written text.
@Mangoles
Жыл бұрын
I adore your works
@josiahmanson
Жыл бұрын
I find that the main way I use goto is to avoid extra booleans and if statements. For example if you ever find yourself writing something like "bool doExtra = false; do some checking in a loop or nested if statements and maybe set doExtra; if (doExtra){do extra}" you can refactor that into "do some checking in a loop or nested if statements and maybe goto skip; do extra; skip:"
@MrNoname7296
Жыл бұрын
Better to just refactor doExtra() to its own function rather than as a large code block in a much larger monolithic function.
@josiahmanson
Жыл бұрын
@@MrNoname7296 I'm not sure why you added an assumption about the code in question being long. This sort of writing style is most useful in concise code where anything else adds significant percentage of bloat. Here is an example I pulled from a personal project where doExtra consists of a single line. DialogMode *dm = 0; for (auto d : Gui::root->children) { dm = dynamic_cast(d); if (dm) goto foundDialogMode; } dm = new DialogMode(Gui::root); foundDialogMode: dm->setPlacement();
@MrNoname7296
Жыл бұрын
@@josiahmanson Well there’s no point doing it for short code, what you just wrote is much simpler as: DialogMode *dm = 0; for (auto d : Gui::root->children) { dm = dynamic_cast(d); if (dm) { dm->setPlacement(); break; } }
@josiahmanson
Жыл бұрын
@@MrNoname7296 That is missing the call to create a new dialog if it was not able to find the dialog. You got rid of the "doExtra".
@MrNoname7296
Жыл бұрын
@@josiahmanson That’s a data point on this being hard to read that I immediately glanced over it :P. Personally I’d rather just have a second if after the for loop, but the other more readable alternative is providing the default up front like: DialogMode *dm = new DialogMode(Gui::root); // this seems like a singleton anyways which would avoid the memory leak for (auto d : Gui::root->children) { auto ddm = dynamic_cast(d); if (ddm) { dm = ddm; break; } } dm->setPlacement(); Alternatively to avoid the branch/alloc then just wrap the find logic into its own function with an early return if dm is found in the for loop or return the default: auto dm = findDialogMode(…); dm->setPlacement();
@Narblo
Жыл бұрын
20:00 this is exactly why I am making my own language instead of using an existing one, I hope that later on when working with my language passing to jai be easy and fast so I dont have to mantain 2 projects. I wish I could be a beta user since I wanna make my own game engine and registering types from a dll is a must and jai have the potential to do so
@u9vata
Жыл бұрын
Is there some facility that works like "realloc" in this language? Lately in a perf critical code in C++ I had to use reallocs to solve an issue and in C++ there is nothing like "renew". Basically realloc does change the heap allocation size, but instead of throwing away things it grows the allocated memory when the OS can provide space for it right afterwards. This also spares moving the elements in case of vector-like data structures or flat sorted map data structure I work on now. Just asking because C++ choose not to have anything like "re-new" similar to realloc so there asking the OS for extending already allocated ram is just not possible unless manually doing malloc things... Also I am not in beta, but would like to know if there is something like "probable" branches that I can mark. Many of my algs use that from clang and gcc and previously there was pushback from msvc against it but now it comes to latest c++ standard thankfully. That is can we mark the probable code paths for the compiler to optimize (or automatically de-inline the cold paths to free up instruction cache)? Also I guess with the metaprogramming, one can do similar things like with templates - but more orderly. This is good. For example in a fast sorting algorithm I used templates to "manually unroll" the loop and generate good enough asm output. I guess the #insert or what is good for this if needed? I certainly hope so. Did beta people contribute to data structures and algorithms in jai's standard library? I am not sure this is best way for the hash map standard implementation, but certainly not worst. I think it was called "open addressing" (I only know Hungarian term for this way of collision handling) or closed addressing - not sure anymore. Keep up the good work! I am fascinated by this language and its design decisions. Please don't get offended or anything. I really wish this succeeds highly because would be awsome!
@EdwinSteiner
Жыл бұрын
Jai is very low-level when it comes to memory management, precisely to give the user full control over it because it is so performance critical. Also Jai does not buy into the OO-practice of linking object construction with memory allocation, so I don't think resizing/realloc will be any harder than it has to be for the obvious technical reasons. I'd say the typical larger Jai programs will be expected to have their own memory allocation code at some stage, including things like using virtual memory tricks to resize large arrays, etc.
@u9vata
Жыл бұрын
@@EdwinSteiner I know Blow does not like RAII (I actually like that from cpp, but can imagine he make better alternatives as a whole architecture), however when you say "typical larger Jai programs will be expected to have their own memory allocation code" that is something you can say about C++ (there this is "bananas" though, but doable) and not what I ask. What I asked is that the memory allocation API - where I can put in my own - does or does not support "realloc" like operations? The gain with realloc is that when there is empty block big enough after the already allocated address, a realloc just grows the allocation size. Then you can avoid doing a copy of the array / vector elements as the OS guarantee you a continous memory that is now just bigger - but all your previous addresses are where they were before. Also on some embedded, low-memory devices realloc is useful because you can grow a vector by one if you really need (not good for non-embedded) without doing a lot of copies. And copies can be only avoided if the OS helps with this AND if the memory allocation architecture of the language helps with this. So this works in plain C because the language literally does not care for heap just calls to malloc/free/realloc do it from the OS. In C++ one cannot do it "properly" because for things being allocated you have new / delete and basically that's all. There is no "renew" or anything. Of course you can use malloc / realloc like in C... but then basically cannot use standard library and even if you define your own allocators to use malloc/free there is no API support for realloc. So realloc will never be used and you cannot even hook that in... Okay... you can use it in your "very clever allocator patterns" maybe, but is a pain to do. Also there is no way for a vector to know if there is a realloc or not from the OS and avoid doing the unnecessary copy. You need to rewrite all the standard library for that to work in C++. I see from the video that in Jai you have some sense of allocators (like he talks about the temporary allocators design at a point) so I am sure there is some architecture / API for allocators and how to change them etc. First of all I guess it is easier to make allocators than in C++ where it is "banana cake" bullshit to do this, but secondly I was interested in knowing if realloc-ation is part of the architecture or again it is not part of it - just like it is not part in C++. Have no issues on being low level. Realloc is very low level and C++ not go that low level and this makes me sometimes go back to the "malloc/free/realloc" manual handling instead of using its allocators.
@EdwinSteiner
Жыл бұрын
@@u9vata malloc/free/realloc are not OS-level system calls, as you seem to imply. They are calls to an in-process heap memory manager usually provided by your libc. They only invoke the OS occasionally to get larger blocks of memory added to the address space of the process. I'm sure Jai will come with a basic default implementation that implements equivalents of malloc/free/realloc. Also, Jai has dynamically resizable arrays out-of-the-box and I'd expect them to do some form of realloc by default. Given that there are no magical object-level semantics in Jai, there shouldn't be any obstacles to realloc-ing anything. That said, you can always replace the default heap management by another one or roll your own. I don't even think you have to hook into any API to do that as long as it is about memory that your own code allocs. The allocator API in Jai's context is needed, though, if you want to reuse some code unchanged but still make it use your custom allocator to get memory. I don't know the details of this API, so I cannot tell you whether a realloc-like call is part of it but I'd be surprised if it wasn't. BTW, on modern systems you can do better than realloc by using virtual memory. You can allocate a huge chunk of 64-bit address space for your array without committing the memory and only commit the blocks you need as your array grows. You can even do that transparently by having a page fault handler. This has the advantage that the already filled part of the array is *guaranteed* to stay at the same addresses. Of course, it only makes sense for really large arrays because it only works with a granularity of full memory pages.
@u9vata
Жыл бұрын
@@EdwinSteiner " don't know the details of this API, so I cannot tell you whether a realloc-like call is part of it but I'd be surprised if it wasn't." Basically this is my main question. You would be surprised how many new and shiny low level languages does not have any support for realloc-like API. And if there is no API, then anything standard is basically never using that even if you roll your own. "malloc/free/realloc are not OS-level system calls, as you seem to imply." Did not wanted to imply that. But realloc is more like an architectural idea and if there is no such thing in the memory management, one has to bring it all up from sbrk and brk? That would just not work.
@gettem6341
Жыл бұрын
1:51:40 "I think one of the reasons why so much code is bad..." loved this
@FiveNineO
Жыл бұрын
Looks like the project is doing great 😃
@Awesomer5696
Жыл бұрын
when you talk about not giving out information on the compiler internals, is this with refrence to Odin? I've often wondered why I never see it mentioned explicitly that its basically a blatant copy of jai - at least as far as I can see.
@Noble_Savage
Жыл бұрын
I think it also had something to do with the language "Jiyu" which was created by a Thekla employee to rival Jai, to which Jon took legal action against since the guy worked closely on the Jai compiler.
@EdwinSteiner
Жыл бұрын
@@Noble_Savage I'm normally quite opposed to employers restricting what employees do in their free time but, wow, this is brazen: openly copying the type system (and maybe other things?) of the language one is payed to work on into a public hobby project! Things like that are the reason we all have to face overly restrictive employment contracts.
@julkiewicz
Жыл бұрын
Rust also has `unsafe` blocks. There always should be a fallback mechanism, especially in a low-level language. But with the `unsafe` blocks at least you know where to look for bugs first. But all and all agreed, this imposing style doesn't seem to be what Jai is about.
@blenderpanzi
Жыл бұрын
Have you thought of making a shader language based on Jai? Compile Jai targeting Vulkan and Direct3D shaders?
@TheMaginor
Жыл бұрын
He talked about it in the video 2:16:15
@blenderpanzi
Жыл бұрын
@@TheMaginor Huh, somehow missed that. Guess I was tired and nodded off again.
@starc0w
Жыл бұрын
Thx Jon!
@ManFromTheFizz
Жыл бұрын
Does anyone know how to join the beta? As a amateur coder would be immensely helpful being apart of a very active and dedicated community, and constantly getting support and feedback.
@qvindicator
Жыл бұрын
I’m pretty sure only friends of Jonathan Blow and friends of their friends are allowed in the beta
@ManFromTheFizz
Жыл бұрын
@@qvindicator How do I become a friend of a friend of Jonathon Blow?
@DavidConnerCodeaholic
Жыл бұрын
Yeh on the cache miss being 500 times slower than a CPU cycle: this is why Emacs as a service/client *desperately* needs to be “taskset” onto a CPU/pair with NUMA configured. Also, if you just ensure that NUMA is configured then, depending on the lifecycle of the process/worker, the OS should be smart enough to accept gains from cache allocation. NUMA seems to be an afterthought in the minds of people not designing a datacenter or server deployment (I have no idea how to configure NUMA when you have a VM guest with native CPU running on a VM host) - however, your average consumer/gamer could arguably benefit quite a bit more, since they are not running on arbitrary VMs in a datacenter. This 😢 sadly means that your typical spoiled gamer would need to invest hours into something other than Call of Duty or KZitem vids on AMD VS NVIDIA ZOMG.
@10bokaj
Жыл бұрын
Nice to a video on youtube again
@MrHandsy
Жыл бұрын
This amount of detail is fine at 19:45
@fahd2372
Жыл бұрын
38:57 gotta love how he just makes up quotes on the spot
@karolis_koncevicius
Жыл бұрын
Does anyone here know what is that painting / frame on the right side behind Jonathan's back is?
@luminousmonkey4512
Жыл бұрын
It’s a source code tree graph of an Atari 2600 game.
@jonahbranch5625
Жыл бұрын
@41:37 I think federation is the solution to this. Anyone can host their own code server, but they can all "talk" to each other. This allows you to query the whole network from just one server, giving you a centralized experience without actually being centralized. Forgejo is working on this
@adamschackart6859
Жыл бұрын
I hope the bytecode interpreter is still alive. That was a cool early feature.
@arseniykucherenko4960
Жыл бұрын
When it will be open source?
@doug9000
Жыл бұрын
I dont understand all this closure and secrecy about the language, Rust is rising fast in the last years, i know the intention is release the language with the game src but i think this is damaging the potential range of the language use, and the building of a comunity around it.
@rolandinnamorato1953
Жыл бұрын
Entitled much?
@TheMrKeksLp
Жыл бұрын
@@rolandinnamorato1953 That's a valid question/concern, not entitlement
@rolandinnamorato1953
Жыл бұрын
@@TheMrKeksLp seeing as OP knows Jon has already addressed this before and still basically demanding the source because Rust does is absolutely entitled.
@MikesGoAcademy
Жыл бұрын
Entitlement means "i deserve this" the op never said anything of such so you are just assuming about what is in his heart
@doug9000
Жыл бұрын
@@rolandinnamorato1953 im not "demanding" anything. I follow jai development since 2014, a language dont get used just because its better, java and javascript is a living example of that. jai has the potential to be the biggest thing right now, but its not. thats my point.
@xanderlewis
4 ай бұрын
My (mobile) KZitem app crashed completely and quit to the home screen just soon after you started saying 'I've watched software turn to trash within my lifetime’.
@blain20_
3 ай бұрын
Maybe you could allow: args... = Func1() Func2(args...)
@PhyloGenesis
26 күн бұрын
Has Jon ever pronounced Jai? He always just says "the programming language" >.>
@lithium
Жыл бұрын
1:27:30 oh god it's std::vector all over again
@lordquaggan
Жыл бұрын
1:51:39 - J Blow declares that modern software is bad is because the developers have no bitches.
@sandworm9528
Жыл бұрын
Hahahaha hahaha much appreciated, best part of the video
@adamlancaster763
Жыл бұрын
1:00:47 this is why pipeline operator like in Elixir is so well received.
@SimGunther
Жыл бұрын
For parsing individual operations that would make up a compound function call, I could see why this operator would be a great idea. If the pipeline is all in one line, it still makes debugging a bit difficult unless you could set a break point at a specific column in the line.
@Zeda_
Жыл бұрын
I would love to see a pipe operator for jai, or hopefully custom infix operators so we could do it ourselves.
@1nduck
Жыл бұрын
Post more often on youtube
@meanmole3212
Жыл бұрын
2:34:10
@joshuaworman4022
Жыл бұрын
just a random thought. so i dissagree that whats wrong with software has as much to do with programing culture as is often stated in circles like this. i think its allowed to get worse and worse because consumers simply arent educated about how there programs could be behaving and what kindof experience they could be having. in the game industry if a game runs at 30 fps people might buy it on pc instead of ps4 and that is a reality sony has to contend with and companies like epic have to facilitate. and because they have to contend and facilitate that you see astronomically higher software standards, not that modern game engines are perfect but they are way better then twitter. And this presents a problem because historically how consumers get educated about new products is competition. eg someone comes along and makes a product with a better experience and then puts a ton of advertisement into the idea to -educate consumers-. thats the issue is how do you get enough money to educate consumers that things could be better. it aint free. my assertion is that if the consumers were educated that twitter could be this slick awesome experience they would buy a competing product that gives them that. then twitter would be forced to invest in the human capital necessary to compete and would have to create higher standards in at least that market and you would have programmers with the incentive to make higher standard products like the game industry. and the issue there is that brands like twitter are very hard to compete with. not impossible, just really hard. so i think software being bad is more of an advertisement issue then a programming culture issue. if you hold people to higher standards then they will create what is needed to facilitate those standards. but the consumer base has lax standards.
@TheDolmant
Жыл бұрын
I agree this is a factor and I would summarize my take with 'Capitalism doesn't encourage much competition in the software industry'. Because software is free to distribute and gains value when there is a bigger user base, you cant possibly compete with an established platform without massive backing. You are behind in features, cant compete on price and any innovations you make can be easily copied and rolled out in months (if not weeks or days). On top of this, users often wont notice skilfully built software as they tend to focus on UX and functionality rather than stability and speed. To make matters worse, even if you hire good engineers in order to build the best software you usually need to build the same thing a couple of times at least. The business sees almost no benefit from this exercise. There is no push for well built software because it isnt worth the money from the business perspective. The principals capitalism relies on to promote competition and innovation fundamentally break when the product costs literally nothing to produce. I would argue that this problem is at its worst in places like the online payments industry and compared to that it is only a minor issues in the gaming sector.
@EdwinSteiner
Жыл бұрын
@@TheDolmant Social media is probably the worst because the users of social media are not the consumers. Users are a resource being exploited for their attention and the actual consumers are the advertisers and opinion manipulators to whom the users' attention is being sold.
@iroxudont
Жыл бұрын
JAI will release just in time to be used on fez 2.
@shk_huz
Жыл бұрын
comment of the month award goes to...
@ihrbekommtmeinenrichtigennamen
Жыл бұрын
Can you elaborate on 2:34:35 and 2:47:40? I haven't been following development closely, so there might have been some public happenings that I missed. I'm asking because I like to save snippets of your videos where you say funny phrases, e.g. "Garbage numbers means our program goes fast" ( kzitem.info/news/bejne/qYOhx6WPsqJ3g20m19s ) or "I avoid [C++'s std namespace], just like I avoid all STDs in real life" ( kzitem.info/news/bejne/yoyEmYCCn2aogJwm ) for entertainment. Or where I want to have a reference à la "I'm not the only one with that opinion" for when I'm making an argument about a programming topic, like arguments against problematic implicit type conversions ( kzitem.info/news/bejne/tX5vvHeEb4ecrIYh21m58s ). I wouldn't expect that to be abusive (and I've only used those snippets in a chat group with close friends, and as inspiration for a library name at work), but it somewhat fits your description, so I'm a bit worried that I'm part of the problem.
@meanmole3212
Жыл бұрын
Javascript debugger allows you to choose which function to enter on the same line, so there's hope.
@sandworm9528
Жыл бұрын
What's a JavaScript ? 🧐
@meanmole3212
Жыл бұрын
@@sandworm9528 medieval play about brewing coffee and everyday anxiety
@sandworm9528
Жыл бұрын
@@meanmole3212 oh yeah, Ive seen that play. The casting was terrible though
@user-ov5nd1fb7s
Жыл бұрын
I want to try your language.
@kron520
Жыл бұрын
40:50 Imagine owning a television.
@meanmole3212
Жыл бұрын
#justboomerthings
@jslimefeld
Жыл бұрын
If I had the wasted career his man had my hair would look like that too haha
@junosoft
Жыл бұрын
When does Jai Launch?
@TheDeer99
Жыл бұрын
Never. It's a meme language and Blow is way over his head.
@mnkeymasta
Жыл бұрын
2:06:00 I wish Jon good luck on JAI so maybe one day he can un-fuck Operating Systems as well
@sandworm9528
Жыл бұрын
Yeah, I'll probably never use jai but I like the way he thinks and I heard him talk about some of the decisions he would make if he wrote an OS, I wish he was working on that.
@Viflo
Жыл бұрын
1:01:24 "This is what happens when people from math class try to program" *cough cough* Haskell
@boblefest
Жыл бұрын
The fact that he only takes inspiration from imperative languages, and hates on the art of abstract problem solving (math) is an indication that his language likely is badly designed. He is too damaged by C++.
@Viflo
Жыл бұрын
@@boblefest I can't judge as I haven't tasted the language. I am not confident to form an opinion here. However I think he is trying to produce a language that is practical for making games, so imperative is theoretically the way to go.
@purplevincent4454
Жыл бұрын
@@Viflo I am a huge fan of math-oriented languages. The unnecessary hate is absurd to me. I find it much easier to logically reason about code in F# or haskell. That said, there are clear times where you don't want to use functional languages, and game development is one of them. Mainly due to the performance cost.
@Ryan-xq3kl
Жыл бұрын
@@purplevincent4454thats why Jai is not a normal language it is a product, most langs we use were designed by comittees not a single person that is why open source and free software is needed. blow may not like it but keeping the software closed source is likely what will lead to it not being broadly adopted
@Viflo
Жыл бұрын
@@purplevincent4454 Yes but in these languages you always hit the wall of crappy syntax, which does not allow you to be truly expressive. I challenge anyone to write a JSON parser in C++ and in Haskell. The performance will be the same, but the C++ version will be done in about a quarter of the time. Also the C++ version will be much more maintainable and expandable. Being functional for the sake of being functional is a dead end in programming for 99% of the cases (admittedly there is that 1% where it helps).
@lighthe525
Жыл бұрын
my god
@julian1000
Жыл бұрын
I expect this language to find an extreme niche under which it is very useful but as of yet I struggle to see what that niche is. Ostensibly it seems intended to be for game programming but I don't think the programming is really the bottleneck in game development nowadays. I think what this guy is doing is cool and a worthwhile piece of art but I do question the business value.
@sandworm9528
Жыл бұрын
But making a new programming language isn't really monetizable anyway.
@julian1000
Жыл бұрын
@@sandworm9528 there are a number of successfully monetized programming languages. D, Wolfram, that one stats one jump to mind. I concede they are few and far between
@Learnerofthings
Жыл бұрын
He is building games in his own language that will sell.
@julian1000
Жыл бұрын
@@Learnerofthings That may be true, however Mr. Blow appears to be quite the little capitalist which means he'd likely understand that you want to reduce the costs of development as much as possible. He perhaps sees this as an uber mega long term investment and all his future games will be sooo much easier to develop it'll pay for itself on the very, very long term. However, I find it much more likely that this is simply a passion project. I'm betting Mr. Blow is aware of that and well capitalized enough that the losses incurred from this diversion won't be too meaningful to him. Maybe he really does still believe in the project though, or maybe he'd just rather develop a programming language than make games, who knows. Programming is not the hard part of game creation, so making a programming language as your primary (and rather significant!) investment into reducing future development costs is IMO, very questionable.
@filipg4
Жыл бұрын
I no longer use C++ for my projects. Because with half the code of C++ I can achieve the same output in Jai, with an added benefit that code-base is much simpler, easier to understand, debug, build and maintain. If it were just quality of life changes, value would have already been big, but it's so much more. It will take time for the language to be adopted widely, but it will happen, I have no doubt. Also a note: a lot of people seem to be confused that this language is "a language for games". Even if it were true, games are just software .... what makes you think you cant write something which is not a game in this language?
@philipdifrancesca
Жыл бұрын
GOTO is "necessary" simply because it will drive off the language nazis that are giving you undeserved headaches.
@nthnnnnnnnnn
Жыл бұрын
First :p
@nintendude794
Жыл бұрын
Second :p
@pleggli
Жыл бұрын
first
@timstevens3361
Жыл бұрын
chatgpt was here
@n0us3rn4m3s4v41l4bl3
Жыл бұрын
Whoa an xmass present from Jon Blow! Was about to unsub. Thought channel was dead.
@EdwinSteiner
Жыл бұрын
He's much more active on twitch if you want to know what's going on.
@____uncompetative
Жыл бұрын
More people should watch Jackson Wagner's critique of _The Witness._
@kylewoolacott4646
Жыл бұрын
Why
@CJMAXiK
Жыл бұрын
More people should watch documentaries about Jonathan, he is highly influential.
@LosManexStudio666
Жыл бұрын
Yea, i recommend those videos too. But why you call it critique? It's about examining and discussing the game
@nintendude794
Жыл бұрын
I like The Unbearable Now a lot.
@____uncompetative
Жыл бұрын
@@nintendude794 Electron Dance did a great job with that video. _The Witness:_ Alternative Review by VideoGamerTV is also worth a watch.
@brianmahoney4156
Жыл бұрын
God. Why even bother when soon AI will do all this in the snap of a finger? We are in huge trouble…
@mnkeymasta
Жыл бұрын
Sentiment-Chatbot take. Jonathan Blow publishing JAI at the cusp of AI datamining ALSO: - Places JAI within the corpus of text that all future AI are trained on - Allows JAI contributions to AI
@meanmole3212
Жыл бұрын
Let's do it while we still can because it's fun.
@SimGunther
Жыл бұрын
@@purplevincent4454 That's quite a defeatist attitude. This tool will simply change what questions and remove the need for script kiddies, not remove the need for engineers.
@purplevincent4454
Жыл бұрын
@@SimGunther you are correct, I was being dramatic when I wrote that comment, but I'm still concerned of what later models of chatgpt will be like.
@user-zq8bt6hv9k
Жыл бұрын
I don't understand why he calls it a compiler, isn't it just another llvm language? It's more a parser for a fancy syntax than something like clang or gcc
@kcarlsson89
Жыл бұрын
clang is also an "llvm language". Not sure what your point is.
@EdwinSteiner
Жыл бұрын
No, it is a full-blown compiler that even has its own (fast but not optimizing) x64 back-end so it can work standalone without llvm. llvm is only used as a back-end for optimized builds. I expect that llvm will be replaced sooner or later because it is so much slower than the rest of the compiler.
@user-zq8bt6hv9k
Жыл бұрын
@@kcarlsson89 i did an oopsie, but my point is the most relevant optimization work is done on llvm, the rest is just parsing stuff to produce IR that llvm can understand. the most important part in such language is the ecosystem, and there it seems non-existent. I still don't see what's the added value here, what problem do you solve with this language. Zig offers a powerful build tool, comptime and other stuff like this. Rust tries to solve memory issues with their linter. D tries to replace C++ with an opt-in GC. Jai seems to be yet another syntax that on paper will make me more productive somehow. Not (just) a criticism, if u can make a video explaining exactly what Jai tries to solve I will appreciate it.
@oriyus
Жыл бұрын
@@user-zq8bt6hv9k John is smart it must be good.
@notuxnobux
Жыл бұрын
@@user-zq8bt6hv9k This language was started before zig existed but yes, zig is a good alternative. There are many things jai does better than other languages/compilers, but one example is that jon blow can compile his game engine + game, more than 100 000 lines of code in around 1 second on his laptop. In c++, rust, zig that would take minutes. Jai can also automatically switch between array of structs and struct of arrays for performance benefits without changing the code. Zig has a structure for this but it's different. There are also things like versioned structs to make sure serialization is done properly with updates. Basically it's a language specifically designed for game programming and it does it better than any other language.
Пікірлер: 189