Saturday, May 06, 2006

Powershell : more than just a shell

Microsoft has been working for some time now on a shell named Powershell (previously called Monad), which brings the tremendous power of dotnet at your fingertips. A technical presentation is here, download is here It all look like a shell you'd know like a DOS command prompt or for those of you who used unix like a bash or korn shell. But this usual seamingly innocuous tool's mission is actually to connect you, the user, with an easy acces to all those structures defined in your computer : COM object written by some painful C++ programmers, small admin script written by a colleague, VB type written by your intern yesterday. All those elements have a vocation to be accessible through a uniform way from monad, who lives in between those elements and the user, and make it easy for a simple element to be available for consumption. Monad contribution on bringing a programmed elements ready to industrial strength use on 3 aspects User interaction
  • it automatically makes sure the necessary arguments are filled, and take necessary corrective steps. the original programmed object does not have to do anything to inherit this behaviour
  • it automatically provides parsing functionnality for the arguments provided, and again the programmed component needs not to know about any of this stuff.
  • it handles error in a clean way, and reports them as such without breaking eventual function composition
  • it will load the necessary dll and other components on the fly
  • it provides with standard output formatting, be it text or other component (excel graphics)
  • you can group object's properties through sets, which corresponds to one particular point of view of an object (mind you I dont care most of the time of the pid of a process....)
A rich native environment
  • your objects will natively have a common space to live and cohabitate in..
  • and they can alos collaborate through piping object from one command to another, composing functions easily
An extendable type system
  • The ability to dynamically enrich the type system of an object on the fly
This last functionnality is for me the best thing, as it blurs the distinction between data and metadata, which is where the crux of programming is. As a forecasted development is the GUIfication of these commands, which should be a piece of cake now that the mmode of interactions of object with one another is frozen and that the behaviour of each object with respect to it is explicit The bigger picture Now apart from the obvious much desired cool functionalities I described, the REAL stuff provided here is all about 2 things :
  1. object pipelines
  2. runtime typesystem extension
Those are the two properties you can create a goldmine on. Look : what if we enable different users to interact with each other and exchange objects...... ? Oh, and by the way those objects exchanged, mind you, it's not some guy who decides what they are every 5year releases. Na, you just inherit those, and then you can tweak them at will.. One more question : What would you think if we replaced the Internet by the ObjectNet.. ?


Post a Comment

<< Home