Verb-Noun vs Noun-Verb

Verb-Noun vs Noun-Verb

Rate This
  • Comments 2

Kurt asked the question "why not Noun-Verb vs Verb-Noun" in his post:

There are lots of answers to this some better than others.  Let me rattle off a couple of them:

  1. VMS DCL/AS400.  Issac Newton once said that if he could see farther, it was because he was standing on the shoulders of giants.  So it is with Monad.  People like to point out the similarities between Monad and various UNIX shells/utilities and scripting languages.  Absolutely true - many of us have deep UNIX backgrounds and  have a lot of respect for that body of work.  That said, Monad is influenced as much by VMS/DCL and AS400/CL as it is UNIX.  These are wonderful environments built with the clear vision that they would be used by people running production shops where operations and management really mattered.  These environments are strict about naming guidelines, common syntax, environmental setup, operational characteristics, etc etc. 

    Both of these environments are hard core about naming and leverage a Verb-Noun pattern.  Apollo's Domain/OS and AIX also used Verb-Noun models as well.  BTW - you can see the influences of the VMS & AS400 focus on production qualities in:  having a single common command line parser,  -VERBOSE, -CONFIRM, -ERRORACTION (actually our entire near-manical focus on error handling comes from a focus on production readiness), and others.

  2. Programmer vs Admin focus.  Kurt points out that a Noun-Verb schema would mirror the OO programming world.  That is another reason we are Verb-Noun.  There are 2 aspects to this:
    1. Admins are admins with needs similar but distinctly different from those of programmers.  We already have world-class languages and tools for programmers, what we need improvement on is Admin languages and tools.  I did not want teams thinking that they could just expose their .NET objects and think that they were meeting the needs of admins.  These teams need to think about the needs of admins and provide consistent, high level, task-oriented, set-oriented operations with a strong focus on error handling and operational control.  You can easily do that with a thin layer on top of .NET objects but you can't get that by just exposing .NET objects.  So being Verb-Noun helps drive home this point.
    2. Take a look at the inconsistency of Method names on .net objects.  It is Kill() for a process object but Stop() on a serviceController object.  Putting the noun first puts people in the mindset that their domain is the high order bit and they pick methodnames optimized for their domain.  Putting the Verb first makes it clear that the User Experience is the high order bit and the domain specifics are the low order bit.  We want an very high level of verb reuse to provide a consistent, predictable user-experience. 

Jeffrey P. Snover
Monad Architect

[Edit: Monad has now been renamed to Windows PowerShell. This script or discussion may require slight adjustments before it applies directly to newer builds.]




Leave a Comment
  • Please add 2 and 7 and type the answer here:
  • Post
  • Hi!

    I'm currently discovering the PowerShell and that post is the only way I found to ask my question.

    PowerShell cmdlets are based on a verb-noun standard synthax.

    But... how can you explain that we find a cmdlet called "where-object"?

    Wouldn't be a better choice to rename that cmdlet "select-object".

    Here is why:
    - In my opinion, the "where" is not a verb.

    - I think you should not create a shell based on a language (SQL), but on concepts. In SQL, doing a "Where" is a ... selection.

    Sure, this is certainly a detail, but I'm interested in your opinion.
  • Wrong wrong wrong - Verb-Noun is a great way *not* to get things done. The problem: you know you need to something with files. So you start by looking for "File" and then realize that - as M$ did with W32 API - Verb-Noun defeats your purpose.

    I don't know how angry I got back in 1992 when I wanted to do GDI work and I had to wade through a mountain of "Get" calls because some bozo decided that Verb-Noun could be at all defended.

    Noun-Verb is not programmer-centric, it's human-centric. It's the same concept as an index in any book. When I want to lookup functions on the registry I want to find all the registry functions grouped together and not spread out all over the place.

Page 1 of 1 (2 items)