Ideas about a new programming language for games.

By: Jonathan Blow

2978   107   206215

Uploaded on 09/19/2014

My first talk on designing a programming language for games.
Given September 17, 2014.

An implementation is being built and there have been many demos. See the full playlist at https://www.youtube.com/playlist?list=PLmV5I2fxaiCKfxMBrNsU1kgKJXD3PkyxO.

Comments (4):

By adamnemecek    2017-09-20

Lol, I'm flattered that you think it's worthy of saving. If you upvote it will show up in your profile in upvoted comments. Also, if you click on the date in the header of the comment, a favorite button should appear. When you favorite a comment it will show up in your profile in favorite comments.

> Also just kind of asking for curiosity, do you think a language like go or rust will become popular for developing game engines? I realize game programmers are anti-GC but what if GC technology advances that the performance drop is negligible I wonder.

I think it will but on some level, the needs of a game engine are different from the needs of say a DNS server. Jonathan Blow, the developer behind Braid (http://braid-game.com/) and Witness (http://store.steampowered.com/app/210970/) has been working on a language called Jai https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md even though he's aware of Rust and Go. He talks about some of his reasons in this video https://www.youtube.com/watch?v=TH9VCN6UkyQ

One of the things he mentions is that the game industry doesn't care about security that much (which I didn't realize until then but it makes sense) compared with a DNS server or something so his ideal language might have different design considerations than Rust.

Original Thread

By jstimpfle    2017-09-22

EDIT: I have removed what I said about what I think how usable the language is, because it's off-topic.

I'm not sure it's the least over-engineered language.

What you say is like saying that C is simple because there is only memory and functions!

Or, to take from for example https://argumate.tumblr.com/post/118013166244/python-what-if...

    Python:      What if everything was a dict?
    Java:        What if everything was an object?
    JavaScript:  What if everything was a dict *and* an object?
    C:       What if everything was a pointer?
    APL:     What if everything was an array?
    Tcl:     What if everything was a string?
    Prolog:  What if everything was a term?
    LISP:    What if everything was a pair?
    Scheme:  What if everything was a function?
    Haskell: What if everything was a monad?
    Assembly:   What if everything was a register?
But in any case, there are typically lots and lots of details (Haskell is no exception), and they matter. And also, it takes a lot of experience to get anything of quality done!

I like what Jonathan Blow calls this pattern: "Big Agenda language". It might make a programmer's life harder if the language is so opinionated. (Start here: https://www.youtube.com/watch?v=TH9VCN6UkyQ)

He specifically named Haskell, Java, and a few others, as being guilty of that, and being less usable for sticking to ideological purity.

Original Thread

By CamTin    2017-11-04

Jonathan Blow (cult/indie game developer/studio owner) has a lot of ideas about evolving C++ (or rather, building a new language to replace it) specifically in a game industry context. This perspective is interesting because its kind of running at a different angle away from the "memory-safe, better guarantees" project that Rust is workin on.

https://www.youtube.com/watch?v=TH9VCN6UkyQ

Just as the scripting languages took a big bite out of C/C++ usage starting in the 90s, I think we're seeing another couple use-case for C/C++ pull off:

1) stuff that is performance sensitive but security sensitive as well (Rust) 2) stuff that is soooo performance sensitive that Rust and C++ are actually too bloated, but which isn't really security sensitive so the guarantees that Rust/Modern C++ offer aren't worth it (Jai, Blow's language).

Category 1 is clearly real, but Category 2 might be too small to sustain itself (though Blow makes an economic argument that it would be worth it).

Are we just going to keep peeling back C/C++ users from the pack with more specifically-useful languages until there are none left except for those maintaining legacy code? Or are there use-cases where C++ will continue to make sense?

I guess a lot of this depends on whether or not we can meaningfully "modernize" C++ through the standards process without simply bolting on a lot more features that add to the bloat. I wouldn't wager much that this trick can be pulled off.

Original Thread

By erikpukinskis    2018-03-05

It’s a bit of a rabbit hole, but Jonathan Blow’s “Ideas for a programming language about games” and all the subsequent videos have totally revolutionized how I code: https://m.youtube.com/watch?v=TH9VCN6UkyQ

The irony of it is I’m a JavaScript programmer and Blow hates JavaScript, he thinks it’s antithetical to his style of coding.

But really, I think the ideas are very generic: he proposes what I think of as “data-driven programming” which in my head means “only move the bits you have to.”

And that core idea maps to any substrate. Blow is offended by the idea of targeting something other than processor instructions, and Jai (his new language) develops along those lines.

But I have no problem applying the same ideas to V8... you can really use any substrate... I could target Minecraft blocks and code in the same way. It just requires stepping back and asking what the minimum number of writes needed to get that substrate where it needs to be. And then rather than writing some monstrous declarative programming structure like Rails or Webpack, you just write the minimal function calls needed to make those bits flip and thing more.

Blow writes a whole new language and compiler based on those concepts, but I find the ideas translate to any arbitrary API target.

Original Thread

Submit Your Video

If you have some great dev videos to share, please fill out this form.