4 ms·
A bit off-topic: has John Carmack made any comments on Go programming language ? It sounds like a language that should appeal to him. The name makes it not easy
by b0rsuk 13y ago
A bit off-topic: has John Carmack made any comments on Go programming language ? It sounds like a language that should appeal to him. The name makes it not easy to google for (I've tried golang, etc). I couldn't find anything, is it because Go has a far way to go before it's mature enough to use in games ?
- zackzackzack 13y agoProbably because there are like a billion other things he has to do.
- humanrebar 13y agoConsidering the language features that Carmack is interested in, Rust seems like a better candidate than Go for him. Unfortunately, Rust isn't even in beta yet, so it will be a while before it's suitable for anything except experimental projects. The D language has a lot of features that should appeal to large software projects, including a certain amount of feature overlap with the functional languages. It hasn't really taken off yet, but it could be a killer app or two away from taking off. Maybe. I say all that to say that Go seems fantastic for server-side programs but I suspect other prospective languages will be better for large, performance-critical games, but I've been wrong before.
- Tuna-Fish 13y agoAs of right now, Go is essentially completely uninteresting to game dev because it's not possible to guarantee steady frame rates in it. (The GC solution is bad for latency.) Also, I doubt Carmack would be interested in Go -- based on his previous talks, he seems to be going for a more functional approach. Go is imperative to the bone.
- gillianseed 13y agoWell I would agree if we are talking about very demanding current gen style games (which id software indeed typically produce) but if we look at indie-style games then having garbage collection doesn't preclude a language from being used in games development, or having steady frame rates. There's no technical reason I can think of why Go wouldn't work just as well as C# (XNA/XBLA/MonoTouch/Android) or Java (Minecraft etc) for game development. Garbage Collector sweeps can indeed be a performance problem but there are obvious ways of minimizing it's impact during gameplay. Overall I think (read guess) that unless you are doing some sort of physics simulation, typical game logic requires relatively little cpu power and for the graphics there is hardware acceleration doing the heavy lifting.
- Tuna-Fish 13y agoGo will likely eventually have a GC that will not be that terrible. However, right now it's a simple parallel mark & sweep. If you allocate more than a 1000 objects, and do any allocation during simulation, there will be very noticeable GC pauses. The current Go GC is not anywhere near the capability of C# or Java GC, and would not be suitable for minecraft-level games. > Overall I think (read guess) that unless you are doing some sort of physics simulation, typical game logic requires relatively little cpu power and for the graphics there is hardware acceleration doing the heavy lifting. Well, it of course depends on the game. AAA games spend all the CPU budget allocated to them.
- gillianseed 13y agoI realize that it doesn't compare to Java's GC (which is likely state-of-the-art) but is it really terrible? Granted I haven't used Go myself (leaning towards Rust) but I've read that Go is already being employed in production scenarios with good results.
- Tuna-Fish 13y agoIt's perfectly passable for web serving and other such high-latency tasks. In a GC, the goals of throughput and latency are diametrically opposed -- optimizing for one makes the other worse. The present simplistic GC is a typical throughput-oriented design.
- gillianseed 13y agoI just remembered these (I knew I'd seen some game examples in Go): http://www.youtube.com/watch?v=BMRlY9dFVLg http://www.youtube.com/watch?v=BMRlY9dFVLg http://www.youtube.com/watch?v=iMMbf6SRb9Q http://www.youtube.com/watch?v=iMMbf6SRb9Q which are game examples as part of a game engine framework written in Go, seems to move smoothly with lots of objects including 2d physics.
- azth 13y agoOut of curiosity, what makes you say that Go would appeal to Carmack? Is it just because it is hyped as a "systems" language. For the way (some of) the Go authors define "systems", Java would do an equally (if not a better) job at that. Carmack seems to be interested in correctness and safety, neither for which Go has any significant offerings. In fact, it seems to be a step back for a "modern" language -- it has null pointers, no way to explicitly enforce immutability, no generics, and a crude and verbose way of handling errors. A panic() call in the code brings down the entire program.