• Ever wanted an RSS feed of all your favorite gaming news sites? Go check out our new Gaming Headlines feed! Read more about it here.

eddy

Member
Oct 25, 2017
4,739
I'm not sure how you can measure boosted productivity, given the wealth of C++ resources to accomplish something. Maybe if it just means specifically for Jonathon himself since he's obviously going to be intimately familiar with his language?

Article doesn't really say anything of substance either. If I had a quarter for every time someone thought their new language / development environment was going to solve "the problem" with existing solutions.

You could watch the videos, I guess. The first one(s) lays out the basic ideas, e.g it's NOT a "high conceptBig Agenda" language, explains why Go, D and Rust aren't suitable, and so on.
 
Last edited:
Oct 25, 2017
9,089
He says overtly that sexual biology determines interests, implying directly that women are choosing to be less involved in tech fields because of their biology. He then goes on to stick a weird political flag down and dismiss the issue as a meaningless talking point of some fringe, rather than a valid contention. If you can't follow the clear thread of misogyny in that, I can't put it more plainly for you.
I'm not defending Blow's whole position. I just didn't think the poster's specific criticism was on point. Nor does the thread need to be derailed by that discussion, does it?
 

Pablo Mesa

Banned
Nov 23, 2017
6,878
Question is, is it a more effective language or just an easier one??
If its just "easier" it could help some smaller endies or "baby 1st game" but unless is more robust than what C++ offer. I see no reason why go too deep on it then
 

eddy

Member
Oct 25, 2017
4,739
I would love to see performance comparisons when he is done with his programming language.

One of the goals it to compile fast. He's got two backends, one in-house that outputs X86_64 binary directly, and one that goes through LLVM. So one for fast builds, one for optimized builds. As of now.
 

filkry

Member
Oct 25, 2017
1,892
There's no need to use C++ even if an engine demands it. Scripting in (for example) Lua could be used the programmer's front end, and the Lua footprint is fairly small.

Speaking as a game programmer who has worked with Lua bindings for our engine... Lua is so much more expensive (in CPU time and memory) than C++. The footprint is massive at the scale of a AAA game.
 

onpoint

Neon Deity Games
Verified
Oct 26, 2017
14,925
716
I hope it's so intuitive that even women can learn it.

DRT4vNEUIAEJgP3.jpg
Came looking for this point or to make it.

Can't support him and his back-ass thinking anymore, no matter how genius his design may be.
 

eddy

Member
Oct 25, 2017
4,739
Just watch the first video(s), and a lot of speculation will go away. Note that he himself consider them outdated, but they lay out the groundwork. If you can't bother to do that, why speculate?



I will say that initially I was very sceptical, "Oh, just what the world needs", but I've change my tune a bit. I don't agree on everything, and I worry that some of the syntax may end up sucking (he's stated it's 'temporary', but we'll see), but here's the thing.. he's taking it seriously, and he's putting in the time and the money, including hiring people to work on it.

He's not all wrong about some of the baggage we carry along in other language like C++, and the meta-programming opportunities afforded via jai looks exciting.

 
Last edited:

filkry

Member
Oct 25, 2017
1,892
Good news, there's already a good alternative to C++, C#! I use it every day in the Unity game engine. Totally agree that C++ has a whole lot the developer has to think about when to come up with good optimized code, once I got used to C#, it really did increase my productivity and decrease my bugs.

Jai's Philosophy has very little in common with C#. It's actually a less feature-ful language than C++. It's supposed to be more explicit about what the machine is actually doing (less magic) and faster for getting it to do what you want, but not necessarily do more for you.
 

Ada

Member
Nov 28, 2017
3,731
Working in managed code for almost 10 years and going back to C++ for a one off project has been a nightmare. How do those devs deal with this shit on a daily basis. As for the OP I think its a waste of time. We don't need more languages just more simplifications.
 

hobblygobbly

Member
Oct 25, 2017
7,564
NORDFRIESLAND, DEUTSCHLAND
Demos are interesting for sure and I wouldn't say competition in this space is a negative thing. Not sure how many are actually going to use Jai though, obviously having proper FFI to support stuff implemented in other languages could help.

The most probable replacement for C++'s role in the long term would be Rust and it has already been used in certain companies tools. Not that it's saying much since Haskell and Ocaml also appear from time to time. Of course it's also possible that Rust proves to be too difficult for many, the same reason why we are stuck with crappy languages to begin with ;-)
The problem with Rust is that its compilation constraints are not applicable to game development. Rust has a fantastic compiler, it reduces a lot of bugs that can be caused in a language like C due enforcing constraints at compile time, this is great for mission critical systems, but game development is not that. Also it has great compiler error messages, the Cargo system is great, Rust is a great language, but I don't like it for game development and I don't think its' suitable for that workflow.

Game development is a very different software engineering approach than others, architectures, techniques, data structures, etc are unique, and general purpose systems languages offer the accessibility to hardware, but are not particularly suitable to the reality of game development, such as Rust.

Rust's compiler enforcement of constraints is too resistant to the workflow of game development, for a mission-critical system this is a trade-off with big pay-off, but there is nothing disastrous about a game crashing, it's a bug that can be fixed and patched, where as a rover on Mars is a different story.

In game development you want access to data as fast and wherever you need it, and you want to transform it, Rust makes this difficult to do easily because of how it is obsessed with safety and scopes.

In game development you want the ability to do unsafe things, Rust while it gives you access to the hardware, still wraps you around in safety gear, making things more resistant, and hurting workflow.

In game development you want to write high performance code as fast as possible and want easy access to data, in Rust, you can write high performance code that has lower possibility of run-time bugs due to compiler constraints, but it takes much longer regarding workflow.

C++ is my primary language but I don't subscribe to the insane levels of OOP dogma that's been around for so long now, but I also use and like Rust (although I am no expert of the language) - just don't like it for game development.
 
Last edited:

eddy

Member
Oct 25, 2017
4,739
Working in managed code for almost 10 years and going back to C++ for a one off project has been a nightmare. How do those devs deal with this shit on a daily basis. As for the OP I think its a waste of time. We don't need more languages just more simplifications.

By not writing "textbook OOP" C++ that wildly allocates memory all over the codebase while praying that "smart pointers" will handle it for you, and so forth.
 

Antialias

Frostbite Physics
Verified
Oct 25, 2017
27
Working in managed code for almost 10 years and going back to C++ for a one off project has been a nightmare. How do those devs deal with this shit on a daily basis. As for the OP I think its a waste of time. We don't need more languages just more simplifications.

Can you explain what you found annoying about this transition? Personally when I work in managed languages I am constantly bothered by my lack of control.
 

The Albatross

Member
Oct 25, 2017
38,963
Just watch the first video(s), and a lot of speculation will go away. Note that he himself consider it outdated, but it lays out the groundwork. If you can't bother to do that, why speculate?



I will say that initially I was very sceptical, "Oh, just what the world needs", but I've change my tune a bit. I don't agree on everything, and I worry that some of the syntax may end up sucking (he's stated it's 'temporary', but we'll see), but here's the thing.. he's taking it seriously, and he's putting in the time and the money, including hiring people to work on it.

He's not all wrong about some of the baggage we carry along in other language like C++, and the meta-programming opportunities afforded via jai looks exciting.



Thanks for posting these. Blow comes off so much less arrogant than I was expecting. HAving mostly seen him at videogame talks and in kind of weird interviews and his social media persona, he comes off incredibly arrogant to me, but in these talks he doesn't come off as arrogant... But pragmatic and reasonable. The videos changed my perspective on him a bit.
 

Tarot Deck

Avenger
Oct 27, 2017
4,231
I'm nowhere near his level of knowledge but this looks like a case of:

standards.png

This sounds like a criticism but it's actually good.

The best one will eventually prevail and be used by the majority (but never 100%, because nothing is perfect)

I believe in Jonathan Blow, I love everything he is involved.
 

Durante

Dark Souls Man
Member
Oct 24, 2017
5,074
Jai's Philosophy has very little in common with C#. It's actually a less feature-ful language than C++. It's supposed to be more explicit about what the machine is actually doing (less magic) and faster for getting it to do what you want, but not necessarily do more for you.
I always feel like when people complain about "magic" in C++ they might want to invest a bit more effort into understanding its semantics.
Yes, it absolutely is the case that more "stuff" happens automatically without you spelling it out than in, say, C. That's the whole point of abstraction, after all.

However, compared to many (most I'd say) other languages which offer a similar level of expressiveness it's still rather easy to understand and reliably predict what exactly happens in a C++ program. You just need to invest some time to fully study its value semantics, object lifecycle, and implicit conversion systems. That's pretty much it, as far as "magic" core language semantics which potentially result in runtime behaviour go. Maybe you could also consider some template unfolding/matching "magic", but again, it is absolutely predictable in its manifestation and happens at compile time.
That runtime predictability is IMHO what is missing in many "more dynamic" languages and what is important for game development -- or at least high-end game development to be more precise.

Of course, I'll readily admit that all of this manifests as a severe initial (and sometimes also more long-term) barrier to understanding. And that C++ - especially modern C++ - is a massive language, and in a few cases unreasonably so, is absolutely true. But at least for me, I start to miss quite a few of its features when I work in other languages; even if they are well-designed and suitable for the task at hand, like C# or Rust.
 

Ada

Member
Nov 28, 2017
3,731
Can you explain what you found annoying about this transition? Personally when I work in managed languages I am constantly bothered by my lack of control.
Specifically I had to create a windows credential provider (rfid stuff). I couldn't get the VS debugger to attach to a kernel process on the vm I was developing in. So when my provider spawned multiple child threads tracking down errant pointers causing crash loops was hell with only text out debug statements through windbg.

Other annoyances were:
  • Consuming REST services - trivial in managed land (very few lines of code in nodejs, easy frameworks in java) was non trivial in C++ land. In the end I had to settle with a MS based framework which required me to build the whole thing and trouble shoot my environment (does stuff ever build first time without issue?).
  • The crazy amount of string formats/wrappers, seems every framework I wanted to add used its own string type. Code examples given on the web using unsafe functions/depreciated code. The official MS documentation leading me around in circles.
Yep if you are competent in that language you definitely deserve the higher pay, way too many headaches.
 

Moosichu

Member
Oct 25, 2017
898
Thanks for posting these. Blow comes off so much less arrogant than I was expecting. HAving mostly seen him at videogame talks and in kind of weird interviews and his social media persona, he comes off incredibly arrogant to me, but in these talks he doesn't come off as arrogant... But pragmatic and reasonable. The videos changed my perspective on him a bit.

His attitude can flip a lot. He doesn't like explaining the same thing multiple times. But he does understand games development.
 

Deleted member 24118

User requested account closure
Member
Oct 29, 2017
4,920
You know, this is what sometimes annoys me about "internet politics": you can't seem to talk about and analyze individual topics. I don't know nearly enough about USSR politics and history to judge its combined impact on being "socially progressive". I do know from several examples and incidents that modern-day Russia (an oligarchy) very clearly is not socially progressive, but again, I don't know all the reasons for that.

What I do know, and the only thing I talked about in this thread, is that ex-USSR eastern European countries have very significantly higher female participation in several math-heavy engineering subjects, both at the scientific level and in the private sector, than the vast majority of western European countries. This is not in any way, shape or form a value judgement on their entire societal structure. It's an observation on one particular aspect of it, which I offered in this thread because it provides a very compelling point of evidence that e.g. interest in programming is a result of societal, rather than inherently biological, factors.

You specifically said:

(Regardless of whatever else we can say about USSR-style communism, it certainly introduced a dramatic leap in gender role equality.

How am I supposed to read that as anything but a commentary on gender roles in the USSR in general. If you only intend to comment on their labor participation then just say that, don't throw in deliberately vaguely-worded nonsense that you can backtrack from later.
 

filkry

Member
Oct 25, 2017
1,892
I always feel like when people complain about "magic" in C++ they might want to invest a bit more effort into understanding its semantics.
Yes, it absolutely is the case that more "stuff" happens automatically without you spelling it out than in, say, C. That's the whole point of abstraction, after all.

However, compared to many (most I'd say) other languages which offer a similar level of expressiveness it's still rather easy to understand and reliably predict what exactly happens in a C++ program. You just need to invest some time to fully study its value semantics, object lifecycle, and implicit conversion systems. That's pretty much it, as far as "magic" core language semantics which potentially result in runtime behaviour go. Maybe you could also consider some template unfolding/matching "magic", but again, it is absolutely predictable in its manifestation and happens at compile time.
That runtime predictability is IMHO what is missing in many "more dynamic" languages and what is important for game development -- or at least high-end game development to be more precise.

Of course, I'll readily admit that all of this manifests as a severe initial (and sometimes also more long-term) barrier to understanding. And that C++ - especially modern C++ - is a massive language, and in a few cases unreasonably so, is absolutely true. But at least for me, I start to miss quite a few of its features when I work in other languages; even if they are well-designed and suitable for the task at hand, like C# or Rust.

Just to be clear, I was trying to state Blow's points for people who don't know. I use (a fairly reduced subset of) C++ day to day and don't find its magic gets me too often. I follow Jai out of interest, not because I think C++ desperately needs to be replaced.

I've been messing around in Rust lately and certainly, I hit features I miss from C++ all the time. The most recent is primitive parameters in generics :(. And that language has been around the block for a while.
 

pksu

Member
Oct 27, 2017
1,239
Finland
Rust's compiler enforcement of constraints is too resistant to the workflow of game development, for a mission-critical system this is a trade-off with big pay-off, but there is nothing disastrous about a game crashing, it's a bug that can be fixed and patched, where as a rover on Mars is a different story.

In game development you want access to data as fast and wherever you need it, and you want to transform it, Rust makes this difficult to do easily because of how it is obsessed with safety and scopes.

In game development you want the ability to do unsafe things, Rust while it gives you access to the hardware, still wraps you around in safety gear, making things more resistant, and hurting workflow.

In game development you want to write high performance code as fast as possible and want easy access to data, in Rust, you can write high performance code that has lower possibility of run-time bugs due to compiler constraints, but it takes much longer regarding workflow.
Yeah, if the problem is just to crunch something out fast it can get hairy. I mean Rust is basically more legacy free approach to many of the same ideas that C++ had augmented with useful things from other languages along the way. The modern C++ approaches Rust in many ways but is even more complicated and can't often guarantee same level of safety (string_view for example is quite a footgun while the same idea works in Rust). The fact that you have more advanced type system doesn't necessarily mean you don't have fast access to data or nothing to say about memory layouts.

Of course Rust as its current state isn't ideal yet. Last time I did hobby projects with it there wasn't really a way to implement eg. linear allocators properly, not sure if there is ongoing work to solve that. And especially in the beginning Rust is going to be really unforgiving, only time will tell if it's too much.
 
Last edited:

eddy

Member
Oct 25, 2017
4,739
Just to be clear, I was trying to state Blow's points for people who don't know.

For what it's worth, I've been following jai since its inception, and I don't think Blow considers C++ magic (as in "doing things I don't understand"). Honestly doesn't seem like a think he would say.

Any discussion on that point without sourcing it seems pointless.

Just to make it explicit for the rest of the thread, from talk#1 @ 19:10:

Primary Goals:
  • Friction reduction ("Easy to do the job you're trying to do")
  • Joy of programming
    • Very fast compilation
    • Lack of tedium when expressing self in code
    • Pleasant and helpful error messages
  • Performance ("Do all the low-level stuff we want to do all the time")
  • Simplicity ("Hell of a lot simpler than C++")
  • Designed for good programmers
 
Last edited:

Durante

Dark Souls Man
Member
Oct 24, 2017
5,074
You specifically said:
How am I supposed to read that as anything but a commentary on gender roles in the USSR in general. If you only intend to comment on their labor participation then just say that, don't throw in deliberately vaguely-worded nonsense that you can backtrack from later.
Context for that statement is provided directly in front of that "vaguely-worded nonsense" -- the part you did not quote: "That it is a broad societal rather than domain-specific (or, for that matter, biological) issue can be seen by e.g. comparing the percentage of women in engineering disciplines between ex-communist eastern European countries and western ones."
Maybe I should have repeated that restriction again in the subsequent sentence, but usually in conversations some level of consistent context is assumed.

Just to be clear, I was trying to state Blow's points for people who don't know. I use (a fairly reduced subset of) C++ day to day and don't find its magic gets me too often. I follow Jai out of interest, not because I think C++ desperately needs to be replaced.

I've been messing around in Rust lately and certainly, I hit features I miss from C++ all the time. The most recent is primitive parameters in generics :(. And that language has been around the block for a while.
Oh, I agree, it was just a more general perspective of what I've found with people who express their frustration regarding C++ "magic".
Talking about template parameters, what I really want in C++ is using identifiers as template parameters (as that would allow me to get rid of most xmacros). I brought it up once with someone in the standard committee and it doesn't look like I'll get my wish :P. Then again, it would be mostly obsolete if we ever get metaclasses anyway.
 
Last edited:

DavidDesu

Banned
Oct 29, 2017
5,718
Glasgow, Scotland
I know this will sound naive but what Media Molecule are doing with Dreams is the future. That and using AI to assist in complex problem solving. I mean proper AI, that you can just ask to do something and it works out the best way and does it way quicker than even the best coder code do.
 

lukeskymac

Banned
Oct 30, 2017
992
Why?

I have no idea about programming mind you
Legacy, popularity of an "inferior" standard, stubbornness, inertia, standards that don't really have the capacity to be the single standard for a given area, no clear best one. Take your pick, these are all factors that can prevent a clear choice from being made, and are what lead to the situation in the comic.
 

2+2=5

Member
Oct 29, 2017
971
For those who don't know what we are talking about C++ is a general purpose language, with it you can program anything and in fact most of the pc software and games are made with it.
C++ is definitively the best choice for performance(unless you go for Assembler but that's basically machine language), but it's a somewhat complex and even for some basic things you need a library.
C#, Java etc are nowhere near as fast as C++.

I'm really curious to see how easy and fast can be his game development focused language, but the biggest problem that C++ contenders have to fight is that C++ has decades of libraries, so even if C++ is complex you will always find a library that can help you, while on a newer language you need to do most of the things yourself.
 
Last edited:

Tarot Deck

Avenger
Oct 27, 2017
4,231
Legacy, popularity of an "inferior" standard, stubbornness, inertia, standards that don't really have the capacity to be the single standard for a given area, no clear best one. Take your pick, these are all factors that can prevent a clear choice from being made, and are what lead to the situation in the comic.

Hmm thinking about it a bit more, you are correct. Fucking windows is the best example for that.
 

Mailbox

Member
Oct 30, 2017
561
The creation of coding languages for specific niches and especially in gaming isn't exactly new.
I mean, even bigger names do this sort of thing to as the need arises. Naughty Dog made a new language (GOAL) for J&D just so they could get the whole seamless world thing going.

I can see this being useful for beginners or small teams looking to do quick work in short time spans. Could be interesting but unlikely to be something i'll look into.