Mustrum_Ridcully
Legend
Subroutine? I thought they used this term only in Startrek these days.In object oriented programming a subroutine is treated as an object that can be passed around by the code. So for example you might pass the subroutine for damage the name of a weapon and it will return the damage done by that weapon. So you send the [W] object [longsword] and it sends you back [1d8].
4e, with its use of keywords(push, slide), subroutine call like language (IE: 3[W] + Str damage), and arbitrary units (squares) reads more like code than normal english. One of my first thoughts on reading the rules book was that you could just feed the whole powers section to a decent parser and you wouldn't even have to retype it to have programmed it.
My object oriented programming language have stuff like methods, objects, classes, interfaces, properties, fields, attributes, indexes, arrays, generics and what-not, but no subroutines.

Subroutine Passing is actually not exactly a primary technique in most OO languages, and it is more something done in functional languages. (though with some environments and programming languages, the definitions begin to blur.)
What is passed around are objects that have methods (or subroutines/functions in some languages).
An OO approach would be to have a class called "Power". Keywords might describe interfaces it implements, like:
Code:
public class Tide of Iron implements Power, IMartial, IWeapon
{
public void Resolve(IWeapon weapon, ICharacter usingChar, ICreature target)
{
int attack = Dice.Roll(20) + weapon.Attack + usingChar.Strength;
if (attack >= target.AC)
{
int damage = weapon.dice.roll() + char.Strength().
target.InflictDamage(damage, DamageType.Untyped);
Location x = Prompt.AskPushDirection(Localization.("Where do you
want the target to move?", target, myPushConstraints),
target.PushTo(x);
}
}
}