Good videos, with context.
John Carmack's keynote at Quakecon 2013 part 4

John Carmack's keynote at Quakecon 2013 part 4

Kostiantyn Kostin
5 HN recommenders · discussed 2013–2025
Open YouTube ↗

About this video

Part 4 of John Carmack's QuakeCon 2013 keynote, covering OpenGL, functional programming, Haskell, Lisp and Scheme, typing, multithreading, events and garbage collection.

Why it appears in the archive

Cited again and again as Carmack's key public statement on functional programming and purity in game development, plus his remarks on garbage collection.

AI-generated summary and labels from the source dataset; verify important details against the video. Source & credits.

From the Hacker News discussion

sssilver · 2016-10 · rec

Raymond Hettinger's talk about good code reviews -- [LINK] Carmack's talk about functional programming and Haskell -- [VIDEO] Jack Diederich's "Stop Writing Classes" -- [LINK] All with a good sense of humor.

Read original comment ↗
mrkgnao · 2017-08 · rec

The use of monads is a side-effect (ha!) of committing to purity throughout a language, and that's what FP is being equated to: pure statically-typed FP. (You can argue about how justified that is, of course. I'm not going into that, but you might want to see what John Carmack has to say[0]. No, he doesn't end by saying "we should all convert to the church of Haskell now", but he does talk about how large-scale game programming refactors are made easier when you're working with no (or very disciplined) side effects.) Monads are not the only way to deal with effects while keeping purity, although they were the first discovered and so on: algebraic effect systems as in Koka[1] (and as simulated in Idris or PureScript) are another alternative. Koka infers effects, so it's probably easier for a C-family programmer to pick up (I know little about it, though). [0]: [VIDEO] [1]: [LINK]

Read original comment ↗
akmiller · 2017-09 · rec

What you describe above is similar to what Carmack discussed at his QuakeCon keynote several years back when toying with a game engine on Haskell. Very interesting talk, [VIDEO]

Read original comment ↗
lsh · 2019-01 · rec

Excellent read, I still remember a lot of it. There is also the accompanying Quakecon presentation where John Carmack talks at length about all this: [VIDEO]

Read original comment ↗
ookdatnog · 2024-06 · rec

I think it is, and if you don't want to take my word for it, John Carmack thinks the same :) There's an old video [0] where he talks in-depth about his explorations of functional programming. It's perhaps a bit more about Haskell than about SICP, but in it he's also quite enthusiastic about what a veteran programmer can still learn from this book. [0] [VIDEO]

Read original comment ↗
Strilanc · 2013-08 · reference

Google cache: [LINK] The article is essentially just a link to the fourth part of his keynote at Quakecon ( [VIDEO] )

Read original comment ↗
epsylon · 2013-08 · reference

It depends on which type of games you're talking about. AAA game engines are still all about performance and tight memory budgets due to the nature of the platforms they're developing on - consoles and PCs. Hence the aversion to garbage collected languages, although higher level languages usually make it in the engines as scripting languages for game logic: UnrealScript for UDK, C# and UnityScript for Unity, Lua for CryEngine... The industry is traditionally oriented towards C++ and imperative / OO languages, but there's a lot of potential for functional languages in the "embedded scripting" area. In his 2013 QuakeCon keynote [1], John Carmack talks a bit about his experience with functional languages, and how, for example, Scheme could be an ideal candidate as an embedded scripting language. As far as smaller teams are concerned, and especially indie development, there is a lot of potential for OCaml, Clojure and other functional languages. Many mobile and indie dev teams already use a heck lot of C#, Python, Java and other specialized tools like Haxe, ActionScript. But all these languages have well liked and mature frameworks geared towards game development (XNA / MonoGame, PyGame, OpenFL, libgdx, ...), which is maybe what Clojure and OCaml are missing right now. [1] [VIDEO]

Read original comment ↗
javajosh · 2013-10 · reference

Backend devs can probably use more computer resources, particularly cores and RAM. We want to simulate whole clusters on our dev machines and instrument them with tools like Ansible and Docker, and then deploy multiple (fairly heavyweight) processes like JVMs to them. But yeah, 4 (fast) cores and 16GB of RAM is available in a laptop these days, along with an SSD and the best display you can buy, for $3k. (Of course I'm speaking of the MBPr). Games can always use more resources. AFAIK there is still a lot of progress being made with GPUs. 60fps on a 4K display will be a good benchmark. The funny thing is that GPU makers have taken to literally just renaming and repackaging their old GPUs, e.g. the R9.[1] As for the game itself, there is a looming revolution in gaming when Carmack (or someone equally genius-y) really figures out how to coordinate multiple cores for gaming.[2] But yeah, most everything else runs fine on machines from 2006 and on, including most development tasks. That's why Intel in particular has been focused more on efficiency than power. [1] Tom's Hardware R9 review: [LINK] [2] Carmack at QuakeCon talking about functional programming (Haskell!) for games and multi-core issues: [VIDEO]

Read original comment ↗