The problem is that game development companies are willing to invest money in buying quality tools to make their developers productive, where as traditional trillion dollar software companies prefer to let their developers wallow in filth.
Getting a company to invest 5,000$/yr into making their breathing revenue machines that cost 200,000$/yr and produce 1,000,000$/yr in revenue is like pulling teeth in this industry. Companies with breathing electrical engineer revenue machines do not bat an eye at 50,000$/yr in making them productive. Think about how much cool and effective tooling you could get with that kind of budget. But if you are not willing to spend even one coffee worth on your tooling, then one coffee of productivity is all you get to have.
It's also cultural.. when everybody in the room thinks a REST api is state of the art, you'll have a hard time selling them more R&D.
It was a shock because in gamedev debuggers are a Big Deal. The vast majority of AAA gamedev happens in Visual Studio’s debugger or some alternative that is at least as capable.
That said gdb and similar debuggers are still too limited IMO, there's so much we could add on top. Well maybe I'm not aware of improved variants.
To be fair, the core components of a low level debug agent are still largely the same, so it is not like the technology is bad per se. It is just that it only constitutes table stakes, a bare minimum foundation, these days. Even looking at 20 year old technology like time travel debugging that allows you to time travel execution back and forth gives a far better idea of what people are missing by using primitive tools.
The DSL was called Game Oriented Assembly Lisp.
> It supports a long term compiling listener session which gives the compiler knowledge about the state of the compiled and thus running program, including the symbol table. This, in addition to dynamic linking, allows a function to be edited, recompiled, uploaded, and inserted into a running game without having to restart.
https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
Found more info on that here:
https://lisp-lang.org/success/graphics/
> Naughty Dog Software used a Common Lisp DSL to write the Jak and Dexter series of games for the Play Station.
> Naughty Dog co-founder Andy Gavin, says the unique capabilities of Lisp enabled fast development and execution of character and object control – something that was needed to fully realize the numerous 3D creatures and devices which interact with the player in real-time (60 frames per second).
> “Lisp was just the best solution for this job,” comments Gavin. “With leading edge game systems like ours, you have to deal with complicated behaviors and real-time action. Languages like C are very poor with temporal constructs. C is just very awkward for a project like this. Lisp, on the other hand, is ideal.”
> As Gavin explains, “With Lisp, one can rapidly develop meta constructs for behaviors and combine them in new ways. In addition, Lisp allows the redefinition of the language to easily add new constructs; particularly those needed to deal with time-based behaviors and layering of actions. Contrary to popular belief, there is nothing inherently slow about Lisp. It is easy to construct a simple dialect which is just as efficient as C, but retains the dynamic and consistent qualities that make Lisp a much more effective expression of one’s programming intentions.”
https://all-things-andy-gavin.com/2011/02/02/making-crash-ba...
I wonder how he works these days.
> But the craziest thing I did was create a new programming language – with Lisp syntax – for coding all of the gameplay. It had all sorts of built in state machine support (very useful with game objects), powerful macros, dynamic loading etc. It was also highly irregular and idiosyncratic, and in true Naughty Dog fashion “powerful but complicated.”
As for how he works these days, I see in the About page:
> Briefly in 2008, and then full time from the second half of 2009 on, Andy has been concentrating on novel writing.
On the contrary the complexity web development, distributed systems emerges from many communicating processes, that execute in different environments.
A sophisticated debugger might help the former category more than the latter. There’s no shortage of monitoring products that act on the distributed systems level.
I've worked with expensive software before (embedded stuff, few K$ per seat) and it it was horrible - missing features slow, crashes a lot, horrible SDK designs. Yes, maybe it did generate some magical code (I have no way to check this) but the dev UX was terrible.
I am working with clang & command line build system now and this is so much better. If someone offered me an expensive IDE I'l do all I can to make sure I don't have to work with it.
There are simply far too many hurdles to do basic computing things. I think Microsoft could do some minor additions to powershell and maybe get something like this.
I wish some billionaire would put up some money and fund a modern lisp machine or something like that. I know it'll probably never work, but I can dream.
MacOS has something like this: https://en.wikipedia.org/wiki/AppleScript#Basic_concepts You can send around events and macro/script GUI stuff.
I want to open my laptop to an operating system with no advertisements or 1000 programs running in the background. It should be pretty simple with basic application support like a text editor, office suite,: database...etc. It would have a super powerful scripting language built-in with DSLs for graphics, UI, mathematics/science, OS, sound, hardware...etc. It would also have some good hardware peripherals you could control. Basically an ideal work and hobby computer that has some centralized/integrated way of accessing all the tools you need with minimal fuss. It just makes me wonder why in some respects there are still many things that the Xerox Alto or Commodore 64 can do that I can't easily do in Windows.
Need to write a simple videogame? That should just involve opening the shell and typing in some high level primitives instead of downloading some crazy big software and libraries
If(Foo){ Draw-Circle -Vertex [100,25] -Radius [2] }
Want to do some linear algebra work?
Invert-Matrix -FileInput 'example.csv' -Sparse 'True'
Maybe you want to read some data from some kind of hardware device that has a sensor (e.g. measuring air quality) and send it to a chart?
ForeverLoop(Get-Data -Port [0]) | LineChart
The commands above are obviously made up, but that is kind of what I'm thinking about. With modern OS, I have to download, install, and configure many tools to typically do these things and it is so messy and cumbersome. I often can't share with anyone else either without them installing all the same apps (e.g .maybe they have to download anaconda Python and postgres).
The Web is also just way too complex now. Ideally there would be a much simpler way to build beautiful and simple sites similarly to the hypothetical apps above.
It would be cool if he did something like that though. Just a clean and simple OS and not the corporate hellscape that is Windows or the alternatives of Mac and Linux. I'd buy a license or the hardware itself if he sold it and develop for something like that.
The syndrome seems to track with FP and async and possibly with "teaching" programming. FP and async typically don't work well with today's debuggers. Back in the day nobody was taught to program -- they figured it out by doing. When you are taught by someone who themselves never "did" something about the practice gets lost, imho.
\end{curmudgeon}
Do you mean the 1940s and 1950s? Because by the 1960s, Comp Sci was taught as a discipline and by the 1970s and 1980s anybody who wanted to work in the industry was expected to get a BS degree as a minimum (PhD if you were serious).
Sure, there were still people learning on their own, but they were either smart enough to improve significantly, or amateurs who would always produce spaghetti code which the pros (read: Comp Sci grads) ended up rewriting.
Maybe it's time to flip the game on its head. Bring reactive, lispmachines, responsive UIs.. I don't know.