First, your friend is not making a mistake. he is just a more experienced coder. Having a general approach to a problem is one of the toughest and desirable traits for a CS person. My experience tells me that code duplication is the utter-evil, unfortunately employed by many novices.
Second, I wasn't speaking about OOP, nor pointers. I am speaking about functional programing and being able to point/reference a function. Dare you to read carefully. Ultima online has a strong object relations underneath, so being able to OOP would be a definite plus, but I wasn't proposing it, so don't mention it.
Third, the name "eScript" tells me nothing, but it would be safe to assume that eScript is an interpreted language. (What shall a name "Python" suggest then?! A bird eating abomination?)
And last, unless you are writing a "Hello, world" script, having loops is inevitable with only a small fraction could be averted with "value in list" statement.
A note to a note: I am not using eScript for a "real-world" programing (whatever that could mean), instead I use it to develop a real-world shard and it would benefit from having functional programming as it makes the development more robust.
PS: I guess thats my limitation, but I never heard of "gluing" programing languages.
You're wrong for so many reasons.
About my friend. He's making a mistake. He's not trying to capture common patterns into functions. He's trying to make something simple into something complicated by thinking he's capturing common patterns into functions. In many cases, he's "seeing" problems that are not there -- for some reason he can make everything complicated. Which is pretty much what you seem to be doing. This happens because you never programmed anything relevant in eScript or because you're just doing it plain wrong (he was doing it plain wrong -- he had stuff like nested nested nested loops).
Before I started my shard, I already knew how to do it. I had the code in my mind. It's just a matter of writing it, which is what I'm doing. I'm not using any packaged (I'm with POL 099 and basic setup). And, so far, never had any need for functional programming, pointers, etc. Some of the stuff, very few of it, I considered to be time consuming, but most of that is gone just by reading more of the reference (the more I know the modules, the smaller my codes get).
About code duplication, I have none. Most computational patterns are already captured into the module functions. You'll need to create some for your own, but no need for any special tool here.
You asked for pointers to function. eScript is obviously not functional, having pointers to functions won't change a thing. Maybe you have no clue what functional programming is. I know you didn't ask for OOP, but you mentioned it:
I understand that adding the OOP to eScript would probably too much work. I wonder if its possible to add function pointers/references though. That would simplify things a lot and allow for a very flexible systems to be created. I mean its already almost there, there are method_scripts et cetera.
This that you said made me think "He wants OOP, but thinks it's too much to ask and is asking something else instead.", which is not a long shot.
About eScript being interpreted. ECOMPILE compiles .src files containing eScript files into .ecl files, which are something POL can understand. eScript isn't interpreted directly. Python is the name of a snake, not a name that means a piece of code that is often used to be small programs, which is what "script" can mean in many contexts.
About loops. You'd be surprised how often you can avoid them. After reading some stuff CWO and Turley wrote on performance and runaway scripts, I started to pay more attention to loops, and started using more of the modules functions to loop for me, which boosts pefromance. I cut a bunch of loops from my code.
By the way, a programming language for gluing is a programming language designed to put pieces together, normally created by other tools:
http://en.wikipedia.org/wiki/Glue_language -- shellscript is a very famous glue language. It's not a paradigm or anything... it's just one characteristic of the language.
If you really wanted functional programming, you'd ask for better support for recursivity (not pointers to functions), but you didn't, which means that you either is totally clueless on the topic, or that you really didn't do nothing relevant in eScript.
Functional programming is just programming with no side effects. Stuff like map, filter, fold, ..., mechanisms like continuations, or functions as first class objects, or macros are just stuff that help with functional programming -- not all functional programming languages have all this stuff.
Many books on science, in general (including ones on computer science, or even programming), say "Making things big and complex is easy, and anyone can do it, but making them small and simple is the hard thing." -- I bet you thought about adding new features to eScript faster than trying to solve your problems with simplicity, which is probably possible for most problems, with just eScript.
Please ignore the many spelling mistakes. I'm about to sleep.
Please, also, don't be upset. I'm annoying, but I'm not trying to get you angry. Maybe I am, but not doing it intentionally.