Several papers I have read as well as dicussions on usenet have implied that Self is a very reflective language. I would say that this is a wrong impression: Self is roughly equivalent to Smalltalk, with mirrors merely making up for the lack of classes.
So the question is: Do we need more reflection in Self?
My answer: no. ( !?!?! )
1) Self runs on top of Unix and X. All of the system services can be accessed through the system call or by adding primitives.
2) Parts of the application can be written in other languages and interface with the Self part through a rather thick "firewall".
3) The set of "knobs" you can mess around with in the VM is well thought out and will allow as much access to the implementation as most applications will ever need.
4) The thread implementation is very flexible and allows the scheduler to really be written in Self ( having done some "real time" in Smalltalk V/286 lately, I find this very important ).
So... why am I trying to add more reflection to Self in my Merlin Project? Because 1) it runs on bare hardware ( it *is* the OS ), 2) primitives written in other languages have transparent access to the implementation, 3) I want to get rid of the VM altogether and 4) I want to go beyond threads to multiprocessing with object migration and other weird stuff.
Brook Conner firstname.lastname@example.org wrote:
email@example.com (Mulet Philippe 40448387) wrote:
Mirrors are not causally connected to the structures they represent.
Hmm? How do you mean? What reflective stuff do you want to do that can't be done with mirrors? This isn't a challenge: I'm trying to figure out how much extra junk you have to add to something like the base Self model to get full reflection. (Part of my research is in stripping down existing object models until you get something that you can use to build exciting new object models. TR available any day now).
And I am trying to find out how much junk I can throw out to get reflection in Self :-)