Comments on: Modules: no global words
R3.0 has no global context. Each module provides its own "global context".
This change is important for these reasons:
- It makes modules truly independent namespaces. For example, changing the value of a system word does not affect the value of that word in other modules. E.g. if you want to set system to none, it's no longer going to crash REBOL.
- It allows special system words and plugin component words to be optimized without the word table limitation that occurs in 2.0. (The 2.0 limitation comes from C pointers directly referencing important system values, so that context can never be relocated in memory.)
- The system/words object no longer holds all words. Instead, it holds the words that your script module knows about, which does include many system functions/objects, but only those that have been exported to your script.
Note that when you run a script in REBOL, a runtime module is built to serve as the global context for that script.
Note that this change also allows REBOL to be more secure, but at the cost of full system access reflectivity. This changes the way you probe the system to see how it works or to make patches. (You can still do that, but your script requires the necessary security permissions.)
I mentioned this in an earlier article. This is just a reminder under the module thread.
Is it more accurate or no to state:
The system/words object will hold all words REBOL parses from any script (module), including all words exported to the script at the start of script execution.
Expression like "...module knows about" is highly confusing, since it's the programmer who knows what words he writes in script, not some thing that is inanimate, non-human.
Anthromorphizing is a horrible communication technique that gets in the way of proper explanation. Scripts don't know a thing. They're not alive.
I suspect the REBOL insularity -- the pack of indoctrinates -- will rage against this post. They'll wrongly misinterpret this post as some kind of personal assault against you Carl. This is not the case.
A better choice of words will go a long way in clearly presenting your concepts about REBOL 3.0. Anthromorphizing is a major stumbling block.
So the content of system/words will depend on from which module I'm accesing it? Or there will be nothing like system/words? I never reached the words limit, but it's probably good, that there will not be any limit in the future.|
I don't know how much REBOL programming you've done, Pierre, but in my experience I've found that thinking of REBOL as an entity that you command actually makes it easier to understand how REBOL works and to write code that runs with the greatest efficiency. Now of course this entity is nonliving and certainly not human, so it would be quite a stretch to call this anthropomorphisation.
Still, the words we use to refer to the behavior of living entities can be a valuable tool to better understand this process. Humans are not built for programming, so we must use every mental hack we can to be able to handle it. Surely you would not remove such a valuable tool as metaphor from our toolkit?
And why would we interpret your post as an attack? Have you been attacking us elsewhere?
I don't see nothing wrong if I think about my scripts like about living things. Especially if I make for example an IRC BOT, leave it running for about month in more complex context and I'm pretty sure, that the script will know much more better, which words are used. And the changes in R3 will allow us to make much more complex scenarios with more independent BOTs running (alive?) without need to worry about conflicts between them.|
And don't forget that I can have clients connected to a chat server - they are represented as a scripts (ports at this moment, modules in the future?), but they ARE humans in the real life and the state of the used words depends on actions thay do:-)|
Anthromorphizing is the result of socialist indoctrination -- purposeful devaluation of individual human life -- so that persons champion only the group and despise the individual.
Anthromorphizing is not metaphor, Brian. Perhaps you should learn what metaphor is.
Here is a metalist to a bountiful garden of metaphor sites ready for you to harvest:
Intellects stuck between the ages of 10 - 15 (the result of hyper socialist indoctrination) require anthromorphizing.
Carl, et. al, should strive to explain how REBOL works, not how some non-existent phantom, faux a.i. kind of works.
Carl is quick to point out that REBOL is a functional language.
But REBOL is really a virtual machine -- a commands processor that interprets script of expression, which uses a functional language.
Why muck up trying to explain this why childish notion of REBOL "being alive". It's retarded for the retarded.
Pierre: I understand what you are suggesting, and I will try to "anthromorphize" less often. But, certainly, I could use your help... in pointing out unclear areas. We should discuss it more. I am interested in your thoughts.
Also, since we are striving to improve our communication here, be aware that there is a broad range of people on this forum, from young kids to college professors.
I strive to treat each person with respect, regardless of their level of expertise or experience. Otherwise, what happens is that people stop posting, and worse, they stop reading, and eventually, they stop caring.
I really want people to care about REBOL. I want them to read the comments here. After all, I never quite know where the next good idea will come from. It could be from some young kid who doesn't spend enough time picking his words.
All REBOLers are invited here. Let's keep them comfortable participating in the discussion. Thanks.
PS: I will start a thread to address this anthromophizing issue.
For example, I tried to implement Pierre's suggestion regarding error messages, and found it very difficult to avoid the "possessive" format. I experimented with it and found that the possessive format was best at putting the words in order of priority. But, let's discuss this on a new thread, not here.
Oldes: That is a good question (about system/words). If system/words still exists (to be determined), it will hold the global words for that module. However, there would also be a method to explore other modules. The reflective nature of REBOL is important; however, 3.0 also provides new levels of security that collide with reflection in some areas. More info to come.|
Carl, how will we be able to patch code globally?
explicitely to fix, or secure stuff which other modules use?
a network scheme or workgroup secured load and save, for example?
sorry, answer was in next blog article.
Ok, if I said that I've had no problems with the words limit, now it's not true, I wanted to use my dialect to compile about 1000 swfs which contains a lot of different word names and I reached the limit after compiling about 300 swf at once. So I have to compile them in parts (restarting Rebol). It's because each word loaded with the dialect to parse is now stored by Rebol in the system/words and it seems that there is no way how to free it at this moment. I hope, it will be fixed with the changes in R3.|
Post a Comment:
You can post a comment here. Keep it on-topic.