326 karma · joined June 23, 2012
(sorry)
Deliberate efforts to surface this deeper layer back to the programmer-facing ISA (VLIW, notably Itanium) failed spectacularly outside of niche applications. C and its contenders can't simply hop over the CPU abstraction presented to them without having to map backward from some lower-level model to the surface ISA it's forced to target then having the rug pulled every few years due to microarchitectural changes. It has managed to evolve surprisingly gracefully over decades from tiny 16 and 18-bit machines, sometimes segmented, to 32 and 64 bit machines, and even accommodating SIMD reasonably gracefully via intrinsics (which is about the best we can do at present, as CPUs continue to diverge wildly in this area, though I'm begrudgingly impressed by what modern compilers can do via autovectorization to optimize simple loops).
Day of the Tentacle (which coincidentally I've replayed in the past week) executed the multiple characters mechanic the best I've seen, since each character was confined to their own area (past/present/future) and you could instantly pass items between them.
Is the latter something that was/is actively exploited?
You make a fair point about smart pointers, and median "modern C++" practices with STL data structures are unimpressive performance-wise compared to tuned custom data structures, but I can't imagine that idiomatic Java with GC overhead on top is any better.
Nevertheless, it is quite sad - however, it's difficult for me to relate to the experiences of someone who lived through that first wave of personal computing and played a notable part in it - perhaps through that lens, anything was possible.
It's not just about being able to stop your program and hot-patch code to recover from errors - this should be trivial in any dynamic language. Rather, it's about being able to composably control how to recover from exception conditions (or, really, any branching behavior) both interactively and programmatically in a unified framework.
It pains me to think people are still exposing themselves to this class of risk because of whatever iTerm2's latest and greatest idea is.
Depends what you mean by senior management, of course. I'm thinking mostly the "VP / SVP of Engineering" type role, and to a lesser degree, one hop down, the "Senior Director" folks, who seemed to be subject to the same phenomenon but on a slightly slower cycle.
Briefly, Twitter was a useful alternative to promote blog posts (the set of people you follow on Twitter not necessarily being that different than who you'd subscribe to via RSS), but then the blog hosting platforms themselves seemed to age into irrelevance while things like Medium and Substack appeared (neither judging nor endorsing them) while Twitter degraded.
I suppose you're right about Twitter to some degree, though anything that could fit in 140 characters probably belonged better there anyway.
That, or YAML, then a tool to template and generate the YAML, and then a stack of tools wrapped around that, ad infinitum.
A little learning is the cost of not having to write the thing yourself. On the other hand, hell is the non-composable tower of babel that is computing. Total employment by exponentially compounding incidental complexity.
Also, although the above is probably not the best case scenario comparison on the software side (MAME on an underpowered laptop), having written an emulator myself (not necessarily a great one), and particularly going through a convenient portability layer like SDL, there's just a lot of code between you and the hardware, which itself isn't representative of what you're emulating - for instance, sound and video are running at different clock rates and will drift apart, whereas on real hardware there's a single oscillator driving everything, so you have to jump through hoops to adapt the sound to the video rate, and latency creeps in.
Speaking of those machines, I'd love to see someone deeply reverse engineer the pseudo-voxel/fractal landscape engine that Lucasfilm Games invented for Rescue on Fractalus, Koronis Rift, etc. It still seems completely magical that they could pull that off on a machine with those specs.
Starting from zero, you might start at a high level and work your way down. Do a simple polygon flight engine using OpenGL and your favorite high level language of choice. Then write your own polygon rasterizer that you can overlay versus the OpenGL rendering as a reference. Then maybe rework it in pseudo 8-bit code (C constrained to only unsigned char variables, or similar), which should translate directly to assembly language on the target of choice. On a real 8-bit machine, unless you want low single digit frame rates, you probably have to pull a lot of dirty tricks. Maybe a 16-bit platform would be a better choice. This is speculative - I learned 3D (to a novice degree..) on a 486 PC under 16-bit DOS using C and assembly for inner loops (bitblts, texture mapping).
There's something about the aesthetic of late 80s PC flight sims (F-19 Stealth Fighter, LHX Attack Chopper, etc.) and their flat shaded polygon graphics that feels in vogue right now. Check out Thunder Helix on Steam.
Anyway there's definitely a magical feeling writing graphics code when you get your first feeling of realistic movement and rotation in 3D space working. Hopefully the ubiquity of ultra-realistic doesn't diminish that sensation too much.