Forgive me if I am not completely clear in my discussion here.
First let me mention that I have 25+ years of programming experience running the gamut of research & development for NASA, consulting for an AI company, and principal architect for a couple of commercial startup companies.
However my experience scripting in LSL is recent - although in terms of conceptual programming there is nothing really suprising about LSL.
The problem. LSL requires one to use multiple scripts for any intersting amount of functionality in an object. I support that for the most part - it encourages modularity.
But the support for communication between modules of a 'system' is weak at best.
It seems that scripts must rely on communication mechanisms that were designed for avatars to talk to each other. There are limits - instant messages can't take more than 1024 bytes and delay for 2 seconds. Various chats (say, whisper) are limited to 255 bytes. llDialog is limited to 512 bytes. All of these use the public channel system that any object can listen in on.
Then we have messages between scripts in the same object using the messageLinked functionality. That's the best so far but still limited. Only strings can be passed, thus any data structure you may have (uh... list) must be converted. Doing anything with real data these days easily runs you out of memory (in a script). Having to then coerce your data structure into a string to hand off to another script is challenging at best (while trying to stay within your memory limit).
To sum up so far: communication between scripts within an object is OK but not great.
Next we have the reality of integration between VL (virtual world - the web) and SL. Here we have a couple of choices the most useful recently introduced: httpRequest. But. The reponse here is limited to 2k. Now in some ways that makes sense due to the limitations on the script memory. But when trying to do any integration of interest data becomes the chokepoint. 2k just doesn't do it. So the next option is to build a small protocol to retrieve more data from the web server until you have the whole message. But wait! You are only allowed 20 requests per 100 second period. I'm getting the feeling that SL really doesn't want you to do this.
The message to me regarding integation with external data sources is that yes you can play but only at a toy level.
Finally there is the concept of loose coupling as applied to SL. In this scenario I want to have multiple objects loosely coupled in their scripts. This means that I need to communicate between the objects (without linking them together into one object - that would not be loosely coupled). However this communication is limited to the various public channel approaches and the various limitations therein. It's a real issue.
For example I have an object that can be 'extended' by substituting a script in it that essentially sends data out to any external object that listens to that data in its expected protocol format. That allows me to leverage the creativity of third parties to build extensions into my 'system'. But it all falls apart when my data starts getting truncated through the messaging systems (and delayed).
Once one starts building a message passing protocol between objects you now start running into your memory limitations again (too many copies of data required while marshalling and demarshalling - a nice pass by reference between objects would be something indeed).
In short, LSL is not very supportive of anything but very small software architectures.
I believe that is a problem that needs to be addressed in order to support the long term vision of SL. All the parts must be able to grow. SL will benefit from the VL and RL. And vice versa. But that implies more data.
I think some attention needs to be giving to scripting to support more substantial software systems. I've already put together a set of scripts for integrating with our VL software system and have had to work around these limitations everywhere I turned. I have now gotten to the point that I must tell the developers (so to speak) on the VL side of our system that they have to build 'small' for it to work in SL. These scripts, this integration, has already been described as 'awesome' by the few that have seen it (and, no, I don't do the demoing... heck I'm a developer/architect - not a people person!). And I consider what I've done here relatively trivial. Only hard due to the various and seemingly artificial limits.
Anyway. I don't expect much to result from this. I just thought I'd throw my opinion out there for what it is worth. If any want to discuss further feel free.
Cheers,
Tsushi Fluffball (and if that name doesn't garner respect... )