1. 11
  1.  

  2. 6

    I think it’s really weird to go for the it-wasn’t-designed-for-it argument; it’s just specious by default. So what if scripting languages weren’t “designed” for millions of lines? That’s not a dealbreaker. Asphalt roads weren’t designed for electric cars. I’d also throw out the arguments about code non-reuse & bad development toolsets, and just leave what maybe John is driving at — scripting, real-time performance: pick one.

    So what was scripting Doom 3 like? Fabien Sanglard shows us the way: Doom3 Source Code Review: Scripting VM (Part 5 of 6)

    I don’t really understand much but this note stuck out:

    Trivia : The bytecode is never converted to x86 instructions since it was not meant to be heavily used. But in the end too much was done via scripting and Doom3 would probably have benefited immensely from a JIT x86 converted just like Quake3 had.

    So perhaps the dust has not settled on this question? Perhaps, you can pick both?

    1. 4

      It’s hard to know how broadly Carmack intended his statements, without watching the entire video… and even then. I think he just means exactly what he says: that scripting inside a game can seriously hurt game performance. Which could be true while they are still extremely useful for most other things.

      I think extrapolating his comment as applying to all scripting languages is not supported by the actual content. Also note thay Carmack later turned into a Racket fan.

      1. 3

        Racket has a JIT and an AOT compiler as well, so I think that means it wouldn’t qualify as an interpreter in his book.

      2. 2

        Interesting in that he’s entirely wrong but for the right reasoning. The formation of code not as an art but a practice precludes some very helpful observations… Capitalist production and production for art are obviously in contention but programming is treated as just a feature of chipsets and not a culture unto itself.

        1. 16

          what?

          1. 6

            programming is treated as just a feature of chipsets and not a culture unto itself

            This is why so much software is so awful: it’s so beholden to the larger context it is written in. The absolute worst part of this is that programmers don’t see this as a problem. They think they have a seat at the table. Meanwhile, they’re trying to out-thought-leader one another with craft-destroying narratives that focus more on saying the same thing as everyone else.

            • “Testing’s too hard, just keep shipping!”
            • “JavaScript on everything surely is the future!”
            • “Dynamic typing is the only way forward…wait, we all like TypeScript? Static typing is the only way forward!”

            At this point, anyone who chimes in about any sort of mechanical sympathy is seen as slightly eccentric, because, like, V8 is magic, bro!

            1. 3

              This is why so much software is so awful: it’s so beholden to the larger context it is written in. The absolute worst part of this is that programmers don’t see this as a problem.

              It’s not a problem. I actually agree with the rest of your post, kind of, but that’s the difference between “fashion-oriented thinking is stupid” and “requirements are stupid”. Professional programmers building things that meet the needs of their customers is the good part of capitalism; it means they can have the software they want without actually having to learn how. It does mean that you wind up with coders building things with only half an understanding of what it’s for, but that seems like a small price in exchange for the benefits of specialization.

              They think they have a seat at the table.

              I’m not sure which table you’re talking about. If you mean negotiating their own pay, then yeah, obviously, everyone should have a chance to negotiate something that has so much of an impact on their lives. If you mean something like the set of business requirements, and the way software winds up being used? In most contexts, that is honestly a silly thing to ask for: most programmers work on specialized business software, and unless the coder is additionally a professional in the field, they (and by “they”, I mean “I”) would have little to offer at such a table. If an airline manufacturer, a doctor, a lawyer, a professional cook, a farmer, a teacher says they need such-and-such, and you’re not one yourself, and it’s not literally impossible, trying to correct them is just going to land you with foot-in-mouth disease.

              Of course, that’s a gigantic blow to the ego, which is why so many programmers make crappy software and-or hate working in a field like that, but it’s true. Ego is such a gigantic problem in this industry, probably even worse than quality problems.

              1. 5

                says they need such-and-such, and you’re not one yourself, and it’s not literally impossible, trying to correct them is just going to land you with foot-in-mouth disease

                In my experience this is really only true if the domain expert has a good understanding of computers and requirements.

                An experience I’ve had in multiple workplaces in unrelated industries: Experts ask for a report with particular data; when I ask hard questions about how they’ll use it, they reveal they plan to read through the report and manually, painstakingly update the source data based on a simple set of rules. When I point out that I could more easily create an automatic process that fixes the data for them, they are mildly surprised that it would actually be easier to do (since I don’t have to get a fiddly paper layout right).

            2. 1

              One of the lessons that we took away from Doom 3 was that script interpreters are bad, from a performance, debugging, development standpoint. It’s kind of that argument “oh but you want a free-form dynamically typed language here so you can do all of your quick, flexible stuff, and people that aren’t really programmers can do this stuff”, but you know one of the big lessons of a big project is you don’t want people that aren’t really programmers programming, you’ll suffer for it!

              I assume this is the part you’re alluding to? Basically, that the idea of having “non-programmers” programming is a fundamentally wrong-headed way of looking at everything, not only because you’re drawing a nonsensical and arbitrary line between the elite and the unwashed-masses, but also because having people write code with no respect for good practice is a bad idea.

              1. 1

                Capitalist production and production for art are obviously in contention

                Obvious?… In what way are they in contention?

                1. 4

                  Capitalist production is about achieving high profit and/or market share. A capitalist actor should go in that direction in every move. Most art, esp good art, isn’t produced for that reason. It’s usually personal, emotional motivations. Art whose goal is capitalist is very different in nature from that which isn’t. This isn’t always a bad thing (see AAA games).

                  In code, it often is given the nature of what businesses demand of those writing it. They’re not asking for a work of art. They might also be asking for messy requirements, contradictory things, or impossible things. They typically won’t give the artist much time to deeply understand and evaluate things. Resulting process and results are quite different than how an artist operates when driven from internal motivation on their own time.

              2. 1

                I don’t really follow the argument here.

                John Carmack states that scripting interpreters like ActionScript was too slow for the games Doom III and Rage.

                And the author states

                scripting languages weren’t really designed for large-scale development efforts involving millions of lines of code.

                Is anyone advocating building a software system of that size in ActionScript or Lua? Or does the author mean scripting languages in general? And why does one segment of software development (games) translate to general terms?

                1. 2

                  Is anyone advocating building a software system of that size in ActionScript or Lua?

                  Nobody’s advocating it, but it is the reality. Did you miss this part?

                  According to the Doom 3 manual, GUI designer Patrick Duffy wrote over 500,000 lines of script code, and generated more than 25,000 image files to create all of the graphical interfaces, computer screens, and displays throughout Doom 3.[49]

                  This is just one aspect of the game that was scripted.