# The Problem

Windows has simple GUI administrative tools for basic users (Control Panel, MMC, etc). Windows also has a rich set of languages, APIs and object models for advanced systems programmers ([C](http://bit.ly/1SmIDVh), [C++](http://bit.ly/1HmcYe5), [C#](http://bit.ly/1EngdQ6), [WMI](http://bit.ly/1ekpnrY), [Win32](http://bit.ly/1IORfB2), .Net, etc). What is missing is the vital middle – administrator-oriented composable tools to type commands and automate management. The vital middle is typically addressed by scripting languages.

Our current scripting solutions ([WSH](http://bit.ly/1ekpvra), [VB](http://bit.ly/1Q0VwjT)) focus on the high end of the scripting world which manage the platform using very low level abstractions such as complex object models, schema, and APIs. This is effectively systems programming and misses much of the admin community. Admin scripting flows from command line administration, it must be small, simple, incremental, and deal with very high levels of abstraction.

[John Ousterhout](http://web.stanford.edu/~ouster/cgi-bin/home.php) described the distinction between scripting and systems programming well in his paper [Scripting: Higher Level Programming for the 21st Century](http://web.stanford.edu/~ouster/cgi-bin/papers/scripting.pdf).

![Degree of Typing](/files/-LG_dxlEgI5NaDmuZmmE)

[Ousterhout](http://web.stanford.edu/~ouster/cgi-bin/home.php) posits that scripting allows for “gluing” applications together – a higher level abstraction than system programming – enabling (even) more rapid application development than today’s systems programming languages. The fundamental argument is that we should continue to ride [Moore’s Law](http://www.mooreslaw.org) to move development to higher levels of abstraction via script. To enable administration automation in the mainstream, administrators need a comprehensive and scriptable shell and utilities and the [administrative GUIs](https://notgartner.wordpress.com/2008/02/23/how-to-host-the-powershell-runtime/) need to be layered on top of this infrastructure. This will enable efficient training of administrators on command line automation, ensure comprehensive administrative capabilities at the command line, and the economies of scale of an admin-composable automation model.

**Notes**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://devops-collective-inc.gitbook.io/the-monad-manifesto-annotated/the-problem.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
