Microsoft’s Monad Misses the Mark

Monad, what have you become? I found the following on Arul Kumaravel’s blog:

CMD.EXE

Monad Equivalent

cd

set-location

cd

cd c:\temp

set-location c:\temp

cls

clear-host

cls

copy con

function copycon {

[system.console]::in.readtoend()

}

copy con foo.txt

copycon | set-content foo.txt

dir

get-childitem

dir

dir /ad

get-childitem | where { $_.MshIsContainer }

dir | where { $_.MshIsContainer }

dir /od

get-childitem | sort-object LastWriteTime

dir | sort LastWriteTime

dir /o-d

get-childitem | sort-object LastWriteTime -desc

dir | sort LastWriteTime -desc

pushd

push-location

popd

pop-location

start .

invoke-item .

ii .

When I saw this, I actually looked to make sure it wasn’t an April Fool’s joke. I’ve been hearing about Monad for some time, it was yet another promised feature that Vista won’t have. It sounded impressive, for once Microsoft was going to create a command line interface, and they were going to clean up the cruft that has accumulated in the past 40 years of computing.

It was/is supposed to be completely object oriented, a cut above the poor UNIX text interfaces. I was just impressed they had finally listened to their customers pleading and begging for a way to script and use the command line to admin Windows boxes.

Then I run across an idiot on Slashdot where someone was using this example to brag about Monad! Most of the time when people type LOL, they aren’t really laughing out loud, but this time, my lungs hurt from laughing so hard. Have these people actually used a command line interface? The reason the commands are so small in UNIX is that they are faster to type!

This syntax in Monad looks like it was dreamt up by someone that saw a UNIX shell a couple times and said, “wow, these commands don’t make much sense, how would a new user know what cd or ls or ps means?”

If this is the state of Monad, I can’t imagine ever using it. The whole point of a command line interface is that I can ssh to a machine over any kind of network and quickly type and do useful work. I was ready to give them a shot, but if they’ve missed this most basic point, I don’t see how it would be useful. Probably not a surprise that Microsoft can’t get a text interface right, but I was hoping.

I leave with a quote:

[ebnf] is monad pronounced like gonad?


  • MonadownsYou
    You guys are idiots. There are shorter ways to type that stuff in. That is just an example of what you can do.

    It's nice that you can post FUD without doing research. Doh!
  • jachymko
    heard of aliases? there are many of them out-of-the-box :) btw, i'd like to see how would the following command look like in a good ol' text-based shell

    D:\desktop> get-alias | sort @{ E={$_.Name.Length}; Asc=$true; } | select -First 25 Name, Definition

    Name Definition
    ---- ----------
    ? Where-Object
    % ForEach-Object
    r Invoke-History
    h Get-History
    ri Remove-Item
    oh Out-Host
    nv New-Variable
    gu Get-Unique
    rp Remove-ItemProperty
    rv Remove-Variable
    mp Move-ItemProperty
    mi Move-Item
    rd Remove-Item
    gv Get-Variable
    ni New-Item
    ii Invoke-Item
    cp Copy-Item
    cd Set-Location
    ps Get-Process
    lp Out-Printer
    ls Get-ChildItem
    mv Move-Item
    sl Set-Location
    si Set-Item
    sc Set-Content
  • Seems that they actually used VMS as an inspiration. I suppose I should have expected that from Dave Cutler, but egads!

    "MSFT Jeffrey Snover (Expert):
    Q: I've heard Monad has VMS roots... will we have a utility or functionality similar to VERB to create our own verb commands and parameters?

    A: We are very influenced by the VMS (and AS400) environments. That said, we don't have the same set of utilities. Do define you own command, you write a .NET class derived from our base class and tag it with a NOUN and VERB. The properties of that class become PARAMETERS."

    Microsoft Chat
blog comments powered by Disqus