I feel like there's a general feeling that:
> It is just passing dependencys as arguments.
(And: oh no, magic!)
That's often what consumers see, sure.
But it's also managed repositories of objects and factories. It's also injection logic, with scope and conditional logic. It's also runtime assembleable interception layers for objects. It's also awareness methods to observe and track your managed repositories & objects.
There's simple things we see. But zooming out from the trees I think the forest here is something more than the sun of these pieces. Programs are mostly here to juggle entities of various sorts. Mostly we programmers write code that imperatively creates & modifier objects & their references...
And Dependency Injection and Inversion of Control is having explicit tooling & stable patterns for this construction. Having actual places & tools for managing runtime objects.
I think it's so damned cool. It's so enticing to me, of being expanded beyond a programmer tool. It could & should pioneer waves of general systems research! This tech should offer external hooks beyond the app, be integrated into repls & hosting apis that let us talk to the computing objects of our world.
Invert the control! I cannot wait for us to stop doing all coding bottom up, instantiating and passing everything from the bottom.up, and starting to create some top down tools that manage the entities of the runtime!