4 ms·
Amiga Exec is not object-oriented, at least not if you think Smalltalk is OO. There is no dynamic dispatching involved when you work with structures like Messag
by tralarpa 6y ago
Amiga Exec is not object-oriented, at least not if you think Smalltalk is OO. There is no dynamic dispatching involved when you work with structures like Message or MsgPort.
That said, there are places where dynamic dispatching is used in Amiga Exec. For example, communication with device drivers happens with commands sent in messages.
Anyway, the AmigaOS was absolutely remarkable. An operating system for home computers with concepts such as preemptive scheduling, dynamically loadable libraries, loadable device drivers with a unified API based on message passing, and loadable filesystems (called "handlers"). Ironically, the least mature parts of the OS where those parts responsible for graphics and UI.
- derriz 6y agoIt's been a while and I was just a dabbler at the time - but from what I recall, Exec at least has some object-oriented features or at least influences? This is all hazy but wasn't there some sort of base "node" struct which had various extensions depending on the entity - at least I recall lists of such nodes where some operations could would with "base nodes" while others required specific "sub-type" nodes? At least I remember finding the model very confusing initially - a lot of the technical documentation seemed quite abstract to me as a C novice at the time.
- flohofwoe 6y agoMost Exec data structures were organized as what's called today "intrusive doubly linked lists" where the list node struct is placed directly in front of the actual "payload data" in the same C struct. One could call that "polymorphism" and "inheritance", but IMHO it's a bit of a stretch.
- blackrock 6y agoIs Dynamic Dispatching supposed to be the holy grail of OOP per Smalltalk’s ideal design of message passing? An example of Dynamic Dispatch, is say you create a Class object of a person. And you give that object the method ‘jump’. Then, you create say 30 persons, one for each student in your classroom. Then, you collect them all into a list. And you iterate through that list, and tell each person to jump. So in Python, it might be something like: John = Person() Jane = Person() # then create 30 of them students student_list = [] student_list.extend([John, Jane, ...]) # Then make them all jump. for kid in student_list: kid.jump() So, per my understanding this is what Dynamic Dispatch is. It allows you to reassign a variable to an existing set of objects, and to massively activate all of them. Such that, you’re sending an execute command to all of the associated objects. Was this the genius innovation to OOP, as opposed to procedural languages before it? And can something like this be simulated in other imperative or functional type of programming languages?
- andrekandre 6y ago> And can something like this be simulated in other imperative or functional type of programming languages? im pretty sure it can be, but without it being built in, it probably would be a chore > Was this the genius innovation to OOP, as opposed to procedural languages before it? i think so (if you consider smallltalk to be oop, as opposed to c++ or simula)... afaik, the other goal that would be enabled by message-passing, was to enable something akin to the actor system... but smalltalk largely stalled after st80....