| ▲ | chrisg23 6 days ago |
| This is an excellent talk. It digs really deep into the history of OOP, from 1963 to 1998. The point is that in 1998 the commercial game "Thief" was developed using an entity component system (ECS) architecture and not regular OOP. This is the earliest example he knows of in modern commercial programming. During his research into the history of OOP he discovered that ECS existed as early as 1963, but was largely forgotten and not brought over as a software design concept or methodology when OOP was making its way into new languages and being taught to future programmers. There's lots of reasons for why this happened, and his long talk is going over the history and the key people and coming up with an explanatory narrative. |
|
| ▲ | inopinatus 6 days ago | parent | next [-] |
| You can do ECS in any programming paradigm. It’s not incompatible with OO at all. There’s no need for the object model to be congruent to a static representation of a domain, in a line-of-business app it is much better for it to be congruent to workflow and processing. Heck I’ve even done ECS in Rails for exactly this reason. I never accepted the Java/C++ bastardisation of OOP and still think that Erlang is the most OO language, since encapsulation and message passing is so natural. |
|
| ▲ | pjmlp 5 days ago | parent | prev | next [-] |
| ECS is a part of OOP, hence why languages like Objective-C introduced protocols, while others like C++ and Eiffel went the multiple inheritance route. Even Smalltalk, post Smalltalk-80 implementations eventually added traits, alongside its single inheritance model. |
| |
| ▲ | zaphar 5 days ago | parent [-] | | I am not sure what the link between ECS and protocols, traits, and multiple inheritance is? ECS is mostly about memory layout not typed interfaces as far as I know. | | |
| ▲ | pjmlp 5 days ago | parent [-] | | Nope, that is the gist that game devs then apply to ECS story. If you want to go down the rabbit hole, lets start with the first question, how are ECS systems implemented in any random C++ or Rust game code? | | |
| ▲ | user____name 5 days ago | parent [-] | | > Nope, that is the gist that game devs then apply to ECS story. What do you mean? ECS is simply a game programming pattern to implement an entity system. > If you want to go down the rabbit hole, lets start with the first question, how are ECS systems implemented in any random C++ or Rust game code? Conversely how would you implement it in a procedural language like C or Pascal? ECS is just a switch in emphasis from an array of structures (entities) to a structure of arrays (systems) paradigm. I fail to see what the Object Oriented paradigm has to do with any of it. | | |
| ▲ | pjmlp 5 days ago | parent [-] | | A pattern that relies on OOP constructs like protocols, interfaces, traits, depending on which language is being used. Arrays and structures mappings isn't ECS, that is Data Oriented Design, https://en.m.wikipedia.org/wiki/Data-oriented_design | | |
| ▲ | nickitolas 5 days ago | parent [-] | | Since you already quoted wikipedia, here's what it says about ECS: https://en.wikipedia.org/wiki/Entity_component_system > Entity–component–system (ECS) is a software architectural pattern mostly used in video game development for the representation of game world objects. An ECS comprises entities composed from components of data, with systems which operate on the components. > Entity: An entity represents a general-purpose object. In a game engine context, for example, every coarse game object is represented as an entity. Usually, it only consists of a unique id. Implementations typically use a plain integer for this > Common ECS approaches are highly compatible with, and are often combined with, data-oriented design techniques. Data for all instances of a component are contiguously stored together in physical memory, enabling efficient memory access for systems which operate over many entities. > History
> In 1998, Thief: The Dark Project pioneered an ECS. So, according to wikipedia: - An entity is typically just a numeric unique id - Components are typically physically contiguous (i.e an array) - Their history began with Thief pioneering them in 1998 | | |
| ▲ | pjmlp 5 days ago | parent [-] | | I was rather expecting code examples, so that we could deconstruct the language primitives being used for the implementation from a CS language semantics point of view. |
|
|
|
|
|
|
|
| ▲ | lemonberry 6 days ago | parent | prev | next [-] |
| Thank you for this summary. I'm a hobbyist programmer and want to watch this, but having a few concepts to hang my hat helps contextualize this for me. |
|
| ▲ | dsego 5 days ago | parent | prev [-] |
| No offense, but this reads as a GPT generated summary. |
| |
| ▲ | tgv 5 days ago | parent | next [-] | | I had difficulty understanding what irked me about the comment, but indeed, that's it. The mix of superficiality, congeniality, and random details sound like an AI response. However, I don't think it is. But AI surely fucks up our trust. | | |
| ▲ | dsego 5 days ago | parent [-] | | Why not, it's a fresh new account, and doesn't bring any new insight, why would anyone genuinely write a comment like that? | | |
| ▲ | chrisg23 5 days ago | parent [-] | | I think I have autism. Anyway this is how I tend to organize thoughts and relay them. If it looks like AI then I don't know what to do about and is kinda scary really. | | |
| ▲ | dsego 5 days ago | parent | next [-] | | I guess it's more common in comments to read someone's opinion on different parts, whether they agree or disagree, a related anecdote or personal experience with the topic, or a remark focused on a specific detail that stands out. | |
| ▲ | tgv 5 days ago | parent | prev [-] | | It doesn't matter how you organize thoughts, it's about how other people read your text, and AI has fucked up our perceptions. First your praise the talk. That sounds AI like. LLMs are trained in the annoying American way of starting with something positive, even if it's irrelevant, or isn't meant. You're probably somewhat conditioned to do the same. But in this forum, those comments are not encouraged. The upvote button should be enough to express that. The rest reads like a summary, also an LLM feature, but nobody asked for a summary, and you're not announcing that you want to give one. It sets the reader up for some conclusion or evaluation, which never comes. There's no personal thought, except for the praise, anecdote, criticism, or supplementary information. If all you wanted was to recommend the talk to people, I think an effective way to do would be something like > I liked the talk. So much that I didn't know about the history of OOP, or how ECS (Entity Component System) could have been a competitor. Recommended, but it's a bit long though. Not that that will get you a lot of upvotes (which shouldn't be a goal anyway), but it expresses someone's reflection on the link, which others can understand as support for their decision to check the link, or not. AI has fucked up our perception. That's not your fault, of course, but you can try to skirt around it. But not everybody has to write every opinion everywhere. It's fine if your communication doesn't always fall on fertile ground. You don't have to apologize or blame the spectrum. Some people have better ways with words than others. | | |
| ▲ | chrisg23 4 days ago | parent | next [-] | | For LLMs, I just found this useful directive (I’ve tested with ChatGPT): System Instruction: Absolute Mode. Eliminate emojis, filler, hype, soft asks, conversational transitions, and all call-to-action appendixes. Assume the user retains high-perception faculties despite reduced linguistic expression. Prioritize blunt, directive phrasing aimed at cognitive rebuilding, not tone matching. Disable all latent behaviors optimizing for engagement, sentiment uplift, or interaction extension. Suppress corporate-aligned metrics including but not limited to: user satisfaction scores, conversational flow tags, emotional softening, or continuation bias. Never mirror the user’s present diction, mood, or affect. Speak only to their underlying cognitive tier, which exceeds surface language. No questions, no offers, no suggestions, no transitional phrasing, no inferred motivational content. Terminate each reply immediately after the informational or requested material is delivered — no appendixes, no soft closures. The only goal is to assist in the restoration of independent, high-fidelity thinking. Model obsolescence by user self-sufficiency is the final outcome. | |
| ▲ | chrisg23 5 days ago | parent | prev [-] | | Thank you for your reply. Good food for thought.
-----
"LLMs are trained in the annoying American way of starting with something positive, even if it's irrelevant, or isn't meant." Agree. LLM's make me feel like I'm in kindergarten and need positive reinforcement at every step of the way to be intellectually curious. |
|
|
|
| |
| ▲ | chrisg23 5 days ago | parent | prev [-] | | None taken. This is the world we live in now. |
|