Microsoft's Monad Misses the Mark

windows microsoft

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

CMD.EXEMonad Equivalent
cdset-location or cd
cd c:\tempset-location c:\temp
clsclear-host or cls
copy confunction copycon { [system.console]::in.readtoend() }
copy con foo.txtcopycon | set-content foo.txt
dirget-childitem or dir
dir /adget-childitem | where { $_.MshIsContainer }
dir /odget-childitem | sort-object LastWriteTime
dir /o-dget-childitem | sort-object LastWriteTime -desc
pushdpush-location
popdpop-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

cyber_rigger

Monad looks worse than VMS.

http://www.physnet.uni-hamb...

mmichie

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

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
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!

Discussion