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 or cd |
cd c:\temp | set-location c:\temp |
cls | clear-host or cls |
copy con | function copycon { [system.console]::in.readtoend() } |
copy con foo.txt | copycon | set-content foo.txt |
dir | get-childitem or dir |
dir /ad | get-childitem | where { $_.MshIsContainer } |
dir /od | get-childitem | sort-object LastWriteTime |
dir /o-d | get-childitem | sort-object LastWriteTime -desc |
pushd | push-location |
popd | pop-location |
start . | invoke-item . or 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 from [ebnf]: “Is monad pronounced like gonad?”
Comments
Monad looks worse than VMS.
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."
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-ContentYou 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!